/******************************* * Alignment2SequencePrompter *******************************/ QString Alignment2SequencePrompter::composeRichDoc() { QString unsetStr = "<font color='red'>"+tr("unset")+"</font>"; IntegralBusPort* input = qobject_cast<IntegralBusPort*>(target->getPort(BasePorts::IN_MSA_PORT_ID())); Actor* producer = input->getProducer(BaseSlots::MULTIPLE_ALIGNMENT_SLOT().getId()); QString source = tr(" from <u>%1</u>").arg(producer ? producer->getLabel() : unsetStr); return tr("Split alignment%1 into sequences.").arg(source); }
QString ClustalWPrompter::composeRichDoc() { IntegralBusPort* input = qobject_cast<IntegralBusPort*>(target->getPort(BasePorts::IN_MSA_PORT_ID())); Actor* producer = input->getProducer(BasePorts::IN_MSA_PORT_ID()); QString producerName = producer ? tr(" from %1").arg(producer->getLabel()) : ""; QString doc = tr("Aligns each MSA supplied <u>%1</u> with \"<u>ClustalW</u>\".") .arg(producerName); return doc; }
QString MergeFastqPrompter::composeRichDoc() { IntegralBusPort* input = qobject_cast<IntegralBusPort*>(target->getPort(BaseNGSWorker::INPUT_PORT)); const Actor* producer = input->getProducer(BaseSlots::URL_SLOT().getId()); QString unsetStr = "<font color='red'>"+tr("unset")+"</font>"; QString producerName = tr(" from <u>%1</u>").arg(producer ? producer->getLabel() : unsetStr); QString doc = tr("Merges input sequences %1.").arg(producerName); return doc; }
QString QualityTrimPrompter::composeRichDoc() { IntegralBusPort* input = qobject_cast<IntegralBusPort*>(target->getPort(BaseNGSWorker::INPUT_PORT)); const Actor* producer = input->getProducer(BaseSlots::URL_SLOT().getId()); QString unsetStr = "<font color='red'>"+tr("unset")+"</font>"; QString producerName = tr("<u>%1</u>").arg(producer ? producer->getLabel() : unsetStr); QString doc = tr("Trim input sequence %1 from the end, using the quality threshold.").arg(producerName); return doc; }
/******************************* * FilterSequencePrompter *******************************/ QString PassFilterPrompter::composeRichDoc() { IntegralBusPort* input = qobject_cast<IntegralBusPort*>(target->getPort("in-data")); Actor* producer = input->getProducer(BaseSlots::TEXT_SLOT().getId()); QString unsetStr = "<font color='red'>"+tr("unset")+"</font>"; QString producerName = tr("<u>%1</u>").arg(producer ? producer->getLabel() : unsetStr); QString passVals = getRequiredParam(BaseSlots::TEXT_SLOT().getId()); passVals = getHyperlink(BaseSlots::TEXT_SLOT().getId(), passVals); QString res = tr("Filters input data from %1 by value(s) %2.").arg(producerName).arg(passVals); return res; }
QString CollocationPrompter::composeRichDoc() { IntegralBusPort* input = qobject_cast<IntegralBusPort*>(target->getPort(BasePorts::IN_SEQ_PORT_ID())); Actor* seqProducer = input->getProducer(SEQ_SLOT); QString seqName = seqProducer ? tr(" sequence from <u>%1</u>").arg(seqProducer->getLabel()) : ""; QString annName = getProducers(BasePorts::IN_SEQ_PORT_ID(), FEATURE_TABLE_SLOT); if (!annName.isEmpty()) { annName = tr(" set of annotations from <u>%1</u>").arg(annName); } QString data; if (seqName.isEmpty() && annName.isEmpty()) { //return "<font color='red'>"+tr("unset")+"</font>"; } else if (!seqName.isEmpty() && !annName.isEmpty()) { data = tr("For each %1 and %2,").arg(seqName).arg(annName); } else { data = tr("For each %1%2,").arg(seqName).arg(annName); } QString annotations; QStringList names = annotations.split(QRegExp("\\W+"), QString::SkipEmptyParts).toSet().toList(); annotations = names.join(", "); if (annotations.isEmpty()) { annotations = getRequiredParam(ANN_ATTR); } annotations = getHyperlink(ANN_ATTR, annotations); int distance = getParameter(LEN_ATTR).toInt(); bool mode = getParameter(FIT_ATTR).toBool(); QString extra; if (mode) { extra = tr(" Annotations themselves may not span beyond the region."); } QString resultName = getHyperlink(NAME_ATTR, getRequiredParam(NAME_ATTR)); QString doc = tr("%1 look if <u>%2</u> annotations appear collocated within same region of length <u>%3</u>.%4" "<br>Output the list of found regions annotated as <u>%5</u>.") .arg(data) //sequence from Read Fasta 1 .arg(annotations) .arg(getHyperlink(LEN_ATTR, distance)) .arg(extra) .arg(resultName); return doc; }
/****************************** * RepeatPrompter ******************************/ QString RepeatPrompter::composeRichDoc() { IntegralBusPort* input = qobject_cast<IntegralBusPort*>(target->getPort(BasePorts::IN_SEQ_PORT_ID())); Actor* producer = input->getProducer(BaseSlots::DNA_SEQUENCE_SLOT().getId()); QString unsetStr = "<font color='red'>"+tr("unset")+"</font>"; QString producerName = tr(" from <u>%1</u>").arg(producer ? producer->getLabel() : unsetStr); // TODO extend ? QString resultName = getRequiredParam(NAME_ATTR); QString inverted = getParameter(INVERT_ATTR).toBool() ? tr("inverted") : tr("direct"); QString doc = tr("For each sequence%1, find <u>%2</u> repeats." "<br>Detect <u>%3% identical</u> repeats <u>not shorter than %4 bps</u>." "<br>Output the list of found regions annotated as <u>%5</u>.") .arg(producerName) //sequence from Read Fasta 1 .arg(getHyperlink(INVERT_ATTR, inverted)) .arg(getHyperlink(IDENTITY_ATTR, getParameter(IDENTITY_ATTR).toInt())) .arg(getHyperlink(LEN_ATTR, getParameter(LEN_ATTR).toInt())) .arg(getHyperlink(NAME_ATTR, resultName)); return doc; }
/***************************** * ORFPrompter *****************************/ QString ORFPrompter::composeRichDoc() { IntegralBusPort* input = qobject_cast<IntegralBusPort*>(target->getPort(BasePorts::IN_SEQ_PORT_ID())); Actor* producer = input->getProducer(BaseSlots::DNA_SEQUENCE_SLOT().getId()); QString unsetStr = "<font color='red'>"+tr("unset")+"</font>"; QString producerName = tr(" from <u>%1</u>").arg(producer ? producer->getLabel() : unsetStr); ORFAlgorithmSettings cfg; cfg.strand = getStrand(getParameter(BaseAttributes::STRAND_ATTRIBUTE().getId()).value<QString>()); cfg.minLen = getParameter(LEN_ATTR).toInt(); cfg.mustFit = getParameter(FIT_ATTR).toBool(); cfg.mustInit = getParameter(INIT_ATTR).toBool(); cfg.allowAltStart = getParameter(ALT_ATTR).toBool(); cfg.includeStopCodon = getParameter(ISC_ATTR).toBool(); QString extra; if (!cfg.mustInit) { QString anyLink = getHyperlink(INIT_ATTR, tr("starting with any codon")); extra += tr(", allow ORFs %1 other than terminator").arg(anyLink); } else if (cfg.allowAltStart) { QString altLink = getHyperlink(ALT_ATTR, tr("alternative start codons")); extra += tr(", take into account %1").arg(altLink); } if (cfg.mustFit) { QString mustFitLink = getHyperlink(FIT_ATTR, tr("ignore non-terminated")); extra += tr(", %1 ORFs").arg(mustFitLink); } QString strandName; switch (cfg.strand) { case ORFAlgorithmStrand_Both: strandName = ORFWorker::tr("both strands"); break; case ORFAlgorithmStrand_Direct: strandName = ORFWorker::tr("direct strand"); break; case ORFAlgorithmStrand_Complement: strandName = ORFWorker::tr("complement strand"); break; } strandName = getHyperlink(BaseAttributes::STRAND_ATTRIBUTE().getId(), strandName); QString resultName = getHyperlink(NAME_ATTR, getRequiredParam(NAME_ATTR)); QString transId = getParameter(ID_ATTR).toString(); QString ttName = AppContext::getDNATranslationRegistry()-> lookupTranslation(AppContext::getDNAAlphabetRegistry()->findById(BaseDNAAlphabetIds::NUCL_DNA_DEFAULT()), DNATranslationType_NUCL_2_AMINO, transId)->getTranslationName(); ttName = getHyperlink(ID_ATTR, ttName); QString doc = tr("For each nucleotide sequence%1, find ORFs in <u>%2</u> using the <u>%3</u>." "<br>Detect only ORFs <u>not shorter than %4 bps</u>%5." "<br>Output the list of found regions annotated as <u>%6</u>.") .arg(producerName) //sequence from Read Fasta 1 .arg(strandName) //both strands .arg(ttName) //Standard Genetic Code .arg(getHyperlink(LEN_ATTR, cfg.minLen)) //100 .arg(extra) // take into account alternative start codons. .arg(resultName); return doc; }