public static boolean processNoContigAceFiles(CharacterData data, MesquiteModule ownerModule) { DNAData editedData = ChromaseqUtil.getEditedData(data); if (editedData == null) return false; boolean changed = false; MesquiteFile file = data.getProject().getHomeFile(); int count = 0; int originalChars = editedData.getNumChars(); for (int it = 0; it < editedData.getNumTaxa(); it++) if (ChromaseqUtil.reprocessContig(editedData, it)) { AceDirectoryProcessor aceDirProcessor = new AceDirectoryProcessor(); aceDirProcessor.reprocessAceFileDirectory(file, ownerModule, editedData, it); count++; } if (count > 0) { editedData.getTaxa().notifyListeners(ownerModule, new Notification(ownerModule.PARTS_ADDED)); MesquiteMessage.discreetNotifyUser( "Some of the contigs have been reprocessed; this will be lost permanently unless you resave the file."); changed = true; } if (originalChars < editedData.getNumChars()) editedData.notifyListeners(ownerModule, new Notification(ownerModule.PARTS_ADDED)); else if (originalChars > editedData.getNumChars()) editedData.notifyListeners(ownerModule, new Notification(ownerModule.PARTS_DELETED)); ChromaseqUtil.removeAssociatedObjects(editedData, ChromaseqUtil.reprocessContigRef); return changed; }
public static boolean checkNoContigAceFiles(CharacterData data, MesquiteModule ownerModule) { DNAData editedData = ChromaseqUtil.getEditedData(data); if (editedData == null) return false; int count = 0; boolean resave = false; boolean warn = false; for (int it = 0; it < editedData.getNumTaxa(); it++) if (AceFile.hasAceFilePath(editedData, it)) { if (!AceFile.hasAceFile(ownerModule, editedData, it)) {} AceFile ace = AceFile.getAceFile(ownerModule, editedData, it); if (ace != null) { if (ace.getNumContigs() <= 0 || ace.getContig(0).getNumBases() == 0) { if (!warn && !AlertDialog.query( ownerModule.containerOfModule(), "Reprocess and save file?", "Some of the contigs need to be reprocessed, which will" + " alter the modified .ace files produced by Phrap and Chromaseq. To be compatible with these altered .ace files, the Mesquite file " + "would then need to be re-saved. If instead you choose not to reprocess contigs, they will not be fully editable in Chromaseq.", "Reprocess and Save", "Do not reprocess", -1)) { return false; } else resave = true; warn = true; ChromaseqUtil.setReprocessContig(editedData, it); } } count++; } return resave; }
/*.................................................................................................................*/ public void processAceFileWithoutContig( DNAData data, String processedAceFilePath, AceFile ace, String geneName, MesquiteString fullName, int it, MesquiteString voucherCode) { DNAData editedData = ChromaseqUtil.getEditedData(data); DNAData originalData = ChromaseqUtil.getOriginalData(data); Taxa taxa = data.getTaxa(); ace.processFailedContig(polyThreshold); ace.setNameTranslation(fileNameTranslation); ace.renameContigs(fullName.toString(), addFragName, geneName); ace.setLowQualityToLowerCase(qualThresholdForLowerCase); ace.writeToPropertiesFile(contigPropertiesFileBuffer, fullName.toString()); if (truncateMixedEnds) { ace.trimMixedEnds(mixedEndThreshold, mixedEndWindow, qualThresholdForTrim, addPhrapFailures); } MesquiteFile.putFileContents(processedAceFilePath, ace.toString(processPolymorphisms), true); ace.importSequence( taxa, editedData, it, originalData, ChromaseqUtil.getQualityData(data), ChromaseqUtil.getRegistryData(data), singleTaxaBlock, processPolymorphisms, maxChar, "", true, voucherCode); }
/*.................................................................................................................*/ public static boolean hasDisconnectedAceFiles(CharacterData data, MesquiteModule ownerModule) { DNAData editedData = ChromaseqUtil.getEditedData(data); if (editedData == null) return true; for (int it = 0; it < editedData.getNumTaxa(); it++) if (AceFile.hasAceFilePath(editedData, it) && !AceFile.hasAceFile(ownerModule, editedData, it)) { // boolean db = AceFile.hasAceFile(ownerModule, editedData,it); return true; } return false; }
/*.................................................................................................................*/ public void processAceFileWithContig( CharacterData data, MesquiteModule ownerModule, String processedAceFilePath, String fragmentDirPath, AceFile ace, SequenceUploader uploader, String geneName, MesquiteString fullName, String baseName, MesquiteString voucherCode, int it) { DNAData editedData = ChromaseqUtil.getEditedData(data); DNAData originalData = ChromaseqUtil.getOriginalData(data); Taxa taxa = data.getTaxa(); ace.setNameTranslation(fileNameTranslation); ownerModule.log(ace.contigListForLog() + StringUtil.lineEnding()); if (processPolymorphisms) ace.processPolys(); // creates an additional CO that has polys in it if (renameContigsInAceFiles) ace.renameContigs(fullName.toString(), addFragName, geneName); ace.setLowQualityToLowerCase(qualThresholdForLowerCase); ace.writeToPropertiesFile(contigPropertiesFileBuffer, fullName.toString()); if (truncateMixedEnds) ace.trimMixedEnds(mixedEndThreshold, mixedEndWindow, qualThresholdForTrim, addPhrapFailures); /* if (uploadResultsToDatabase && StringUtil.notEmpty(databaseURL)) { uploader.uploadAceFileToServer(MesquiteXMLToLUtilities.getTOLPageDatabaseURL(databaseURL), ace, processPolymorphisms, qualThresholdForTrim); } */ System.out.println("\n\nfasta file name: " + baseName + " ace file: " + ace); MesquiteFile.putFileContents( fragmentDirPath + MesquiteFile.fileSeparator + ChromaseqUtil.processedFastaFolder + MesquiteFile.fileSeparator + baseName + ".fas", ace.toFASTAString(processPolymorphisms, qualThresholdForTrim), true); MesquiteFile.putFileContents(processedAceFilePath, ace.toString(processPolymorphisms), true); ace.importSequence( taxa, editedData, it, originalData, ChromaseqUtil.getQualityData(data), ChromaseqUtil.getRegistryData(data), singleTaxaBlock, processPolymorphisms, maxChar, " contig ", false, voucherCode); }