QString PWMatrixSearchPrompter::composeRichDoc() { Actor* modelProducer = qobject_cast<IntegralBusPort*>(target->getPort(MODEL_PORT))->getProducer(PWMatrixWorkerFactory::WMATRIX_SLOT.getId()); Actor* seqProducer = qobject_cast<IntegralBusPort*>(target->getPort(BasePorts::IN_SEQ_PORT_ID()))->getProducer(BaseSlots::DNA_SEQUENCE_SLOT().getId()); QString unsetStr = "<font color='red'>"+tr("unset")+"</font>"; QString seqName = tr("For each sequence from <u>%1</u>,").arg(seqProducer ? seqProducer->getLabel() : unsetStr); QString modelName = tr("with all profiles provided by <u>%1</u>,").arg(modelProducer ? modelProducer->getLabel() : unsetStr); QString resultName = getRequiredParam(NAME_ATTR); resultName = getHyperlink(NAME_ATTR, resultName); QString strandName; switch (getStrand(getParameter(BaseAttributes::STRAND_ATTRIBUTE().getId()).value<QString>())) { case 0: strandName = PWMatrixSearchWorker::tr("both strands"); break; case 1: strandName = PWMatrixSearchWorker::tr("direct strand"); break; case -1: strandName = PWMatrixSearchWorker::tr("complement strand"); break; } strandName = getHyperlink(BaseAttributes::STRAND_ATTRIBUTE().getId(), strandName); QString doc = tr("%1 search transcription factor binding sites (TFBS) %2." "<br>Recognize sites with <u>similarity %3%</u>, process <u>%4</u>." "<br>Output the list of found regions annotated as <u>%5</u>.") .arg(seqName) .arg(modelName) .arg(getHyperlink(SCORE_ATTR, getParameter(SCORE_ATTR).toInt())) .arg(strandName) .arg(resultName); return doc; }
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; }
/******************************* * 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; }
VescToOdom::VescToOdom(ros::NodeHandle nh, ros::NodeHandle private_nh) : odom_frame_("odom"), base_frame_("base_link"), use_servo_cmd_(true), publish_tf_(false), x_(0.0), y_(0.0), yaw_(0.0) { // get ROS parameters private_nh.param("odom_frame", odom_frame_, odom_frame_); private_nh.param("base_frame", base_frame_, base_frame_); private_nh.param("use_servo_cmd_to_calc_angular_velocity", use_servo_cmd_, use_servo_cmd_); if (!getRequiredParam(nh, "speed_to_erpm_gain", speed_to_erpm_gain_)) return; if (!getRequiredParam(nh, "speed_to_erpm_offset", speed_to_erpm_offset_)) return; if (use_servo_cmd_) { if (!getRequiredParam(nh, "steering_angle_to_servo_gain", steering_to_servo_gain_)) return; if (!getRequiredParam(nh, "steering_angle_to_servo_offset", steering_to_servo_offset_)) return; if (!getRequiredParam(nh, "wheelbase", wheelbase_)) return; } private_nh.param("publish_tf", publish_tf_, publish_tf_); // create odom publisher odom_pub_ = nh.advertise<nav_msgs::Odometry>("odom", 10); // create tf broadcaster if (publish_tf_) { tf_pub_.reset(new tf::TransformBroadcaster); } // subscribe to vesc state and. optionally, servo command vesc_state_sub_ = nh.subscribe("sensors/core", 10, &VescToOdom::vescStateCallback, this); if (use_servo_cmd_) { servo_sub_ = nh.subscribe("sensors/servo_position_command", 10, &VescToOdom::servoCmdCallback, this); } }
/****************************** * 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; }