From: Diane Trout Date: Thu, 29 Jun 2006 01:48:46 +0000 (+0000) Subject: allow specifying a name for a sequence X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=mussa.git;a=commitdiff_plain;h=4f161bfd1e0a558abc59e6429bf805b3c372380f allow specifying a name for a sequence provide a place for specifying a species name for a sequence track in the define analysis gui. --- diff --git a/alg/mussa.cpp b/alg/mussa.cpp index 2391b04..5acd58e 100644 --- a/alg/mussa.cpp +++ b/alg/mussa.cpp @@ -274,13 +274,17 @@ Mussa::sequences() const } void Mussa::load_sequence(fs::path seq_file, fs::path annot_file, - int fasta_index, int sub_seq_start, int sub_seq_end) + int fasta_index, int sub_seq_start, int sub_seq_end, + std::string *name) { boost::shared_ptr aseq(new Sequence); aseq->load_fasta(seq_file, fasta_index, sub_seq_start, sub_seq_end); if ( not annot_file.empty() ) { aseq->load_annot(annot_file, sub_seq_start, sub_seq_end); } + if (name != 0 and name->size() > 0 ) { + aseq->set_species(*name); + } the_seqs.push_back(aseq); } diff --git a/alg/mussa.hpp b/alg/mussa.hpp index 7307005..e53e727 100644 --- a/alg/mussa.hpp +++ b/alg/mussa.hpp @@ -129,10 +129,12 @@ public: * use 0 start from the beginning. * \param[in] sub_seq_end ending slice index to select a subsequence * use 0 to go to the end. + * \param[in] name sequence name, only used if not null */ void load_sequence(boost::filesystem::path seq_file, boost::filesystem::path annot_file, - int fasta_index, int sub_seq_start=0, int sub_seq_end=0); + int fasta_index, int sub_seq_start=0, int sub_seq_end=0, + std::string *name=0); //! allow examining the sequences we have loaded typedef std::vector > vector_sequence_type; const vector_sequence_type& sequences() const; diff --git a/alg/sequence.cpp b/alg/sequence.cpp index 6a29c13..7d8b12a 100644 --- a/alg/sequence.cpp +++ b/alg/sequence.cpp @@ -438,6 +438,11 @@ Sequence::parse_annot(std::string data, int start_index, int end_index) find_sequences(query_seqs.begin(), query_seqs.end()); } +void Sequence::set_species(const std::string& name) +{ + species = name; +} + const std::string& Sequence::get_species() const { return species; diff --git a/alg/sequence.hpp b/alg/sequence.hpp index 858892e..f3a93fa 100644 --- a/alg/sequence.hpp +++ b/alg/sequence.hpp @@ -103,6 +103,7 @@ class Sequence : public std::string void add_annotation(const annot& a); const std::list& annotations() const; const std::list& motifs() const; + void set_species(const std::string &); const std::string& get_species() const; //! return a subsequence, copying over any appropriate annotation diff --git a/qui/mussa_setup_dialog/MussaSetupWidget.cpp b/qui/mussa_setup_dialog/MussaSetupWidget.cpp index 764bda2..62b909c 100644 --- a/qui/mussa_setup_dialog/MussaSetupWidget.cpp +++ b/qui/mussa_setup_dialog/MussaSetupWidget.cpp @@ -111,6 +111,7 @@ Mussa* MussaSetupWidget::getMussaObject() setup_item != setupInfoList.end(); ++setup_item) { + std::string seqName = (*setup_item)->getName(); std::string seqNative = (*setup_item)->getSeqFile(); std::string annotNative = (*setup_item)->getAnnotFile(); fastaIndex = (*setup_item)->getFastaIndex(); @@ -119,7 +120,7 @@ Mussa* MussaSetupWidget::getMussaObject() fs::path seqFile(seqNative, fs::native); fs::path annotFile(annotNative, fs::native); - mussa->load_sequence(seqFile, annotFile, fastaIndex, start, end); + mussa->load_sequence(seqFile, annotFile, fastaIndex, start, end, &seqName); } setupInfoList.clear(); diff --git a/qui/mussa_setup_dialog/SequenceSetupFrame.cpp b/qui/mussa_setup_dialog/SequenceSetupFrame.cpp index fd26f26..423e5fe 100644 --- a/qui/mussa_setup_dialog/SequenceSetupFrame.cpp +++ b/qui/mussa_setup_dialog/SequenceSetupFrame.cpp @@ -91,6 +91,7 @@ std::list SequenceSetupFrame::getSetupInfo() std::list setupInfoList; + QString seqName; QString seqFile; QString annotFile; int fastaIndex; @@ -103,7 +104,8 @@ std::list SequenceSetupFrame::getSetupInfo() for (int i = 0; i < curSeqCount; i++) { seq = seqList.back(); - + + seqName = seq->getName(); seqFile = seq->getSeqFile(); annotFile = seq->getAnnotFile(); fastaIndex = seq->getFastaIndex(); @@ -113,7 +115,8 @@ std::list SequenceSetupFrame::getSetupInfo() seqList.push_front(seq); seqList.pop_back(); - setupInfoList.push_back(new SetupInfo(seqFile.toStdString(), + setupInfoList.push_back(new SetupInfo(seqName.toStdString(), + seqFile.toStdString(), annotFile.toStdString(), fastaIndex, start, end)); diff --git a/qui/mussa_setup_dialog/SequenceSetupWidget.cpp b/qui/mussa_setup_dialog/SequenceSetupWidget.cpp index 4a80277..fe89077 100644 --- a/qui/mussa_setup_dialog/SequenceSetupWidget.cpp +++ b/qui/mussa_setup_dialog/SequenceSetupWidget.cpp @@ -10,6 +10,7 @@ SequenceSetupWidget::SequenceSetupWidget(QWidget *parent) : QWidget(parent), + sequenceNameEdit(0), sequenceLineEdit(0), annotLineEdit(0), fastaIndexLineEdit(0), @@ -17,6 +18,10 @@ SequenceSetupWidget::SequenceSetupWidget(QWidget *parent) : seqStopLineEdit(0) { + sequenceNameEdit = new QLineEdit; + QLabel *sequenceNameLabel = new QLabel(tr("Sequence name:")); + sequenceNameLabel->setBuddy(sequenceNameEdit); + // Sequence row sequenceLineEdit = new QLineEdit; //const IsFileValidator *fileValidator = new IsFileValidator(this); @@ -61,11 +66,15 @@ SequenceSetupWidget::SequenceSetupWidget(QWidget *parent) : seqStopLabel->setBuddy(seqStopLineEdit); // Layout + QHBoxLayout *sequenceNameLayout = new QHBoxLayout; QHBoxLayout *sequenceRowLayout = new QHBoxLayout; QHBoxLayout *annotRowLayout = new QHBoxLayout; QHBoxLayout *indexRowLayout = new QHBoxLayout; QVBoxLayout *mainLayout = new QVBoxLayout; + sequenceNameLayout->addWidget(sequenceNameLabel); + sequenceNameLayout->addWidget(sequenceNameEdit); + sequenceRowLayout->addWidget(sequenceLabel); sequenceRowLayout->addWidget(sequenceLineEdit); sequenceRowLayout->addWidget(sequenceButton); @@ -81,6 +90,7 @@ SequenceSetupWidget::SequenceSetupWidget(QWidget *parent) : indexRowLayout->addWidget(seqStopLabel); indexRowLayout->addWidget(seqStopLineEdit); + mainLayout->addLayout(sequenceNameLayout); mainLayout->addLayout(sequenceRowLayout); mainLayout->addLayout(annotRowLayout); mainLayout->addLayout(indexRowLayout); diff --git a/qui/mussa_setup_dialog/SequenceSetupWidget.hpp b/qui/mussa_setup_dialog/SequenceSetupWidget.hpp index 2c99ba2..1522994 100644 --- a/qui/mussa_setup_dialog/SequenceSetupWidget.hpp +++ b/qui/mussa_setup_dialog/SequenceSetupWidget.hpp @@ -13,6 +13,7 @@ public: SequenceSetupWidget(QWidget *parent = 0); // SequenceSetupWidget(const SequenceSetupWidget&); + QString getName() const { return sequenceNameEdit->text(); } QString getSeqFile() const { return sequenceLineEdit->text(); } QString getAnnotFile() const { return annotLineEdit->text(); } int getFastaIndex() const; @@ -27,6 +28,7 @@ public slots: signals: protected: + QLineEdit *sequenceNameEdit; QLineEdit *sequenceLineEdit; QLineEdit *annotLineEdit; QLineEdit *fastaIndexLineEdit; diff --git a/qui/mussa_setup_dialog/SetupInfo.cpp b/qui/mussa_setup_dialog/SetupInfo.cpp index c0bef3d..c01ade3 100644 --- a/qui/mussa_setup_dialog/SetupInfo.cpp +++ b/qui/mussa_setup_dialog/SetupInfo.cpp @@ -1,8 +1,15 @@ #include "qui/mussa_setup_dialog/SetupInfo.hpp" -SetupInfo::SetupInfo(std::string newSeqFile, std::string newAnnotFile, - int newFastaIndex, int newSubSeqStart, int newSubSeqEnd) - : seqFile(newSeqFile), +SetupInfo::SetupInfo( + std::string newName, + std::string newSeqFile, + std::string newAnnotFile, + int newFastaIndex, + int newSubSeqStart, + int newSubSeqEnd + ) + : seqName(newName), + seqFile(newSeqFile), annotFile(newAnnotFile), fastaIndex(newFastaIndex), subSeqStart(newSubSeqStart), diff --git a/qui/mussa_setup_dialog/SetupInfo.hpp b/qui/mussa_setup_dialog/SetupInfo.hpp index 1b92fd1..ae30ac1 100644 --- a/qui/mussa_setup_dialog/SetupInfo.hpp +++ b/qui/mussa_setup_dialog/SetupInfo.hpp @@ -6,12 +6,14 @@ class SetupInfo { public: - SetupInfo(std::string seqFile, + SetupInfo(std::string seqName, + std::string seqFile, std::string annotFile, int fastaIndex, int subSeqStart=0, int subSeqEnd=0); + std::string getName() { return seqName; }; std::string getSeqFile() { return seqFile; }; std::string getAnnotFile() { return annotFile; }; int getFastaIndex() { return fastaIndex; }; @@ -19,6 +21,7 @@ public: int getSubSeqEnd() { return subSeqEnd; }; private: + std::string seqName; std::string seqFile; std::string annotFile; int fastaIndex;