include/gn/gnSequence.h

Go to the documentation of this file.
00001 00002 // File: gnSequence.h 00003 // Purpose: Sequence class 00004 // Description: Provides a high level sequence interface to all types of 00005 // sequence data. 00006 // Changes: 00007 // Version: libGenome 0.5.1 00008 // Author: Aaron Darling 00009 // Modified by: 00010 // Copyright: (c) Aaron Darling 00011 // Licenses: See COPYING file for details 00013 #ifndef _gnSequence_h_ 00014 #define _gnSequence_h_ 00015 00016 #include "gn/gnDefs.h" 00017 00018 #include <string> 00019 #include <iostream> 00020 #include <list> 00021 #include "gn/gnBaseSource.h" 00022 #include "gn/gnGenomeSpec.h" 00023 #include "gn/gnSourceSpec.h" 00024 #include "gn/gnStringSpec.h" 00025 #include "gn/gnBaseFilter.h" 00026 #include "gn/gnCompare.h" 00027 00035 class GNDLLEXPORT gnSequence : public gnClone 00036 { 00037 public: 00041 gnSequence(); 00046 gnSequence( const gnSeqC* seq ); 00051 gnSequence( const string& str ); 00056 gnSequence( const gnGenomeSpec& gngs ); 00061 gnSequence( const gnFragmentSpec& gnfs ); 00067 gnSequence( const gnContigSpec& gncs ); 00073 gnSequence( gnSeqC *bases, const gnSeqI length); 00078 gnSequence( const gnSequence& seq); 00082 ~gnSequence(); 00083 00087 gnSequence& operator=( const gnSequence& seq); 00088 00089 gnSequence* Clone() const; 00090 00095 gnSeqI contigListSize() const; 00100 gnSeqI contigListLength() const; 00107 uint32 contigIndexByBase( const gnSeqI baseI) const; 00114 gnSequence contig( const uint32 contigI) const; 00121 gnSequence contigByBase( const gnSeqI baseI) const; 00128 virtual gnSeqI contigStart( const uint32 contigI) const; 00135 virtual gnSeqI contigLength( const uint32 contigI) const; 00143 virtual uint32 contigIndexByName( string& contigName) const; 00150 virtual string contigName( const uint32 contigI) const; 00158 virtual gnSequence contigByName( string& contigName) const; 00165 virtual void merge(const gnSeqI startI, const gnSeqI endI); 00172 virtual void mergeContigs(const uint32 startC, const uint32 endC); 00178 virtual void splitContig(const gnSeqI splitI, const uint32 contigI=ALL_CONTIGS); 00179 00180 virtual void setContigName( const uint32 contigI, const string& contig_name); 00181 00186 virtual uint32 getFeatureListLength() const; 00193 virtual gnBaseFeature* getFeature(const uint32 featureI) const; 00200 virtual void getContainedFeatures(const gnLocation& lt, vector<gnBaseFeature*>& feature_vector, vector<uint32>& index_vector) const; 00207 virtual void getIntersectingFeatures(const gnLocation& lt, vector<gnBaseFeature*>& feature_vector, vector<uint32>& index_vector) const; 00213 virtual uint32 addFeature(gnBaseFeature* feature); 00219 virtual void removeFeature(const uint32 featureI); 00225 virtual void getBrokenFeatures(const gnLocation& lt, vector<gnBaseFeature*>& feature_vector) const; 00232 virtual uint32 getHeaderListLength(const uint32 contigI) const; 00241 virtual gnBaseHeader* getHeader(const uint32 contigI, const uint32 headerI) const; 00249 virtual void addHeader(const uint32 contigI, gnBaseHeader* header, const uint32 headerI); 00256 virtual void removeHeader(const uint32 contigI, const uint32 headerI); 00263 virtual void setReverseComplement( const boolean revComp, const uint32 contigI=ALL_CONTIGS); 00270 virtual boolean isReverseComplement( const uint32 contigI=ALL_CONTIGS ); 00275 virtual boolean isCircular() const; 00282 virtual void setCircular( const boolean value ); 00283 00290 virtual void globalToLocal(uint32& contigI, gnSeqI& baseI) const; 00291 00299 virtual void localToGlobal(const uint32 contigI, gnSeqI& baseI) const; 00307 virtual void globalToSource(uint32& contigI, gnSeqI& baseI) const; 00317 virtual void localToSource(uint32& contigI, gnSeqI& baseI) const; 00326 virtual bool LoadSource(const string sourcename); 00327 00332 virtual void setFilter(const gnBaseFilter* filt); 00333 00339 virtual void setFilterList(list<const gnBaseFilter*>& filt_list); 00340 00344 virtual list<const gnBaseFilter*> getFilterList() const; 00345 00350 virtual void assign(gnSequence& seq); 00351 00352 // Comparison Operators 00356 void operator=(gnSequence& seq); 00357 boolean operator==(const gnSequence& seq) const; 00358 boolean operator!=(const gnSequence& seq) const; 00359 boolean operator<(const gnSequence& seq) const; 00360 boolean operator<=(const gnSequence& seq) const; 00361 boolean operator>(const gnSequence& seq) const; 00362 boolean operator>=(const gnSequence& seq) const; 00366 gnSequence& operator+=(const gnSequence& seq); 00373 virtual int compare(const gnSequence& seq) const; 00374 virtual int compare(const string& str) const; 00375 // Append and Insert Operators 00380 virtual void append( const gnSequence& seq); 00388 virtual void insert( const gnSeqI offset, const gnSeqC *bases, const gnSeqI length); 00395 virtual void insert( const gnSeqI offset, const gnSequence& seq); 00402 virtual void insert( const gnSeqI offset, const gnGenomeSpec& gnbs); 00403 // Concatenation Operators 00407 gnSequence const operator+(const gnSequence& seq) const; 00408 // Substrings and base deletion 00415 gnSequence subseq(const gnSeqI offset, const gnSeqI length) const; 00421 virtual void erase( const gnSeqI offset=0, const gnSeqI length=GNSEQI_END ); 00422 // IO operators 00426 friend std::istream& operator>>(std::istream& is, gnSequence& gns); //read from source. 00430 friend std::ostream& operator<<(std::ostream& os, const gnSequence& gns); //write to source. 00431 // Size functions 00436 virtual gnSeqI length() const; 00441 virtual gnSeqI size() const; 00442 // Raw Sequence Access 00449 virtual string ToString( const gnSeqI length=GNSEQI_END, const gnSeqI offset=1 ) const; 00457 virtual boolean ToString( string& str, const gnSeqI length=GNSEQI_END, const gnSeqI offset=1 ) const; 00467 virtual boolean ToArray( gnSeqC* pSeqC, gnSeqI length, const gnSeqI offset=1 ) const; 00473 virtual gnSeqC GetSeqC( const gnSeqI offset ) const; // return gnSeqC illegal char. 00478 gnSeqC operator[]( const gnSeqI offset ) const; 00479 00484 virtual gnGenomeSpec* GetSpec() const; 00489 virtual void SetSpec(gnGenomeSpec* s); 00490 00499 virtual gnSeqI find(const gnSequence& search, const gnSeqI offset=0) const; 00500 00501 private: 00502 gnGenomeSpec *spec; 00503 list<const gnBaseFilter*> filter_list; 00504 const gnCompare* comparator; 00505 }; // class gnSequence 00506 00507 00508 GNDLLEXPORT 00509 std::istream& operator>>(std::istream& is, gnSequence& gns); //read from source. 00510 GNDLLEXPORT 00511 std::ostream& operator<<(std::ostream& os, const gnSequence& gns); //write to source. 00512 00513 // Assignment Operators 00514 inline 00515 void gnSequence::operator=(gnSequence& seq){ 00516 spec = seq.spec->Clone(); 00517 } 00518 inline 00519 void gnSequence::assign(gnSequence& seq){ 00520 spec = seq.spec->Clone(); 00521 } 00522 inline 00523 boolean gnSequence::operator==(const gnSequence& seq) const{ 00524 return (compare(seq)==0); 00525 } 00526 inline 00527 boolean gnSequence::operator!=(const gnSequence& seq) const{ 00528 return (compare(seq)!=0); 00529 } 00530 inline 00531 boolean gnSequence::operator<(const gnSequence& seq) const{ 00532 return (compare(seq)<0); 00533 } 00534 inline 00535 boolean gnSequence::operator<=(const gnSequence& seq) const{ 00536 return (compare(seq)<=0); 00537 } 00538 inline 00539 boolean gnSequence::operator>(const gnSequence& seq) const{ 00540 return (compare(seq)>0); 00541 } 00542 inline 00543 boolean gnSequence::operator>=(const gnSequence& seq) const{ 00544 return (compare(seq)>=0); 00545 } 00546 // Append and Insert Operators 00547 inline 00548 gnSequence& gnSequence::operator+=(const gnSequence& seq){ 00549 insert(GNSEQI_END, *seq.spec); 00550 return *this; 00551 } 00552 inline 00553 void gnSequence::append( const gnSequence& seq){ 00554 insert(GNSEQI_END, *seq.spec); 00555 } 00556 //Feature functions 00557 inline 00558 uint32 gnSequence::getFeatureListLength() const{ 00559 return spec->GetFeatureListLength(); 00560 } 00561 inline 00562 gnBaseFeature* gnSequence::getFeature(const uint32 featureI) const{ 00563 return spec->GetFeature(featureI); 00564 } 00565 inline 00566 uint32 gnSequence::addFeature(gnBaseFeature* feature){ 00567 return spec->AddFeature(feature); 00568 } 00569 inline 00570 void gnSequence::removeFeature(const uint32 featureI){ 00571 spec->RemoveFeature(featureI); 00572 } 00573 inline 00574 void gnSequence::getContainedFeatures(const gnLocation& lt, vector<gnBaseFeature*>& feature_vector, vector<uint32>& index_vector) const{ 00575 spec->GetContainedFeatures(lt, feature_vector, index_vector); 00576 } 00577 inline 00578 void gnSequence::getIntersectingFeatures(const gnLocation& lt, vector<gnBaseFeature*>& feature_vector, vector<uint32>& index_vector) const{ 00579 spec->GetIntersectingFeatures(lt, feature_vector, index_vector); 00580 } 00581 inline 00582 void gnSequence::getBrokenFeatures(const gnLocation& lt, vector<gnBaseFeature*>& feature_vector) const{ 00583 spec->GetBrokenFeatures(lt, feature_vector); 00584 } 00585 00586 inline 00587 boolean gnSequence::isCircular() const{ 00588 return spec->IsCircular(); 00589 } 00590 00591 inline 00592 void gnSequence::setCircular( const boolean value ){ 00593 spec->SetCircular(value); 00594 } 00595 inline 00596 void gnSequence::insert( const gnSeqI offset, const gnSequence& seq){ 00597 insert(offset, *seq.spec); 00598 } 00599 00600 // Size functions 00601 inline 00602 gnSeqI gnSequence::length() const{ 00603 return spec->GetLength(); 00604 } 00605 inline 00606 gnSeqI gnSequence::size() const{ 00607 return spec->GetLength(); 00608 } 00609 inline 00610 gnGenomeSpec* gnSequence::GetSpec() const{ 00611 return spec; 00612 } 00613 inline 00614 void gnSequence::SetSpec(gnGenomeSpec* s){ 00615 if(spec != NULL) 00616 delete spec; 00617 spec = s; 00618 } 00619 00620 inline 00621 void gnSequence::setFilter(const gnBaseFilter* filt){ 00622 filter_list.clear(); 00623 if(filt != NULL) 00624 filter_list.push_back(filt); 00625 } 00626 inline 00627 void gnSequence::setFilterList(list<const gnBaseFilter*>& filt_list){ 00628 filter_list = filt_list; 00629 } 00630 inline 00631 list<const gnBaseFilter*> gnSequence::getFilterList() const{ 00632 return filter_list; 00633 } 00634 00635 00636 #endif 00637 // _gnSequence_h_

Generated on Mon Feb 14 19:28:18 2005 for libGenome by doxygen 1.3.8