00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "gn/gnABISource.h"
00013
00014 gnABISource::gnABISource()
00015 {
00016 m_openString = "";
00017 m_pFilter = gnFilter::fullDNASeqFilter();
00018 }
00019 gnABISource::gnABISource( const gnABISource& s ) : gnFileSource(s)
00020 {
00021 vector< gnFileContig* >::const_iterator iter = s.m_contigList.begin();
00022 for( ; iter != s.m_contigList.end(); ++iter )
00023 {
00024 m_contigList.push_back( *iter );
00025 }
00026 }
00027 gnABISource::~gnABISource()
00028 {
00029 m_ifstream.close();
00030 vector< gnFileContig* >::iterator iter = m_contigList.begin();
00031 for( ; iter != m_contigList.end(); ++iter )
00032 {
00033 gnFileContig* fg = *iter;
00034 *iter = 0;
00035 delete fg;
00036 }
00037 }
00038
00039
00040 boolean gnABISource::HasContig( const string& name ) const
00041 {
00042 vector< gnFileContig* const>::iterator iter = m_contigList.begin();
00043 for( ; iter != m_contigList.end(); ++iter )
00044 {
00045 if( name == (*iter)->GetName() )
00046 return true;
00047 }
00048 return false;
00049 }
00050 uint32 gnABISource::GetContigID( const string& name ) const
00051 {
00052 vector< gnFileContig* const>::iterator iter = m_contigList.begin();
00053 for( ; iter != m_contigList.end(); ++iter )
00054 {
00055 if( name == (*iter)->GetName() )
00056 return iter - m_contigList.begin();
00057 }
00058 return ALL_CONTIGS;
00059 }
00060
00061 string gnABISource::GetContigName( uint32 i ) const{
00062 if( i < m_contigList.size() ){
00063 return m_contigList[i]->GetName();
00064 }
00065 return "";
00066 }
00067
00068 gnSeqI gnABISource::GetContigSeqLength( uint32 i ) const{
00069 if( i < m_contigList.size() )
00070 {
00071 return m_contigList[i]->GetSeqLength();
00072 }else if( i == ALL_CONTIGS){
00073 gnSeqI seqlen = 0;
00074 for(int j=0; j < m_contigList.size(); j++)
00075 seqlen += m_contigList[j]->GetSeqLength();
00076 return seqlen;
00077 }
00078 return GNSEQI_ERROR;
00079 }
00080
00081 boolean gnABISource::SeqRead( const gnSeqI start, char* buf, gnSeqI& bufLen, const uint32 contigI )
00082 {
00083 return false;
00084 }
00085
00086 boolean gnABISource::SeqSeek( const gnSeqI start, const uint32& contigI, uint64& startPos, uint64& readableBytes ){
00087 return SeqStartPos( start, *(m_contigList[contigI]), startPos, readableBytes );
00088 }
00089
00090 boolean gnABISource::SeqStartPos( const gnSeqI start, gnFileContig& contig, uint64& startPos, uint64& readableBytes )
00091 {
00092 return false;
00093 }
00094
00095 gnFileContig* gnABISource::GetFileContig( const uint32 contigI ) const{
00096 if(m_contigList.size() > contigI)
00097 return m_contigList[contigI];
00098 return NULL;
00099 }
00100
00101 boolean gnABISource::ParseStream( istream& fin )
00102 {
00103 return false;
00104 }