gnSequence.h Source File

Main Page Namespace List Class Hierarchy Alphabetical List Compound List File List Compound Members File Members

# 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.1.0
    00008 // Author:          Aaron Darling
    00009 // Last Edited:     April 15, 2001, 10:34:50pm
    00010 // Modified by:
    00011 // Copyright:       (c) Aaron Darling
    00012 // Licenses:        Proprietary
    00014 #ifndef _gnSequence_h_
    00015 #define _gnSequence_h_
    00016
    00017 #include "gn/gnDefs.h"
    00018
    00019 #include <string>
    00020 #include <iostream>
    00021 #include <list>
    00022 #include "gn/gnBaseSource.h"
    00023 #include "gn/gnGenomeSpec.h"
    00024 #include "gn/gnSourceSpec.h"
    00025 #include "gn/gnStringSpec.h"
    00026 #include "gn/gnBaseFilter.h"
    00027 #include "gn/gnCompare.h"
    00028
    00036 class GNDLLEXPORT gnSequence : public gnClone
    00037 {
    00038 public:
    00042         gnSequence();
    00047         gnSequence( const gnSeqC* seq );
    00052         gnSequence( const string& str );
    00057         gnSequence( const gnGenomeSpec& gngs );
    00062         gnSequence( const gnFragmentSpec& gnfs );
    00068         gnSequence( const gnContigSpec& gncs );
    00074         gnSequence( gnSeqC *bases, const gnSeqI length);
    00079         gnSequence( const gnSequence& seq);
    00083         ~gnSequence();
    00084
    00088         gnSequence& operator=( const gnSequence& seq);
    00089
    00090         gnSequence* Clone() const;
    00091
    00096         gnSeqI contigListSize() const;
    00101         gnSeqI contigListLength() const;
    00108         uint32 contigIndexByBase( const gnSeqI baseI) const;
    00115         gnSequence contig( const uint32 contigI) const;
    00122         gnSequence contigByBase( const gnSeqI baseI) const;
    00129         virtual gnSeqI contigStart( const uint32 contigI) const;
    00136         virtual gnSeqI contigLength( const uint32 contigI) const;
    00144         virtual uint32 contigIndexByName( string& contigName) const;
    00151         virtual string contigName( const uint32 contigI) const;
    00159         virtual gnSequence contigByName( string& contigName) const;
    00166         virtual void merge(const gnSeqI startI, const gnSeqI endI);
    00173         virtual void mergeContigs(const uint32 startC, const uint32 endC);
    00179         virtual void splitContig(const gnSeqI splitI, const uint32 contigI=ALL_CONTIGS);
    00180
    00181         virtual void setContigName( const uint32 contigI, const string& contig_name);
    00182
    00188         virtual uint32 getFeatureListLength() const;
    00195         virtual gnBaseFeature* getFeature(const uint32 featureI) const;
    00202         virtual void getContainedFeatures(const gnLocation& lt, vector<gnBaseFeature*>& feature_vector, vector<uint32>& index_vector) const;
    00209         virtual void getIntersectingFeatures(const gnLocation& lt, vector<gnBaseFeature*>& feature_vector, vector<uint32>& index_vector) const;
    00215         virtual uint32 addFeature(gnBaseFeature* feature);
    00221         virtual void removeFeature(const uint32 featureI);
    00227         virtual void getBrokenFeatures(const gnLocation& lt, vector<gnBaseFeature*>& feature_vector) const;
    00234         virtual uint32 getHeaderListLength(const uint32 contigI) const;
    00243         virtual gnBaseHeader* getHeader(const uint32 contigI, const uint32 headerI) const;
    00251         virtual void addHeader(const uint32 contigI, gnBaseHeader* header, const uint32 headerI);
    00258         virtual void removeHeader(const uint32 contigI, const uint32 headerI);
    00265         virtual void setReverseComplement( const boolean revComp, const uint32 contigI=ALL_CONTIGS);
    00272         virtual boolean isReverseComplement( const uint32 contigI=ALL_CONTIGS );
    00277         virtual boolean isCircular() const;
    00284         virtual void setCircular( const boolean value );
    00285
    00292         virtual void globalToLocal(uint32& contigI, gnSeqI& baseI) const;
    00293
    00301         virtual void localToGlobal(const uint32 contigI, gnSeqI& baseI) const;
    00309         virtual void globalToSource(uint32& contigI, gnSeqI& baseI) const;
    00319         virtual void localToSource(uint32& contigI, gnSeqI& baseI) const;
    00328         virtual bool LoadSource(const string sourcename);
    00329
    00334         virtual void setFilter(const gnBaseFilter* filt);
    00335
    00341         virtual void setFilterList(list<const gnBaseFilter*>& filt_list);
    00342
    00346         virtual list<const gnBaseFilter*> getFilterList() const;
    00347
    00352         virtual void assign(gnSequence& seq);
    00353
    00354 // Comparison Operators
    00358         void operator=(gnSequence& seq);
    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;
    00363         boolean operator>(const gnSequence& seq) const;
    00364         boolean operator>=(const gnSequence& seq) const;
    00368         gnSequence& operator+=(const gnSequence& seq);
    00375         virtual int compare(const gnSequence& seq) const;
    00376         virtual int compare(const string& str) const;
    00377 // Append and Insert Operators
    00382         virtual void append( const gnSequence& seq);
    00390         virtual void insert( const gnSeqI offset, const gnSeqC *bases, const gnSeqI length);
    00397         virtual void insert( const gnSeqI offset, const gnSequence& seq);
    00404         virtual void insert( const gnSeqI offset, const gnGenomeSpec& gnbs);
    00405 // Concatenation Operators
    00409         gnSequence const operator+(const gnSequence& seq) const;
    00410 // Substrings and base deletion
    00417         gnSequence subseq(const gnSeqI offset, const gnSeqI length) const;
    00423         virtual void erase( const gnSeqI offset=0, const gnSeqI length=GNSEQI_END );
    00424 // IO operators
    00428         friend std::istream& operator>>(std::istream& is, gnSequence& gns);     //read from source.
    00432         friend std::ostream& operator<<(std::ostream& os, const gnSequence& gns); //write to source.
    00433 // Size functions
    00438         virtual gnSeqI length() const;
    00443         virtual gnSeqI size() const;
    00444 // Raw Sequence Access
    00451         virtual string ToString( const gnSeqI length=GNSEQI_END, const gnSeqI offset=1 ) const;
    00459         virtual boolean ToString( string& str, const gnSeqI length=GNSEQI_END, const gnSeqI offset=1 ) const;
    00469         virtual boolean ToArray( gnSeqC* pSeqC, gnSeqI length, const gnSeqI offset=1 ) const;
    00475         virtual gnSeqC GetSeqC( const gnSeqI offset ) const; // return gnSeqC illegal char.
    00480         gnSeqC operator[]( const gnSeqI offset ) const;
    00481
    00486         virtual gnGenomeSpec* GetSpec() const;
    00491         virtual void SetSpec(gnGenomeSpec* s);
    00492
    00501         virtual gnSeqI find(const gnSequence& search, const gnSeqI offset=0) const;
    00502
    00503 private:
    00504         gnGenomeSpec *spec;
    00505         list<const gnBaseFilter*> filter_list;
    00506         const gnCompare* comparator;
    00507 }; // class gnSequence
    00508
    00509
    00510 GNDLLEXPORT
    00511 std::istream& operator>>(std::istream& is, gnSequence& gns);    //read from source.
    00512 GNDLLEXPORT
    00513 std::ostream& operator<<(std::ostream& os, const gnSequence& gns); //write to source.
    00514
    00515 // Assignment Operators
    00516 inline
    00517 void gnSequence::operator=(gnSequence& seq){
    00518         spec = seq.spec->Clone();
    00519 }
    00520 inline
    00521 void gnSequence::assign(gnSequence& seq){
    00522         spec = seq.spec->Clone();
    00523 }
    00524 inline
    00525 boolean gnSequence::operator==(const gnSequence& seq) const{
    00526         return (compare(seq)==0);
    00527 }
    00528 inline
    00529 boolean gnSequence::operator!=(const gnSequence& seq) const{
    00530         return (compare(seq)!=0);
    00531 }
    00532 inline
    00533 boolean gnSequence::operator<(const gnSequence& seq) const{
    00534         return (compare(seq)<0);
    00535 }
    00536 inline
    00537 boolean gnSequence::operator<=(const gnSequence& seq) const{
    00538         return (compare(seq)<=0);
    00539 }
    00540 inline
    00541 boolean gnSequence::operator>(const gnSequence& seq) const{
    00542         return (compare(seq)>0);
    00543 }
    00544 inline
    00545 boolean gnSequence::operator>=(const gnSequence& seq) const{
    00546         return (compare(seq)>=0);
    00547 }
    00548 // Append and Insert Operators
    00549 inline
    00550 gnSequence& gnSequence::operator+=(const gnSequence& seq){
    00551         insert(GNSEQI_END, *seq.spec);
    00552         return *this;
    00553 }
    00554 inline
    00555 void gnSequence::append( const gnSequence& seq){
    00556         insert(GNSEQI_END, *seq.spec);
    00557 }
    00558 //Feature functions
    00559 inline
    00560 uint32 gnSequence::getFeatureListLength() const{
    00561         return spec->GetFeatureListLength();
    00562 }
    00563 inline
    00564 gnBaseFeature* gnSequence::getFeature(const uint32 featureI) const{
    00565         return spec->GetFeature(featureI);
    00566 }
    00567 inline
    00568 uint32 gnSequence::addFeature(gnBaseFeature* feature){
    00569         return spec->AddFeature(feature);
    00570 }
    00571 inline
    00572 void gnSequence::removeFeature(const uint32 featureI){
    00573         spec->RemoveFeature(featureI);
    00574 }
    00575 inline
    00576 void gnSequence::getContainedFeatures(const gnLocation& lt, vector<gnBaseFeature*>& feature_vector, vector<uint32>& index_vector) const{
    00577         spec->GetContainedFeatures(lt, feature_vector, index_vector);
    00578 }
    00579 inline
    00580 void gnSequence::getIntersectingFeatures(const gnLocation& lt, vector<gnBaseFeature*>& feature_vector, vector<uint32>& index_vector) const{
    00581         spec->GetIntersectingFeatures(lt, feature_vector, index_vector);
    00582 }
    00583 inline
    00584 void gnSequence::getBrokenFeatures(const gnLocation& lt, vector<gnBaseFeature*>& feature_vector) const{
    00585         spec->GetBrokenFeatures(lt, feature_vector);
    00586 }
    00587
    00588 inline
    00589 boolean gnSequence::isCircular() const{
    00590         return spec->IsCircular();
    00591 }
    00592
    00593 inline
    00594 void gnSequence::setCircular( const boolean value ){
    00595         spec->SetCircular(value);
    00596 }
    00597 inline
    00598 void gnSequence::insert( const gnSeqI offset, const gnSequence& seq){
    00599         insert(offset, *seq.spec);
    00600 }
    00601
    00602 // Size functions
    00603 inline
    00604 gnSeqI gnSequence::length() const{
    00605         return spec->GetLength();
    00606 }
    00607 inline
    00608 gnSeqI gnSequence::size() const{
    00609         return spec->GetLength();
    00610 }
    00611 inline
    00612 gnGenomeSpec* gnSequence::GetSpec() const{
    00613         return spec;
    00614 }
    00615 inline
    00616 void gnSequence::SetSpec(gnGenomeSpec* s){
    00617         if(spec != NULL)
    00618                 delete spec;
    00619         spec = s;
    00620 }
    00621
    00622 inline
    00623 void gnSequence::setFilter(const gnBaseFilter* filt){
    00624         filter_list.clear();
    00625         if(filt != NULL)
    00626                 filter_list.push_back(filt);
    00627 }
    00628 inline
    00629 void gnSequence::setFilterList(list<const gnBaseFilter*>& filt_list){
    00630         filter_list = filt_list;
    00631 }
    00632 inline
    00633 list<const gnBaseFilter*> gnSequence::getFilterList() const{
    00634         return filter_list;
    00635 }
    00636
    00637
    00638 #endif
    00639         // _gnSequence_h_