void EvaluateBaseContentTask::run() { if (_obj->getGObjectType() == GObjectTypes::SEQUENCE) { U2SequenceObject* dnaObj = qobject_cast<U2SequenceObject*>(_obj); alp = dnaObj->getAlphabet(); DNASequenceGenerator::evaluateBaseContent(dnaObj->getWholeSequence(stateInfo), result); } else if (_obj->getGObjectType() == GObjectTypes::MULTIPLE_SEQUENCE_ALIGNMENT) { MultipleSequenceAlignmentObject* maObj = qobject_cast<MultipleSequenceAlignmentObject*>(_obj); alp = maObj->getAlphabet(); DNASequenceGenerator::evaluateBaseContent(maObj->getMultipleAlignment(), result); } else { stateInfo.setError(tr("Base content can be evaluated for sequence or sequence alignment")); } }
void uHMMPlugin::sl_search() { //to select a sequence //1. check that annotated DNA view is active //2. if not -> check that DNASequence object is selected in project view U2SequenceObject* obj = NULL; MWMDIWindow* w = AppContext::getMainWindow()->getMDIManager()->getActiveWindow(); if (w!=NULL) { GObjectViewWindow* ow = qobject_cast<GObjectViewWindow*>(w); if (ow!=NULL) { GObjectView* ov = ow->getObjectView(); AnnotatedDNAView* av = qobject_cast<AnnotatedDNAView*>(ov); if (av!=NULL) { ADVSequenceObjectContext* seqCtx = av->getSequenceInFocus(); obj = seqCtx->getSequenceObject(); } } } if (obj == NULL) { ProjectView* pv = AppContext::getProjectView(); if (pv!=NULL) { const GObjectSelection* sel = pv->getGObjectSelection(); GObject* o = sel->getSelectedObjects().size() == 1 ? sel->getSelectedObjects().first() : NULL; obj = qobject_cast<U2SequenceObject*>(o); } } QWidget *p = (QWidget*)AppContext::getMainWindow()->getQMainWindow(); if (obj == NULL) { QMessageBox::critical(p, tr("Error"), tr("Error! Select sequence in Project view or open sequence view.")); return; } U2OpStatusImpl os; DNASequence sequence = obj->getWholeSequence(os); CHECK_OP_EXT(os, QMessageBox::critical(QApplication::activeWindow(), L10N::errorTitle(), os.getError()), ); QObjectScopedPointer<HMMSearchDialogController> d = new HMMSearchDialogController(sequence, obj, p); d->exec(); }
void GTest_UHMM3Search::setAndCheckArgs() { assert( !stateInfo.hasError() ); if( hmmFilename.isEmpty() ) { stateInfo.setError( "hmm_filename_is_empty" ); return; } hmmFilename = env->getVar( "COMMON_DATA_DIR" ) + "/" + hmmFilename; if( searchTaskCtxName.isEmpty() ) { stateInfo.setError( "task_ctx_name_is_empty" ); return; } if( seqDocCtxName.isEmpty() ) { stateInfo.setError( "sequence_document_ctx_name_is_empty" ); return; } if( UNKNOWN_SEARCH == algo ) { stateInfo.setError( "unknown_algorithm_type" ); return; } Document* seqDoc = getContext<Document>( this, seqDocCtxName ); if( NULL == seqDoc ) { stateInfo.setError( QString( "context %1 not found" ).arg( seqDocCtxName ) ); return; } QList< GObject* > objsList = seqDoc->findGObjectByType( GObjectTypes::SEQUENCE ); CHECK_EXT(!objsList.isEmpty(),setError("No sequence objects found!"), ); U2SequenceObject* seqObj = qobject_cast< U2SequenceObject* >( objsList.first() ); sequence = seqObj->getWholeSequence(stateInfo); CHECK_OP(stateInfo, ); CHECK_EXT(sequence.length() > 0, setError(tr("Sequence is empty")), ); if( !machinePath.isEmpty() ) { machinePath = env->getVar( "COMMON_DATA_DIR" ) + "/" + machinePath; } }
void GTest_uHMMERSearch::prepare() { Document* doc = getContext<Document>(this, seqDocCtxName); if (doc == NULL) { stateInfo.setError( QString("context not found %1").arg(seqDocCtxName) ); return; } QList<GObject*> list = doc->findGObjectByType(GObjectTypes::SEQUENCE); if (list.size() == 0) { stateInfo.setError( QString("container of object with type \"%1\" is empty").arg(GObjectTypes::SEQUENCE) ); return; } GObject *obj = list.first(); if(obj==NULL){ stateInfo.setError( QString("object with type \"%1\" not found").arg(GObjectTypes::SEQUENCE) ); return; } assert(obj!=NULL); U2SequenceObject * mySequence = qobject_cast<U2SequenceObject*>(obj); if(mySequence==NULL){ stateInfo.setError( QString("error can't cast to sequence from GObject") ); return; } UHMMSearchSettings s; if (expertOptions){ s.globE = evalueCutoff; s.eValueNSeqs = number_of_seq; s.domE = domEvalueCutoff; s.domT = minScoreCutoff; } QString env_algo = env->getVar(ENV_HMMSEARCH_ALGORITHM_NAME); if( !env_algo.isEmpty() ) { if( ENV_HMMSEARCH_ALGORITHM_SSE == env_algo ) { #if !defined(HMMER_BUILD_WITH_SSE2) stateInfo.setError( QString("SSE2 was not enabled in this build") ); return; #endif s.alg = HMMSearchAlgo_SSEOptimized; } else if( ENV_HMMSEARCH_ALGORITHM_CELL == env_algo ) { #if !defined UGENE_CELL stateInfo.setError( QString("HMMER-Cell was not enabled in this build") ); return; #endif s.alg = HMMSearchAlgo_CellOptimized; } else { stateInfo.setError( QString("unknown hmmsearch algorithm is selected") ); return; } } if(customHmmSearchChunk) { s.searchChunkSize = hmmSearchChunk; } QString annotationName = "hmm_signal"; QString url = env->getVar("TEMP_DATA_DIR")+"/uhmmsearch/"+resultDocName; IOAdapterFactory* iof = AppContext::getIOAdapterRegistry()->getIOAdapterFactoryById(IOAdapterUtils::url2io(url)); DocumentFormat* df = AppContext::getDocumentFormatRegistry()->getFormatById(BaseDocumentFormats::PLAIN_GENBANK); assert(aDoc == NULL); aDoc = df->createNewLoadedDocument(iof, url, stateInfo); CHECK_OP(stateInfo, ); AnnotationTableObject *ao = new AnnotationTableObject( "Annotations", aDoc->getDbiRef( ) ); aDoc->addObject(ao); DNASequence dnaSequence = mySequence->getWholeSequence(stateInfo); CHECK_OP(stateInfo, ); searchTask = new HMMSearchToAnnotationsTask(env->getVar("COMMON_DATA_DIR")+"/"+hmmFileName, dnaSequence, ao, annotationName, "", U2FeatureTypes::MiscSignal, annotationName, s); addSubTask(searchTask); }