CDense_diag::TIds::iterator
i;
65 if(seqAlign.NotEmpty()) {
67IdsSet = DenDiag->GetIds();
68}
else if(seqAlign->GetSegs().IsDenseg()) {
69IdsSet = seqAlign->GetSegs().GetDenseg().GetIds();
87 unsigned intindex = (onMaster) ? 0 : 1;
91ddIt = sa->
SetSegs().SetDendiag().begin();
92ddEnd = sa->
SetSegs().SetDendiag().end();
93 for(; ddIt != ddEnd; ++ddIt) {
94 if((*ddIt)->GetDim() != 2 || (*ddIt)->GetIds().size() != 2) {
102ddIt = sa->
SetSegs().SetDendiag().begin();
103ddEnd = sa->
SetSegs().SetDendiag().end();
105 for(; ddIt != ddEnd; ++ddIt) {
106ids = (*ddIt)->SetIds();
107ids[index]->Assign(*newSeqId);
137CDense_diag::TStarts::const_iterator k;
138 intStart,
Len, OtherStart;
143ddend = ddlist->end();
144 for(
i=ddlist->begin();
i!=ddend;
i++) {
145k = (*i)->GetStarts().begin();
146 Len= (*i)->GetLen();
149k = (*i)->GetStarts().begin();
152 if((Position >= Start) && (Position < (Start+
Len))) {
153 return(OtherStart + (Position-Start));
190iend = pDenDiagSet->end();
191 for(
i=pDenDiagSet->begin();
i!=iend;
i++) {
192start = (onMaster) ? (*i)->GetStarts().front() : (*i)->GetStarts().back();
193stop = start + (*i)->GetLen() - 1;
194 if(Position >= start && Position <= stop) {
206 intnBlocks, position;
208vector<int> align1Blocks, align1Starts;
210alignedPositions.clear();
215 if(
GetSeqID(align1, align1Id, !onMaster) &&
GetSeqID(align2, align2Id, !onMaster) &&
222nBlocks = align1Blocks.size();
223 for(
int i= 0;
i< nBlocks; ++
i) {
224position = align1Starts[
i];
225 for(
intj = 0; j < align1Blocks[
i]; ++j) {
227alignedPositions.push_back(position);
234 returnalignedPositions.size();
243 if(seqAlign.
Empty()) {
250 for(
i=pDenDiagSet->begin();
i!=pDenDiagSet->end();
i++) {
251 Len+= (*i)->GetLen();
261 if(seqAlign.
Empty()) {
267lowerBound = (onMaster) ? pDenDiagSet->front()->GetStarts().front() : pDenDiagSet->front()->GetStarts().back();
275 if(seqAlign.
Empty()) {
281upperBound = (onMaster) ? pDenDiagSet->back()->GetStarts().front() : pDenDiagSet->back()->GetStarts().back();
282upperBound += pDenDiagSet->back()->GetLen() - 1;
293 intalignedResCtr = 0;
294 intstart = -1, stop = -1;
297 if(align.
Empty() || sequenceString.size() < 1) {
302 if(length < 1 || (
int) sequenceString.size() < length) {
307pAlignedRes =
new char[length];
308 if(!pAlignedRes)
return;
314start = (isMaster) ? ddFirst->GetStarts().front() : ddFirst->GetStarts().back();
315stop = (isMaster) ? ddLast->GetStarts().front() : ddLast->GetStarts().back();
316stop += ddLast->GetLen() - 1;
324 if(start >=0 && start <= stop && stop < (
int) sequenceString.size()) {
325 for(
int i= start;
i<= stop; ++
i) {
328pAlignedRes[alignedResCtr] = sequenceString[
i];
336 if(alignedResCtr != length) {
337 delete[] pAlignedRes;
351vector<int>* starts, vector<int>* lengths) {
354vector<int> vstarts, vlengths;
357 if(vlengths.size() == vstarts.size()) {
358nBlocks = vstarts.size();
359 while(
i< nBlocks &&
result< 0) {
360 if(residue >= vstarts[
i] && residue < vstarts[
i] + vlengths[
i]) {
365 if(starts !=
NULL) {
366starts->insert(starts->begin(), vstarts.begin(), vstarts.end());
368 if(lengths !=
NULL) {
369lengths->insert(lengths->begin(), vlengths.begin(), vlengths.end());
380 if(seqAlign.
Empty()) {
397 if(seqAlign.
NotEmpty() && nBlocks > 0) {
400 for(cit = pDenDiagSet->begin(); cit != pDenDiagSet->end(); ++cit) {
401lengths.push_back((*cit)->GetLen());
425 if(seqAlign.
NotEmpty() && nBlocks > 0) {
428 for(cit = pDenDiagSet->begin(); cit != pDenDiagSet->end(); ++cit) {
429start = (onMaster) ? (*cit)->GetStarts().front() : (*cit)->GetStarts().back();
430starts.push_back(start);
449 if(align.
SetSegs().IsDendiag()) {
450dd = &(align.
SetSegs().SetDendiag());
467k = pDenDiagSet->begin();
470k = pDenDiagSet->end();
485CDense_diag::TIds::iterator
i;
490k = pDenDiagSet->begin();
491IdsSet = (*k)->GetIds();
497 for(; k != pDenDiagSet->end(); k++, iii++)
499IdsSet = (*k)->GetIds();
526 if(pDD && pAl->
IsInt()) {
530to=interval.
SetTo();
532RefID = &interval.
SetId();
536CPacked_seqint::Tdata::iterator s;
539from=(*s)->GetFrom();
542RefID = &((*s)->SetId());
552CDense_diag::TStarts::const_iterator pos;
553vector < CRef< CSeq_id > >::const_iterator pid;
555 for(iDst=0,pp=pDD->begin(); pp!=pDD->end(); pp++,iDst++){
556pos=(*pp)->GetStarts().begin();
559pid=(*pp)->GetIds().begin();
564pAl->
SetInt().SetFrom(posStart);
566pAl->
SetInt().SetId(*SeqID);
573intrvl->
SetId(*SeqID);
583idMaster.
Reset(seqID1);
585idSeq.
Reset(seqID2);
591newDD->SetIds().push_back(idMaster);
592newDD->SetIds().push_back(idSeq);
593newDD->SetStarts().push_back(st1);
594newDD->SetStarts().push_back(st2);
596pDD->push_back(newDD);
610list< CRef< CSeq_align > >::const_iterator j;
619 if(++Count == Row)
break;
622 if((*j)->GetSegs().IsDendiag()) {
624pDenDiagSet = &((*j)->GetSegs().GetDendiag());
636list< CRef< CSeq_align > >::iterator j;
640 if(Row == 0) j = seqAnnot->
SetData().SetAlign().begin();
643 for(j= seqAnnot->
SetData().SetAlign().begin();
644j!= seqAnnot->
SetData().SetAlign().end(); j++) {
645 if(++Count == Row)
break;
648 if((*j)->SetSegs().IsDendiag()) {
650pDenDiagSet = &((*j)->SetSegs().SetDendiag());
662list< CRef< CSeq_align > >::iterator j, jend;
665 if(RowIndex == 0)
return(
false);
669jend = seqAnnot->
SetData().SetAlign().end();
670 for(j= seqAnnot->
SetData().SetAlign().begin(); j != jend; j++) {
671 if(RowCount == RowIndex) {
672seqAnnot->
SetData().SetAlign().erase(j);
676 if(RowCount > RowIndex)
break;
685 if(seqAlign.
Empty())
691 constlist< CRef< CSeq_align > >& saList = seqAlign->
GetSegs().
GetDisc().
Get();
692 if(saList.begin() != saList.end())
706newSa->
Assign(*denseSegSeqAlign);
711newSa->
SetSegs().SetDendiag() = ddList;
730 inttotal = numrows * numsegs;
735 boolstrands_exist = ((
int) strands.size() == total);
736 boolscores_exist = ((
int) scores.size() == total);
741dd->SetLen(lens[seg]);
746dd->SetIds().push_back(ids[
row]);
747dd->SetStarts().push_back(start);
749dd->SetStrands().push_back(strands[pos]);
752dd->SetScores().push_back(scores[pos]);
757 if(rows_per_seg >= 2) {
758dd->SetDim(rows_per_seg);
767list <CRef <CUpdate_align> > ::iterator pPen;
771 CSeq_align* pAl = *((*pPen)->SetSeqannot().SetData().SetAlign().begin());
773vector < CRef< CSeq_id > >::const_iterator pid=pDDPen->
GetIds().begin();
789 if(seqAlign.
Empty()) {
790err =
"GetPssmIdFromSeqAlign: Empty Seq_align.\n";
792err =
"GetPssmIdFromSeqAlign: Only Seq_aligns with dim = 2 supported.\n";
797err =
"GetPssmIdFromSeqAlign: Dense_diags not currently supported.\n";
799err.append(
"GetPssmIdFromSeqAlign: Seq_align is an unsupported type (%d).\n", seqAlign->
GetType());
811 if(seqAlign.
Empty()) {
812err =
"GetMasterGIFromSeqAlign: Empty Seq_align.\n";
816gi = seqId->
GetGi();
818err =
"GetMasterGIFromSeqAlign: Dense_seg's master sequence is empty or not of type 'GI'.\n";
823gi = seqId->
GetGi();
825err =
"GetMasterGIFromSeqAlign: Dense_diag's master sequence is empty or not of type 'GI'.\n";
828err.append(
"GetMasterGIFromSeqAlign: Seq_align is an unsupported type (%d).\n", seqAlign->
GetType());
User-defined methods of the data storage class.
User-defined methods of the data storage class.
int MapPositionToMaster(int childPos, const CSeq_align &align)
void MakeDDFromSeqLoc(CSeq_loc *pAl, TDendiag *pDD)
void MakeSeqLocFromDD(const TDendiag *pDD, CSeq_loc *pAl)
TGi GetMasterGIFromSeqAlign(const CRef< CSeq_align > &seqAlign, string &err)
int GetLowerBound(const CRef< CSeq_align > &seqAlign, bool onMaster)
CRef< CSeq_align > ExtractFirstSeqAlign(CRef< CSeq_align > seqAlign)
bool GetDenDiagSet(const CRef< CSeq_annot > &seqAnnot, int Row, const TDendiag *&pDenDiagSet)
bool CheckSeqIdInDD(const CRef< CSeq_align > &seqAlign)
bool ChangeSeqIdInSeqAlign(CRef< CSeq_align > &sa, const CRef< CSeq_id > &newSeqId, bool onMaster)
int GetAlignedPositions(const CRef< CSeq_align > &align1, const CRef< CSeq_align > &align2, vector< int > &alignedPositions, bool onMaster)
int GetBlockStartsForMaster(const CRef< CSeq_align > &seqAlign, vector< int > &starts)
CRef< CSeq_align > Denseg2DenseDiagList(const CRef< CSeq_align > &denseSegSeqAlign)
int GetBlockNumberForResidue(int residue, const CRef< CSeq_align > &seqAlign, bool onMaster, vector< int > *starts, vector< int > *lengths)
int GetBlockCount(const CRef< CSeq_align > &seqAlign)
bool GetSeqID(const CRef< CSeq_align > &seqAlign, CRef< CSeq_id > &SeqID, bool getSlave)
bool SetDenDiagSet(CRef< CSeq_annot > &seqAnnot, int Row, TDendiag *&pDenDiagSet)
int MapPosition(const CSeq_align &seqAlign, int Position, CoordMapDir mapDir)
void SetAlignedResiduesOnSequence(const CRef< CSeq_align > &align, const string &sequenceString, char *&pAlignedRes, bool isMaster)
bool IsPositionAligned(const CSeq_align &seqAlign, int Position, bool onMaster)
void AddIntervalToDD(TDendiag *pDD, CRef< CSeq_id > seqID1, CRef< CSeq_id > seqID2, TSeqPos st1, TSeqPos st2, TSeqPos lll)
int GetNumAlignedResidues(const CRef< CSeq_align > &seqAlign)
int GetBlockLengths(const CRef< CSeq_align > &seqAlign, vector< int > &lengths)
bool GetFirstOrLastDenDiag(const CRef< CSeq_align > &seqAlign, bool First, CRef< CDense_diag > &DenDiag)
bool GetPendingSeqId(CCdCore *pCD, int irow, CRef< CSeq_id > &seqID)
int MapPositionToChild(int masterPos, const CSeq_align &align)
int GetBlockStarts(const CRef< CSeq_align > &seqAlign, vector< int > &starts, bool onMaster)
int GetUpperBound(const CRef< CSeq_align > &seqAlign, bool onMaster)
int GetPssmIdFromSeqAlign(const CRef< CSeq_align > &seqAlign, string &err)
bool GetDDSetFromSeqAlign(const CSeq_align &align, const TDendiag *&dd)
bool EraseRow(CRef< CSeq_annot > &seqAnnot, int RowIndex)
TDendiag::const_iterator TDendiag_cit
CSeq_align::C_Segs::TDendiag TDendiag
TDendiag::iterator TDendiag_it
const int INVALID_POSITION
bool SeqIdsMatch(const CRef< CSeq_id > &id1, const CRef< CSeq_id > &id2)
int GetCDDPssmIdFromSeqId(const CRef< CSeq_id > &id)
unsigned int TSeqPos
Type for sequence locations and lengths.
int TSignedSeqPos
Type for signed sequence position.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
void SetPacked_int(TPacked_int &v)
void Reset(void)
Reset reference object.
bool NotEmpty(void) const THROWS_NONE
Check if CRef is not empty â pointing to an object and has a non-null value.
bool Empty(void) const THROWS_NONE
Check if CRef is empty â not pointing to any object, which means having a null value.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
#define BEGIN_SCOPE(ns)
Define a new scope.
TPending & SetPending(void)
Assign a value to Pending data member.
const TDenseg & GetDenseg(void) const
Get the variant data.
bool CanGet(void) const
Check if it is safe to call Get method.
const TStarts & GetStarts(void) const
Get the Starts member data.
TDim GetDim(void) const
Get the Dim member data.
void SetSegs(TSegs &value)
Assign a value to Segs data member.
vector< ENa_strand > TStrands
const TLens & GetLens(void) const
Get the Lens member data.
vector< TSignedSeqPos > TStarts
vector< CRef< CSeq_id > > TIds
vector< CRef< CSeq_id > > TIds
const TIds & GetIds(void) const
Get the Ids member data.
bool IsDendiag(void) const
Check if variant Dendiag is selected.
TDim GetDim(void) const
Get the Dim member data.
const TDendiag & GetDendiag(void) const
Get the variant data.
bool IsDisc(void) const
Check if variant Disc is selected.
TType GetType(void) const
Get the Type member data.
bool IsSetDim(void) const
dimensionality Check if a value has been assigned to Dim data member.
const TIds & GetIds(void) const
Get the Ids member data.
vector< CRef< CScore > > TScores
TNumseg GetNumseg(void) const
Get the Numseg member data.
const TScores & GetScores(void) const
Get the Scores member data.
const TDisc & GetDisc(void) const
Get the variant data.
const TStrands & GetStrands(void) const
Get the Strands member data.
const Tdata & Get(void) const
Get the member data.
const TSegs & GetSegs(void) const
Get the Segs member data.
bool IsDenseg(void) const
Check if variant Denseg is selected.
void SetTo(TTo value)
Assign a value to To data member.
void SetId(TId &value)
Assign a value to Id data member.
void SetFrom(TFrom value)
Assign a value to From data member.
TGi GetGi(void) const
Get the variant data.
bool IsPacked_int(void) const
Check if variant Packed_int is selected.
bool IsGi(void) const
Check if variant Gi is selected.
bool IsInt(void) const
Check if variant Int is selected.
bool IsAlign(void) const
Check if variant Align is selected.
void SetData(TData &value)
Assign a value to Data data member.
const TAlign & GetAlign(void) const
Get the variant data.
const TData & GetData(void) const
Get the Data member data.
unsigned int
A callback function used to compare two keys in a database.
#define row(bind, expected)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4