Task * CufflinksWorker::tick() { if (false == settingsAreCorrect) { return NULL; } if (input->hasMessage()) { Message inputMessage = getMessageAndSetupScriptValues(input); SAFE_POINT(!inputMessage.isEmpty(), "Internal error: message can't be NULL!", NULL); QVariantMap data = inputMessage.getData().toMap(); if (settings.fromFile) { settings.url = data[BaseSlots::URL_SLOT().getId()].toString(); } else { settings.assemblyId = data[BaseSlots::ASSEMBLY_SLOT().getId()].value<SharedDbiDataHandler>(); } // Create the task CufflinksSupportTask* cufflinksSupportTask = new CufflinksSupportTask(settings); cufflinksSupportTask->addListeners(createLogListeners()); connect(cufflinksSupportTask, SIGNAL(si_stateChanged()), SLOT(sl_cufflinksTaskFinished())); return cufflinksSupportTask; } else if (input->isEnded()) { setDone(); output->setEnded(); } return NULL; }
Task * MergeFastqWorker::tick() { while (inputUrlPort->hasMessage()) { const QString url = takeUrl(); CHECK(!url.isEmpty(), NULL); inputUrls.append(url); } if (!inputUrlPort->isEnded()) { return NULL; } if(!inputUrls.isEmpty()){ const QString outputDir = FileAndDirectoryUtils::createWorkingDir(inputUrls.first(), getValue<int>(OUT_MODE_ID), getValue<QString>(CUSTOM_DIR_ID), context->workingDir()); BaseNGSSetting setting; setting.outDir = outputDir; setting.outName = getTargetName(inputUrls.first(), outputDir); setting.inputUrl = inputUrls.first(); setting.customParameters = getCustomParameters(); setting.listeners = createLogListeners(); Task *t = getTask(setting); connect(new TaskSignalMapper(t), SIGNAL(si_taskFinished(Task*)), SLOT(sl_taskFinished(Task*))); inputUrls.clear();; return t; } if (inputUrlPort->isEnded()) { setDone(); outputUrlPort->setEnded(); } return NULL; }
Task * CAP3Worker::runCap3() { // Modify output file name, if required QString fileName = getValue<QString>(OUTPUT_FILE); const QString ext = ".ace"; if (datasetNumber > 0) { bool appendExtToResult = false; if (fileName.endsWith(ext)) { int location = fileName.size() - ext.size(); fileName.truncate(location); appendExtToResult = true; } fileName += "_" + QString::number(datasetNumber); if (appendExtToResult) { fileName += ext; } settings.outputFilePath = fileName; } // Run the task CAP3SupportTask *capTask = new CAP3SupportTask(settings); capTask->addListeners(createLogListeners()); connect(capTask, SIGNAL(si_stateChanged()), SLOT(sl_taskFinished())); datasetNumber++; settings.inputFiles.clear(); return capTask; }
Task * RmdupBamWorker::tick() { if (inputUrlPort->hasMessage()) { const QString url = takeUrl(); CHECK(!url.isEmpty(), NULL); const QString detectedFormat = FileAndDirectoryUtils::detectFormat(url); if(detectedFormat.isEmpty()){ coreLog.info(tr("Unknown file format: ") + url); return NULL; } if(detectedFormat == BaseDocumentFormats::BAM){ const QString outputDir = FileAndDirectoryUtils::createWorkingDir(url, getValue<int>(OUT_MODE_ID), getValue<QString>(CUSTOM_DIR_ID), context->workingDir()); BamRmdupSetting setting; setting.outDir = outputDir; setting.outName = getTargetName(url, outputDir); setting.inputUrl = url; setting.removeSingleEnd = getValue<bool>(REMOVE_SINGLE_END_ID); setting.treatReads = getValue<bool>(TREAT_READS_ID); SamtoolsRmdupTask *t = new SamtoolsRmdupTask(setting); t->addListeners(createLogListeners()); connect(new TaskSignalMapper(t), SIGNAL(si_taskFinished(Task*)), SLOT(sl_taskFinished(Task*))); return t; } } if (inputUrlPort->isEnded()) { setDone(); outputUrlPort->setEnded(); } return NULL; }
Task * CuffmergeWorker::createCuffmergeTask() { CuffmergeSettings result = scanParameters(); result.storage = context->getDataStorage(); result.annotationTables = annTableHandlers; CuffmergeSupportTask* supportTask = new CuffmergeSupportTask(result); supportTask->addListeners(createLogListeners()); return supportTask; }
Task* ClustalOWorker::tick() { if (input->hasMessage()) { Message inputMessage = getMessageAndSetupScriptValues(input); if (inputMessage.isEmpty()) { output->transit(); return NULL; } cfg.numIterations=actor->getParameter(NUM_ITERATIONS)->getAttributeValue<int>(context); cfg.maxGuidetreeIterations=actor->getParameter(MAX_GT_ITERATIONS)->getAttributeValue<int>(context); cfg.maxHMMIterations=actor->getParameter(MAX_HMM_ITERATIONS)->getAttributeValue<int>(context); cfg.setAutoOptions=actor->getParameter(SET_AUTO)->getAttributeValue<bool>(context); cfg.numberOfProcessors=AppContext::getAppSettings()->getAppResourcePool()->getIdealThreadCount(); QString path=actor->getParameter(EXT_TOOL_PATH)->getAttributeValue<QString>(context); if(QString::compare(path, "default", Qt::CaseInsensitive) != 0){ AppContext::getExternalToolRegistry()->getByName(ET_CLUSTALO)->setPath(path); } path=actor->getParameter(TMP_DIR_PATH)->getAttributeValue<QString>(context); if(QString::compare(path, "default", Qt::CaseInsensitive) != 0){ AppContext::getAppSettings()->getUserAppsSettings()->setUserTemporaryDirPath(path); } QVariantMap qm = inputMessage.getData().toMap(); SharedDbiDataHandler msaId = qm.value(BaseSlots::MULTIPLE_ALIGNMENT_SLOT().getId()).value<SharedDbiDataHandler>(); QScopedPointer<MultipleSequenceAlignmentObject> msaObj(StorageUtils::getMsaObject(context->getDataStorage(), msaId)); SAFE_POINT(!msaObj.isNull(), "NULL MSA Object!", NULL); const MultipleSequenceAlignment msa = msaObj->getMultipleAlignment(); if (msa->isEmpty()) { algoLog.error(tr("An empty MSA '%1' has been supplied to ClustalO.").arg(msa->getName())); return NULL; } ClustalOSupportTask* supportTask = new ClustalOSupportTask(msa, GObjectReference(), cfg); supportTask->addListeners(createLogListeners()); Task *t = new NoFailTaskWrapper(supportTask); connect(t, SIGNAL(si_stateChanged()), SLOT(sl_taskFinished())); return t; } else if (input->isEnded()) { setDone(); output->setEnded(); } return NULL; }
Task* CallVariantsWorker::tick() { U2OpStatus2Log os; //put variant tracks while (!cache.isEmpty()) { output->put(cache.takeFirst()); } checkState(os); CHECK_OP_EXT(os, setDone(), NULL); //take assemblies from one dataset if (assemblyPort->hasMessage() && settings.assemblyUrls.isEmpty()) { takeAssembly(os); CHECK_OP_EXT(os, processError(os), NULL); } else if (settings.assemblyUrls.isEmpty() && !assemblyUrls.isEmpty()) { settings.assemblyUrls = assemblyUrls; assemblyUrls.clear(); } //take reference sequence if (refSeqPort->hasMessage() && settings.refSeqUrl.isEmpty()) { takeReference(os); CHECK_OP_EXT(os, processError(os), NULL); } //do if (cache.isEmpty() && !settings.refSeqUrl.isEmpty() && !settings.assemblyUrls.isEmpty()) { settings.variationsUrl = GUrlUtils::rollFileName(getValue<QString>(OUT_URL), "_", QSet<QString>()); CallVariantsTask* t = new CallVariantsTask(settings, context->getDataStorage()); t->addListeners(createLogListeners(3)); connect(t, SIGNAL(si_stateChanged()), SLOT(sl_taskFinished())); settings.assemblyUrls.clear(); settings.refSeqUrl.clear(); return t; } return NULL; }
Task * SnpEffWorker::tick() { if (inputUrlPort->hasMessage()) { const QString url = takeUrl(); CHECK(!url.isEmpty(), NULL); QString outputDir = FileAndDirectoryUtils::createWorkingDir(url, getValue<int>(OUT_MODE_ID), getValue<QString>(CUSTOM_DIR_ID), context->workingDir()); U2OpStatusImpl os; outputDir = GUrlUtils::createDirectory(outputDir + SnpEffWorker::BASE_SNPEFF_SUBDIR, "_", os); SnpEffSetting setting; setting.inputUrl = url; setting.outDir = outputDir; setting.inFormat = getValue<QString>(INPUT_FORMAT); setting.outFormat = getValue<QString>(OUTPUT_FORMAT); setting.genome = getValue<QString>(GENOME); setting.updownLength = getValue<QString>(UPDOWN_LENGTH); setting.canon = getValue<bool>(CANON); setting.hgvs = getValue<bool>(HGVS); setting.lof = getValue<bool>(LOF); setting.motif = getValue<bool>(MOTIF); SnpEffTask *t = new SnpEffTask (setting); connect(new TaskSignalMapper(t), SIGNAL(si_taskFinished(Task*)), SLOT(sl_taskFinished(Task*))); QList<ExternalToolListener *> listeners = createLogListeners(); listeners[0]->setLogProcessor(new SnpEffLogProcessor(monitor(), getActorId())); t->addListeners(listeners); return t; } if (inputUrlPort->isEnded()) { setDone(); outputUrlPort->setEnded(); } return NULL; }
Task *ConservationPlotWorker::tick() { U2OpStatus2Log os; while (inChannel->hasMessage()) { Message m = getMessageAndSetupScriptValues(inChannel); QVariantMap data = m.getData().toMap(); if (!data.contains(ANNOT_SLOT_ID)) { os.setError("Annotations slot is empty"); return new FailTask(os.getError()); } plotData = StorageUtils::getAnnotationTableHandlers(data[ANNOT_SLOT_ID]); } if (!inChannel->isEnded()) { return NULL; } ConservationPlotSettings settings = createConservationPlotSettings(os); if (os.hasError()) { return new FailTask(os.getError()); } ConservationPlotTask* t = new ConservationPlotTask(settings, context->getDataStorage(), plotData); t->addListeners(createLogListeners()); connect(t, SIGNAL(si_stateChanged()), SLOT(sl_taskFinished())); return t; if (inChannel->isEnded()) { setDone(); } return NULL; }
Task* ClustalWWorker::tick() { if (input->hasMessage()) { Message inputMessage = getMessageAndSetupScriptValues(input); if (inputMessage.isEmpty()) { output->transit(); return NULL; } cfg.gapOpenPenalty=actor->getParameter(GAP_OPEN_PENALTY)->getAttributeValue<float>(context); cfg.gapExtenstionPenalty=actor->getParameter(GAP_EXT_PENALTY)->getAttributeValue<float>(context); cfg.gapDist=actor->getParameter(GAP_DIST)->getAttributeValue<float>(context); cfg.endGaps=actor->getParameter(END_GAPS)->getAttributeValue<bool>(context); cfg.noHGaps=actor->getParameter(NO_HGAPS)->getAttributeValue<bool>(context); cfg.noPGaps=actor->getParameter(NO_PGAPS)->getAttributeValue<bool>(context); if(actor->getParameter(ITERATION)->getAttributeValue<int>(context) != 0){ if(actor->getParameter(ITERATION)->getAttributeValue<int>(context) == 1){ cfg.iterationType="TREE"; }else if(actor->getParameter(ITERATION)->getAttributeValue<int>(context) == 2){ cfg.iterationType="ALIGNMENT"; } if(actor->getParameter(NUM_ITERATIONS)->getAttributeValue<int>(context) != 3){ cfg.numIterations=actor->getParameter(NUM_ITERATIONS)->getAttributeValue<int>(context); } } if(actor->getParameter(MATRIX)->getAttributeValue<int>(context) == -1){ if(actor->getParameter(MATRIX)->getAttributeValue<int>(context) == 0){ cfg.matrix="IUB"; }else if(actor->getParameter(MATRIX)->getAttributeValue<int>(context) == 1){ cfg.matrix="CLUSTALW"; }else if(actor->getParameter(MATRIX)->getAttributeValue<int>(context) == 2){ cfg.matrix="BLOSUM"; }else if(actor->getParameter(MATRIX)->getAttributeValue<int>(context) == 3){ cfg.matrix="PAM"; }else if(actor->getParameter(MATRIX)->getAttributeValue<int>(context) == 4){ cfg.matrix="GONNET"; }else if(actor->getParameter(MATRIX)->getAttributeValue<int>(context) == 5){ cfg.matrix="ID"; } } QString path=actor->getParameter(EXT_TOOL_PATH)->getAttributeValue<QString>(context); if(QString::compare(path, "default", Qt::CaseInsensitive) != 0){ AppContext::getExternalToolRegistry()->getByName(ET_CLUSTAL)->setPath(path); } path=actor->getParameter(TMP_DIR_PATH)->getAttributeValue<QString>(context); if(QString::compare(path, "default", Qt::CaseInsensitive) != 0){ AppContext::getAppSettings()->getUserAppsSettings()->setUserTemporaryDirPath(path); } QVariantMap qm = inputMessage.getData().toMap(); SharedDbiDataHandler msaId = qm.value(BaseSlots::MULTIPLE_ALIGNMENT_SLOT().getId()).value<SharedDbiDataHandler>(); QScopedPointer<MultipleSequenceAlignmentObject> msaObj(StorageUtils::getMsaObject(context->getDataStorage(), msaId)); SAFE_POINT(!msaObj.isNull(), "NULL MSA Object!", NULL); const MultipleSequenceAlignment msa = msaObj->getMultipleAlignment(); if (msa->isEmpty()) { algoLog.error(tr("An empty MSA '%1' has been supplied to ClustalW.").arg(msa->getName())); return NULL; } ClustalWSupportTask* supportTask = new ClustalWSupportTask(msa, GObjectReference(), cfg); supportTask->addListeners(createLogListeners()); Task *t = new NoFailTaskWrapper(supportTask); connect(t, SIGNAL(si_stateChanged()), SLOT(sl_taskFinished())); return t; } else if (input->isEnded()) { setDone(); output->setEnded(); } return NULL; }