Esempio n. 1
0
void DNASequenceGeneratorTask::addSequencesToMsaDoc( Document *source )
{
    const QSet<QString> &supportedFormats = source->getDocumentFormat( )->getSupportedObjectTypes( );
    SAFE_POINT( supportedFormats.contains( GObjectTypes::MULTIPLE_SEQUENCE_ALIGNMENT ),
        "Invalid document format", );
    SAFE_POINT( NULL != generateTask, "Invalid generate task", );
    const U2DbiRef dbiRef = generateTask->getDbiRef( );
    const DNAAlphabet *alp = cfg.alphabet;
    SAFE_POINT( NULL != alp, "Generated sequence has invalid alphabet", );
    const QString baseSeqName = cfg.getSequenceName( );
    const QList<U2Sequence> seqs = generateTask->getResults( );

    MultipleSequenceAlignment msa(tr( "Generated MSA" ), alp);
    DbiConnection con( dbiRef, stateInfo );

    for ( int sequenceNum = 0, totalSeqCount = seqs.size( ); sequenceNum < totalSeqCount;
        ++sequenceNum )
    {
        const QString seqName = ( 1 < totalSeqCount )
            ? ( baseSeqName + " " + QString::number( sequenceNum + 1 ) ) : baseSeqName;
        // TODO: large sequences will cause out of memory error here
        const QByteArray seqContent = con.dbi->getSequenceDbi( )->getSequenceData(
            seqs[sequenceNum].id, U2_REGION_MAX, stateInfo );
        msa->addRow( seqName, seqContent, sequenceNum);
    }
    MultipleSequenceAlignmentObject *alnObject = MultipleSequenceAlignmentImporter::createAlignment( source->getDbiRef( ), msa, stateInfo );
    CHECK_OP( stateInfo, );
    source->addObject( alnObject );
}
Esempio n. 2
0
int main(int argc, char* argv[]) {
	MSA msa(argc, argv);

	return 0;
}