TraceBacker3D Class Reference

#include <MatchAligner.h>

Collaboration diagram for TraceBacker3D:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 TraceBacker3D (int queryFinalFrame, int subjectFinalFrame, bool p1IsQuery, Alignment &alignment)
bool operator() (PathMatrix< PathType3D >::CellIterator &current)

Private Attributes

AlignBreakType p1Gap_
AlignBreakType p2Gap_
AlignBreakType p1FrameShift_
AlignBreakType p2FrameShift_
int k_
int l_
Alignmentalignment_

Detailed Description

Definition at line 927 of file MatchAligner.h.


Constructor & Destructor Documentation

TraceBacker3D::TraceBacker3D ( int  queryFinalFrame,
int  subjectFinalFrame,
bool  p1IsQuery,
Alignment alignment 
) [inline]

Definition at line 937 of file MatchAligner.h.

00939                                         :
00940     p1Gap_( (p1IsQuery) ? 
00941             alignBreakGapQuery : alignBreakGapSubject ),
00942     p2Gap_( (p1IsQuery) ? 
00943             alignBreakGapSubject : alignBreakGapQuery ),
00944     p1FrameShift_( (p1IsQuery) ? 
00945                    alignBreakFrameShiftQuery : alignBreakFrameShiftSubject ),
00946     p2FrameShift_( (p1IsQuery) ? 
00947                    alignBreakFrameShiftSubject : alignBreakFrameShiftQuery ),
00948     k_( (p1IsQuery) ? 
00949         queryFinalFrame : subjectFinalFrame ), 
00950     l_( (p1IsQuery) ? 
00951         subjectFinalFrame : queryFinalFrame ), 
00952     alignment_(alignment) 
00953     {}
  bool operator()( PathMatrix<PathType3D>::CellIterator& current );


Member Function Documentation

bool TraceBacker3D::operator() ( PathMatrix< PathType3D >::CellIterator &  current  ) 

Definition at line 1410 of file MatchAligner.cpp.

References alignBreakNull, fromFinished, fromN, fromPrevFrame1, fromPrevFrame2, fromSW, and fromW.

01411 {
01412 
01413   //    cout << (int)(current.second-current.first->begin())
01414   // << " frame1: " << k_ << " frame2: " << l_ 
01415   // << endl;
01416 
01417   alignment_.push_front( AlignInfo() );
01418   alignment_.front().breakType=alignBreakNull;
01419 
01420   if (((*current.second)[k_][l_])&fromFinished)
01421   {
01422     return false;
01423   }
01424   else if (((*current.second)[k_][l_])&fromW)
01425   {
01426     //  cout << "going W" << endl;
01427     current.second 
01428       = (current.first-1)->begin() 
01429       + (current.second-current.first->begin());
01430     --current.first;
01431     alignment_.front().numMatches++;
01432   } // ~else if
01433   else if (((*current.second)[k_][l_])&fromN)
01434   {
01435     //    cout << "going N" << endl;
01436     assert(current.second!=current.first->begin());
01437     --current.second;
01438     alignment_.push_front( AlignInfo() );
01439     alignment_.front().breakType=p1Gap_;
01440   } // ~else if
01441   else if (((*current.second)[k_][l_])&fromSW)
01442   {
01443     //    cout << "going SW" << endl;
01444     current.second 
01445       = (current.first-1)->begin() 
01446       + (current.second-current.first->begin());
01447     ++current.second;
01448     --current.first;
01449     alignment_.push_front( AlignInfo() );
01450     alignment_.front().breakType=p2Gap_;
01451   } // ~else if
01452   else if (((*current.second)[k_][l_])&fromPrevFrame1)
01453   {
01454     //    cout << "shifting frame p1" << endl;
01455     if (k_==0)
01456     { // then need to do a SW shift
01457       // (equivalent to a W shift in the full d.p. matrix)
01458       current.second 
01459         = (current.first-1)->begin() 
01460         + (current.second-current.first->begin());
01461       ++current.second;
01462       --current.first;
01463       k_=2;
01464     } // ~if
01465     else k_--;
01466     alignment_.push_front( AlignInfo() );
01467     alignment_.front().breakType=p1FrameShift_;
01468   } // ~else if
01469   else if (((*current.second)[k_][l_])&fromPrevFrame2)
01470   {
01471     //    cout << "shifting frame p2" << endl;
01472     if (l_==0)
01473     { // then need to do a N shift
01474       // (equivalent to a N shift in the full d.p. matrix)
01475       assert(current.second!=current.first->begin());
01476       --current.second;
01477       l_=2;
01478     } // ~if
01479     else l_--;
01480     alignment_.push_front( AlignInfo() );
01481     alignment_.front().breakType=p2FrameShift_;
01482   } // ~else if
01483   else assert (1==0);
01484 
01485   return true;
01486 
01487 } // ~bool TraceBacker3D::operator()


Member Data Documentation

AlignBreakType TraceBacker3D::p1Gap_ [private]

Definition at line 957 of file MatchAligner.h.

AlignBreakType TraceBacker3D::p2Gap_ [private]

Definition at line 958 of file MatchAligner.h.

AlignBreakType TraceBacker3D::p1FrameShift_ [private]

Definition at line 959 of file MatchAligner.h.

AlignBreakType TraceBacker3D::p2FrameShift_ [private]

Definition at line 960 of file MatchAligner.h.

int TraceBacker3D::k_ [private]

Definition at line 962 of file MatchAligner.h.

int TraceBacker3D::l_ [private]

Definition at line 963 of file MatchAligner.h.

Alignment& TraceBacker3D::alignment_ [private]

Definition at line 964 of file MatchAligner.h.


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