MatchTaskAlign Class Reference

#include <MatchAligner.h>

Inheritance diagram for MatchTaskAlign:

Inheritance graph
[legend]
Collaboration diagram for MatchTaskAlign:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 MatchTaskAlign (SourceReader &querySource, SourceReader &subjectSource, MatchAligner *pAlign, bool reverseQueryCoords=true, bool doAlignment=true, ostream &outputStream=cout)
virtual ~MatchTaskAlign ()
virtual void operator() (MatchStore &store)
void reverseQueryCoords (bool yesOrNo=true)
void doAlignment (bool yesOrNo=true)

Protected Attributes

MatchAlignerpAlign_
ostream & outputStream_
SourceReaderquerySource_
SourceReadersubjectSource_
bool reverseQueryCoords_
bool doAlignment_

Detailed Description

Definition at line 109 of file MatchAligner.h.


Constructor & Destructor Documentation

MatchTaskAlign::MatchTaskAlign ( SourceReader querySource,
SourceReader subjectSource,
MatchAligner pAlign,
bool  reverseQueryCoords = true,
bool  doAlignment = true,
ostream &  outputStream = cout 
)

Definition at line 50 of file MatchAligner.cpp.

00055                          :
00056   querySource_(querySource), 
00057   subjectSource_(subjectSource),
00058   pAlign_(pAlign),
00059   //  numCols_(numCols),
00060   reverseQueryCoords_(reverseQueryCoords),
00061   doAlignment_(doAlignment),
00062   outputStream_(outputStream)
00063 {
00064 } // ~MatchTaskAlign::MatchTaskAlign

MatchTaskAlign::~MatchTaskAlign (  )  [virtual]

Definition at line 67 of file MatchAligner.cpp.

References pAlign_.

00068 {
00069   delete pAlign_;
00070 } // ~MatchTaskAlign::~MatchTaskAlign


Member Function Documentation

void MatchTaskAlign::operator() ( MatchStore store  )  [virtual]

Implements MatchTask.

Definition at line 73 of file MatchAligner.cpp.

References doAlignment_, SourceReader::extractSource(), SourceReader::extractSourceReverse(), outputStream_, querySource_, reverseQueryCoords_, and subjectSource_.

00074 {
00075   //  cout << "MTA::()" << endl;
00076 
00077   if (store.empty()) return;
00078 
00079   SequenceOffset effectiveQueryStart, effectiveQueryEnd;
00080 
00081 
00082   vector<Match*>::const_iterator i(store.begin());
00083 
00084   //  outputStream_ << endl << "Matches For Query " 
00085   //       << (*i)->getQueryNum()
00086   //       << " (" << (*i)->getQuerySize()
00087   //       << " bases): " << (*i)->getQueryName()
00088   //       << "\n\n";    
00089 
00090   outputStream_ << setprecision(2) << setiosflags(ios::fixed);
00091 
00092   //  vector<char> queryData, subjectData;
00093 
00094   for( ;i!=store.end();++i)
00095   {
00096     
00097     if( reverseQueryCoords_ && (!(*i)->isQueryForward()) )
00098     {
00099       effectiveQueryStart = (*i)->getQuerySize()-(*i)->getQueryEnd()+1;
00100       effectiveQueryEnd = (*i)->getQuerySize()-(*i)->getQueryStart()+1;
00101     } // ~if
00102     else
00103     {
00104       effectiveQueryStart = (*i)->getQueryStart();
00105       effectiveQueryEnd = (*i)->getQueryEnd();
00106     } // ~else
00107 
00108     outputStream_ 
00109         << ((*i)->isQueryForward()?"F":"R") 
00110         << ((*i)->isSubjectForward()?"F":"R") << "\t"
00111         << (*i)->getQueryName() << "\t"
00112         << effectiveQueryStart << "\t"     
00113         << effectiveQueryEnd << "\t"     
00114         << (*i)->getSubjectName() << "\t"
00115         << (*i)->getSubjectStart() << "\t"
00116         << (*i)->getSubjectEnd() << "\t"
00117         << (*i)->getNumBases() << "\t" 
00118         << 100.0*((*i)->getNumBases()) / 
00119       ((*i)->getQueryEnd()-(*i)->getQueryStart()+1)
00120         << endl;
00121 
00122     // suppress output of graphical alignments if required
00123     if( !doAlignment_ ) continue;
00124 
00125 
00126     char* pSubject;
00127     char* pQuery;
00128   
00129     //    cout << "extracting subject" << endl;
00130     
00131     if ((*i)->isSubjectForward())
00132     {
00133       //      cout << "extracting subject fwd" << endl;
00134       subjectSource_.extractSource( &pSubject, //subjectData, 
00135                                     (*i)->getSubjectNum(),
00136                                     (*i)->getSubjectStart(),
00137                                     (*i)->getSubjectEnd() );
00138     } // ~if
00139     else
00140     {
00141       //      cout << "extracting subject rev" << endl;
00142       subjectSource_.extractSourceReverse( &pSubject, //subjectData, 
00143                                     (*i)->getSubjectNum(),
00144                                     (*i)->getSubjectStart(),
00145                                     (*i)->getSubjectEnd() );
00146     } // ~else
00147 
00148     if (pSubject[0]=='\0') continue; // did not get subject data from server
00149 
00150     if ((*i)->isQueryForward())
00151     {
00152       //      cout << "extracting query fwd" << endl;
00153       querySource_.extractSource
00154         ( &pQuery, //queryData, 
00155           (*i)->getQueryNum(),
00156           effectiveQueryStart,
00157           effectiveQueryEnd );
00158     } // ~if
00159     else
00160     {
00161       //      cout << "extracting query rev" << endl;
00162       querySource_.extractSourceReverse
00163       ( &pQuery, //queryData, 
00164         (*i)->getQueryNum(),
00165         effectiveQueryStart,  
00166         effectiveQueryEnd );
00167     } // ~else
00168     //   cout << "all extractions done" << endl;
00169 
00170     (*pAlign_)( pQuery,//(const char*) &queryData[0], 
00171            effectiveQueryStart,  
00172            effectiveQueryEnd,
00173            pSubject,//(const char*) &subjectData[0],
00174            (*i)->getSubjectStart(),
00175            (*i)->getSubjectEnd() );
00176 
00177     //    queryData.clear();
00178     //    subjectData.clear();
00179   } // ~for i
00180 
00181 
00182 } // ~MatchTaskAlign::operator()(MatchStore& store)

Here is the call graph for this function:

void MatchTaskAlign::reverseQueryCoords ( bool  yesOrNo = true  )  [inline]

Definition at line 122 of file MatchAligner.h.

References reverseQueryCoords_.

00123   { 
00124     reverseQueryCoords_ = yesOrNo;
00125   } // ~void reverseQueryCoords( bool yesOrNo= true) 

void MatchTaskAlign::doAlignment ( bool  yesOrNo = true  )  [inline]

Definition at line 127 of file MatchAligner.h.

References doAlignment_.

00128   { 
00129     doAlignment_ = yesOrNo;
00130   } // ~void doAlignment( bool yesOrNo= true) 


Member Data Documentation

MatchAligner* MatchTaskAlign::pAlign_ [protected]

Definition at line 135 of file MatchAligner.h.

Referenced by ~MatchTaskAlign().

ostream& MatchTaskAlign::outputStream_ [protected]

Definition at line 136 of file MatchAligner.h.

Referenced by operator()().

SourceReader& MatchTaskAlign::querySource_ [protected]

Definition at line 137 of file MatchAligner.h.

Referenced by operator()().

SourceReader& MatchTaskAlign::subjectSource_ [protected]

Definition at line 138 of file MatchAligner.h.

Referenced by operator()().

bool MatchTaskAlign::reverseQueryCoords_ [protected]

Definition at line 144 of file MatchAligner.h.

Referenced by operator()(), and reverseQueryCoords().

bool MatchTaskAlign::doAlignment_ [protected]

Definition at line 148 of file MatchAligner.h.

Referenced by doAlignment(), and operator()().


The documentation for this class was generated from the following files:
Generated on Fri Dec 21 13:18:56 2007 for ssaha by  doxygen 1.5.2