A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/doxyhtml/merge__tree_8cpp_source.html below:

NCBI C++ ToolKit: src/algo/align/mergetree/merge_tree.cpp Source File

63

AlignIds.

insert

(EquivIter->AlignId);

69  size_t

MisMatches = 0;

71

Matches += EquivIter->Matches;

72

MisMatches += EquivIter->MisMatches;

78  size_t

MisMatches = 0;

80

Matches += EquivIter->Matches;

81

MisMatches += EquivIter->MisMatches;

83  return

Matches+MisMatches;

88  if

(

A

->GetSeqStart(0) !=

B

->GetSeqStart(0))

89  return

(

A

->GetSeqStart(0) <

B

->GetSeqStart(0));

90  else if

(

A

->GetSeqStop(0) !=

B

->GetSeqStop(0))

91  return

(

A

->GetSeqStop(0) <

B

->GetSeqStop(0));

92  else if

(

A

->GetSeqStart(1) !=

B

->GetSeqStart(1))

93  return

(

A

->GetSeqStart(1) <

B

->GetSeqStart(1));

94  else if

(

A

->GetSeqStop(1) !=

B

->GetSeqStop(1))

95  return

(

A

->GetSeqStop(1) <

B

->GetSeqStop(1));

97  return A

->GetSeqStrand(0) <

B

->GetSeqStrand(0);

102  if

(

A

->GetSeqStart(0) !=

B

->GetSeqStart(0))

103  return

(

A

->GetSeqStart(0) >

B

->GetSeqStart(0));

104  else if

(

A

->GetSeqStop(0) !=

B

->GetSeqStop(0))

105  return

(

A

->GetSeqStop(0) >

B

->GetSeqStop(0));

106  else if

(

A

->GetSeqStart(1) !=

B

->GetSeqStart(1))

107  return

(

A

->GetSeqStart(1) <

B

->GetSeqStart(1));

108  else if

(

A

->GetSeqStop(1) !=

B

->GetSeqStop(1))

109  return

(

A

->GetSeqStop(1) <

B

->GetSeqStop(1));

111  return A

->GetSeqStrand(0) <

B

->GetSeqStrand(0);

119

InterA =

int

(

A

.GetSeqStart(1)) -

int

(

A

.GetSeqStart(0));

121

InterA =

A

.GetSeqStop(1) +

A

.GetSeqStart(0);

132  return

(InterA < InterB);

137  return

(

A

->GetAlignLength(

false

) <

B

->GetAlignLength(

false

));

143

TEquivList::const_iterator AI, BI;

144

TEquivList::const_iterator AE, BE;

153  if

(AI == AE || BI == BE) {

157  if

(AI->Query == BI->Query && AI->Subjt == BI->Subjt) {

163  if

(AI->Query.GetFrom() < BI->Query.GetFrom()) {

164 #ifdef MERGE_TREE_VERBOSE_DEBUG 165

cerr <<

" < "

<< *AI << endl;

170  else if

(BI->Query.GetFrom() < AI->Query.GetFrom()) {

171 #ifdef MERGE_TREE_VERBOSE_DEBUG 172

cerr <<

" > "

<< *BI << endl;

178  if

(AI->Subjt.GetFrom() < BI->Subjt.GetFrom()) {

179 #ifdef MERGE_TREE_VERBOSE_DEBUG 180

cerr <<

" < "

<< *AI << endl;

185  else if

(BI->Subjt.GetFrom() < AI->Subjt.GetFrom()) {

186 #ifdef MERGE_TREE_VERBOSE_DEBUG 187

cerr <<

" > "

<< *BI << endl;

193 #ifdef MERGE_TREE_VERBOSE_DEBUG 194

cerr <<

" < "

<< *AI << endl;

195

cerr <<

" > "

<< *BI << endl;

206 #ifdef MERGE_TREE_VERBOSE_DEBUG 207

cerr <<

" > "

<< *AI << endl;

212 #ifdef MERGE_TREE_VERBOSE_DEBUG 213

cerr <<

" < "

<< *BI << endl;

251  return max

(

D

, DeltaInt);

261 #ifdef MERGE_TREE_VERBOSE_DEBUG 269  for

(L=0; L < (

int

)

Path

.size(); L++) {

270

CurrPath.push_back(

Path

[L] );

271  int

CurrScore = Tree.

Score

(CurrPath);

272  if

(CurrScore >= BestScore) {

274

BestScore = CurrScore;

280  for

(

F

=

BL

;

F

>= 0;

F

--) {

281

CurrPath.insert(CurrPath.begin(),

Path

[

F

]);

282  int

CurrScore = Tree.

Score

(CurrPath);

283  if

(CurrScore >= BestScore) {

284 #ifdef MERGE_TREE_VERBOSE_DEBUG 287

BestScore = CurrScore;

292 #ifdef MERGE_TREE_VERBOSE_DEBUG 293  if

(

BF

> 0 ||

BL

< (

int

)(

Path

.size()-1) ) {

294

cerr <<

"s_FindBestSubRange : "

<<

BF

<<

" : "

<<

BL

<<

" : "

<< BestScore <<

" of "

<<

Path

.size()-1 << endl;

311  typedef

pair<CSeq_id_Handle, ENa_strand>

TSeqIdPair

;

312  typedef

pair<TSeqIdPair, TSeqIdPair>

TMapKey

;

313  typedef

vector<CRef<CSeq_align> >

TAlignVec

;

326

AlignMap[Key].push_back(*AlignIter);

336  ITERATE

(TAlignMap, MapIter, AlignMap) {

342

QueryBSH =

m_Scope

->GetBioseqHandle(QueryIDH);

343

SubjtBSH =

m_Scope

->GetBioseqHandle(SubjtIDH);

350 #ifdef MERGE_TREE_VERBOSE_DEBUG 351

cerr << AID <<

"\t"

<< (*AlignIter)->GetSeqRange(0)

352

<<

"\t"

<< (*AlignIter)->GetSeqRange(1) << endl;

357 #ifdef MERGE_TREE_VERBOSE_DEBUG 358

cerr <<

"OrigEquivs; "

<< OrigEquivs.size() << endl;

362  if

(QueryBSH && SubjtBSH) {

363

EquivRangeBuilder.

CalcMatches

(QueryBSH, SubjtBSH, OrigEquivs);

366

Iter->Matches = Iter->Query.GetLength();

367

Iter->MisMatches = 0;

375 

CRangeCollection<TSeqPos> QRC, SRC;

376

CRangeCollection<TSeqPos> DQRC, DSRC;

377

ITERATE(TEquivList, Iter, OrigEquivs) {

378

if(QRC.IntersectingWith(Iter->Query)) {

379

CRangeCollection<TSeqPos> T(Iter->Query);

380

T.IntersectWith(QRC);

383

if(SRC.IntersectingWith(Iter->Subjt)) {

384

CRangeCollection<TSeqPos> T(Iter->Subjt);

385

T.IntersectWith(SRC);

391

CRangeCollection<TSeqPos> NQRC, NSRC;

392

NQRC += QRC.GetLimits();

393

NSRC += SRC.GetLimits();

397

vector<TSeqPos> RQs, RSs;

398

RQs.push_back(QRC.GetFrom());

399

ITERATE(CRangeCollection<TSeqPos>, Iter, NQRC) {

400

RQs.push_back(Iter->GetFrom());

401

RQs.push_back(Iter->GetTo());

402

cerr << "QZ: " << *Iter << endl;

404

RQs.push_back(QRC.GetTo()+1);

405

RSs.push_back(SRC.GetFrom());

406

ITERATE(CRangeCollection<TSeqPos>, Iter, NSRC) {

407

RSs.push_back(Iter->GetFrom());

408

RSs.push_back(Iter->GetTo());

409

cerr << "SZ: " << *Iter << endl;

411

RSs.push_back(SRC.GetTo()+1);

413

vector<TSeqPos>::iterator NE;

414

sort(RQs.begin(), RQs.end());

415

NE = unique(RQs.begin(), RQs.end());

416

RQs.erase(NE, RQs.end());

417

sort(RSs.begin(), RSs.end());

418

NE = unique(RSs.begin(), RSs.end());

419

RSs.erase(NE, RSs.end());

423

CMergeTree::SScoring QuadScoring;

424

QuadScoring.GapExtend = 0;

426

ITERATE(TEquivList, Iter, OrigEquivs) {

427

QR.CombineWith(Iter->Query);

428

SR.CombineWith(Iter->Subjt);

430

cerr << QR << "\t" << SR << endl;

431

CQuadTree QT(64, QR, SR);

432

QT.SetRecs(RQs, RSs);

433

ITERATE(TEquivList, Iter, OrigEquivs) {

438

int NodesVisited = 0;

440

NON_CONST_ITERATE(CQuadTree, QuadIter, QT) {

443

if(!QuadIter->IsLeaf)

446

if(QuadIter->Storage.empty())

449

set<int> AlignIds = s_AlignIdsFromEquivList(QuadIter->Storage);

450

cerr << QuadIter->XR << "\t" << QuadIter->YR

451

<< "\t" << QuadIter->Depth

452

<< "\t" << QuadIter->Storage.size()

453

<< "\t" << AlignIds.size()

454

<< "\t" << s_ScoreFromEquivList(QuadIter->Storage)

456

ITERATE(set<int>, AlignIdIter, AlignIds) {

457

cerr << "\t" << *AlignIdIter;

461

TEquivList LocalSplits;

462

EquivRangeBuilder.SplitIntersections(QuadIter->Storage, LocalSplits);

463

QuadIter->Storage.clear();

466

Tree.SetScoring(QuadScoring); //m_Scoring);

467

Tree.AddEquivs(LocalSplits);

473

cerr << "\t" << Path.size() << endl;

476

// CRef<CSeq_align> Merged;

477

// Merged = x_MakeSeqAlign(Path, QueryIDH, SubjtIDH);

479

// Output.push_back(Merged);

482

EquivRangeBuilder.MergeAbuttings(Path, QuadIter->Storage);

484

//QuadIter->Storage.insert(QuadIter->Storage.end(), Path.begin(), Path.end());

485

AlignIds = s_AlignIdsFromEquivList(QuadIter->Storage);

486

cerr << "\t" << QuadIter->Storage.size()

487

<< "\t" << AlignIds.size()

488

<< "\t" << s_ScoreFromEquivList(QuadIter->Storage)

490

ITERATE(set<int>, AlignIdIter, AlignIds) {

491

cerr << "\t" << *AlignIdIter;

496

cerr << "NodesVisited: " << NodesVisited << endl;

499

CRef<CSeq_align> Merged;

500

Merged = x_MakeSeqAlign(Path, QueryIDH, SubjtIDH);

503

Output.push_back(Merged);

507

ITERATE(TEquivList, PathIter, Path) {

508

AlignIds.insert(PathIter->AlignId);

510

cerr << "Aligns: " << AlignIds.size() << endl;

512

ITERATE(TEquivList, EraseIter, OrigEquivs) {

513

if( AlignIds.find(EraseIter->AlignId) != AlignIds.end()) {

514

Filtered.push_back(*EraseIter);

517

cerr << " Orig: " << OrigEquivs.size() << " Filt: " << Filtered.size() << endl;

518

OrigEquivs.swap(Filtered);

519

cerr << "_______________________________" << endl;

545

Output.push_back(Merged);

556  typedef

pair<CSeq_id_Handle, ENa_strand>

TSeqIdPair

;

557  typedef

pair<TSeqIdPair, TSeqIdPair>

TMapKey

;

558  typedef

vector<CRef<CSeq_align> >

TAlignVec

;

573

AlignMap[Key].push_back(*AlignIter);

590  ITERATE

(TAlignMap, MapIter, AlignMap) {

596

QueryBSH =

m_Scope

->GetBioseqHandle(QueryIDH);

597

SubjtBSH =

m_Scope

->GetBioseqHandle(SubjtIDH);

601

TAlignEquivListMap AlignEquivs;

609  if

(QueryBSH && SubjtBSH) {

610

EquivRangeBuilder.

CalcMatches

(QueryBSH, SubjtBSH, Temp);

613

Iter->Matches = Iter->Query.GetLength();

614

Iter->MisMatches = 0;

619

AlignEquivs[AID].insert(AlignEquivs[AID].end(), Temp.begin(), Temp.end());

620

OrigEquivs.insert(OrigEquivs.end(), Temp.begin(), Temp.end());

621 #ifdef MERGE_TREE_VERBOSE_DEBUG 622

cerr << AID <<

"\t"

<< (*AlignIter)->GetSeqRange(0)

623

<<

"\t"

<< (*AlignIter)->GetSeqRange(1) << endl;

627 #ifdef MERGE_TREE_VERBOSE_DEBUG 628

cerr <<

"OrigEquivs; "

<< OrigEquivs.size() << endl;

632  if

(QueryBSH && SubjtBSH) {

633

EquivRangeBuilder.

CalcMatches

(QueryBSH, SubjtBSH, OrigEquivs);

636

Iter->Matches = Iter->Query.GetLength();

637

Iter->MisMatches = 0;

641 #ifdef MERGE_TREE_VERBOSE_DEBUG 645  for

(

int

Loop = 0; Loop < 3; Loop++) {

646  ITERATE

(TAlignEquivListMap, OrigAlignIter, AlignEquivs) {

647  const TEquivList

& CurrAlignEquivs = OrigAlignIter->second;

650

CurrEquivs.insert(CurrEquivs.end(), AccumEquivs.begin(), AccumEquivs.end());

651

CurrEquivs.insert(CurrEquivs.end(), CurrAlignEquivs.begin(), CurrAlignEquivs.end());

677 #ifdef MERGE_TREE_VERBOSE_DEBUG 679  if

(AccumScore > NewScore)

680

cerr <<

"BACKWARDS!"

<< endl;

681

AccumScore = NewScore;

687  sort

(Abutted.begin(), Abutted.end());

689

AccumEquivs = Abutted;

692 #ifdef MERGE_TREE_VERBOSE_DEBUG 693

cerr << __LINE__ <<

":"

<< AccumEquivs.size()

694

<<

":"

<< CurrAlignEquivs.size()

695

<<

":"

<< SplitEquivs.size()

696

<<

":"

<<

Path

.size()

697

<<

":"

<< Tree.

Size

()

698

<<

":"

<< Tree.

Links

()<< endl;

711

Output.push_back(Merged);

728 #ifdef MERGE_TREE_VERBOSE_DEBUG 731  " : "

<< MapIter->second.size() <<

" aligns"

<<endl;

736

QueryBSH =

m_Scope

->GetBioseqHandle(QueryIDH);

737

SubjtBSH =

m_Scope

->GetBioseqHandle(SubjtIDH);

744  if

(QueryBSH && SubjtBSH &&

751

QueryRange += (*AlignIter)->GetSeqRange(0);

752

SubjtRange += (*AlignIter)->GetSeqRange(1);

754  if

(QueryRange.

GetTo

() >= QueryLen ||

755

SubjtRange.

GetTo

() >= SubjtLen) {

765 #ifdef MERGE_TREE_VERBOSE_DEBUG 766

cerr <<

"Unique IDs: "

<< QueryIDH.

AsString

() <<

" and "

<< SubjtIDH.

AsString

() << endl;

767

cerr <<

" Unique Split: "

<< Aligns.size() <<

" into "

<< Unique.size() <<

" and "

<< Other.size() << endl;

772  if

(!Unique.empty()) {

773

list<CRef<CSeq_align> > Ins, Outs;

774

Ins.insert(Ins.end(), Unique.begin(), Unique.end());

776 #ifdef MERGE_TREE_VERBOSE_DEBUG 777

cerr <<

" Unique Merged "

<< Ins.size() <<

" to "

<< Outs.size() << endl;

780

Other.push_back(*OutIter);

807

QueryId->Assign(*QueryIDH.

GetSeqId

());

809

Denseg.

SetIds

().push_back(QueryId);

810

Denseg.

SetIds

().push_back(SubjtId);

817  if

(EquivIter->Empty())

820

Denseg.

SetStarts

().push_back(EquivIter->Query.GetFrom());

821

Denseg.

SetStarts

().push_back(EquivIter->Subjt.GetFrom());

823

Denseg.

SetLens

().push_back(EquivIter->Query.GetLength());

825

Denseg.

SetStrands

().push_back(EquivIter->Strand);

860  const CSeq_align

& DiscAlign = **DiscAlignIter;

866

AlignGroupMap[Key].push_back(*DiscAlignIter);

876

AlignGroupMap[Key].push_back(*AlignIter);

887  bool

Intersected =

false

;

888  TSeqRange

OuterRanges[] = { (*Outer)->GetSeqRange(0), (*Outer)->GetSeqRange(1) };

892  TSeqRange

InnerRanges[] = { (*Inner)->GetSeqRange(0), (*Inner)->GetSeqRange(1) };

894  if

( OuterRanges[0].IntersectingWith(InnerRanges[0]) ||

895

OuterRanges[1].IntersectingWith(InnerRanges[1]) ) {

901

Other.push_back(*Outer);

903

Unique.push_back(*Outer);

947 #ifdef MERGE_TREE_VERBOSE_DEBUG 954  size_t CI

= IndexIter->first;

956  size_t

OI = IndexIter->second;

957

cerr <<

"Near Pair : "

<<

CI

<<

" x "

<< OI <<

" => "

<<

CD

<< endl;

964

cerr <<

"Minimum : "

<< MinI <<

" => "

<< MinD << endl;

967

cerr <<

"Aligns : "

<< AlignIter->first <<

" : "

<< AlignIter->second.size() << endl;

975

: m_EquivRangeBuilder(Original.m_EquivRangeBuilder), m_NextIndex(0)

999

NewAlignEquivs.

begin

(), NewAlignEquivs.end());

1007  size_t

BestI = NewI;

1009  size_t CI

= IndexIter->first;

1014  if

(CurrDist < BestD) {

1039  size_t CI

= IndexIter->first;

1048 #ifdef MERGE_TREE_VERBOSE_DEBUG 1056

First.

insert

(First.end(), MinEs.begin(), MinEs.end());

1057

Second.insert(Second.end(), OtherEs.begin(), OtherEs.end());

1068  if

(NearestIter->second == MinI ||

1069

NearestIter->second == OtherI) {

1089  const TEquivList

& MinEs = AlignIter->second;

1090

LastEquivs.insert(LastEquivs.end(), MinEs.begin(), MinEs.end());

1103

RemoveGroups[RemoveIter->AlignId].push_back(*RemoveIter);

1107  size_t

CurrIndex = AlignIter->first;

1110  if

(RemoveGroups.

find

(CurrEquivs.front().AlignId) == RemoveGroups.

end

()) {

1114  const TEquivList

& RemoveGroupEquivs = RemoveGroups[CurrEquivs.front().AlignId];

1117

Origs.

insert

(Origs.end(), CurrEquivs.begin(), CurrEquivs.end());

1118

Origs.insert(Origs.end(), RemoveGroupEquivs.begin(), RemoveGroupEquivs.end());

1126  if

(SplitIter->AlignId == RemoveIter->AlignId &&

1127

SplitIter->SegmtId == RemoveIter->SegmtId) {

1128  if

(SplitIter->IntersectingWith(*RemoveIter)) {

1135

Remaining.push_back(*SplitIter);

1142  if

(CurrEquivs.empty()) {

1152  if

(NearestIter->second == RemoveGroupIter->first) {

1168

vector<size_t> Indexes;

1170

Indexes.push_back(AlignIter->first);

1175  for

( OII = 0; OII < Indexes.size(); OII++) {

1183  bool

Found =

false

;

1184  for

( III = OII+1; III < Indexes.size(); III++) {

1190  if

(CurrDist < BestDist) {

1192

BestDist = CurrDist;

1213  bool

Found =

false

;

1216  size_t

CurrIndex = AlignIter->first;

1217  if

(CurrIndex == CalcIndex)

1221  if

(CurrDist < BestDist) {

1223

BestDist = CurrDist;

1244  bool

Uniform =

true

;

1246  if

(EquivIter->AlignId != Equivs.front().AlignId) {

1253  return

Equivs.front().AlignId;

1264  const int

PASSES_BEFORE_EARLY_REMOVE = 5;

1265

list<CRef<CSeq_align> > EarlyRemoves;

1271 #ifdef MERGE_TREE_VERBOSE_DEBUG 1272

cerr <<

" Starting : "

<< Aligns.size() << endl;

1276  TSeqPos

OrigMatches = 0, AllMergeMatches = 0;

1281  if

(QueryBSH && SubjtBSH) {

1282

EquivRangeBuilder.

CalcMatches

(QueryBSH, SubjtBSH, Temp);

1285

Iter->Matches = Iter->Query.GetLength();

1286

Iter->MisMatches = 0;

1290

OrigMatches += EquivIter->Matches;

1292 #ifdef MERGE_TREE_VERBOSE_DEBUG 1300  typedef

pair<int, size_t> TAlignIdScorePair;

1301  typedef

pair<TAlignIdScorePair,TAlignIdScorePair> TAlignIdScoreKey;

1303

TMergeResultMap MergeResultMap;

1304  const int

ALL_MIN = 1;

1305  const int

ALL_OTHER = 2;

1306  const int

FULL_MERGE = 3;

1307  const int

MIXED = 4;

1309  int

PassCounter = 0;

1310  while

(!OriginalGraph.

Empty

()) {

1313 #ifdef MERGE_TREE_VERBOSE_DEBUG 1314

cerr <<

" --Starting : "

<< CurrGraph.

Size

() << endl;

1322  while

(CurrGraph.

Size

() > 1) {

1323 #ifdef MERGE_TREE_VERBOSE_DEBUG 1324

cerr <<

" --++Starting : "

<< CurrGraph.

Size

() <<

" :::: "

<< PassCounter << endl;

1330  if

(MinEs.empty() || OtherEs.empty()) {

1333  else if

(!OtherEs.empty())

1339

TAlignIdScoreKey

key

;

1344 #ifdef MERGE_TREE_VERBOSE_DEBUG 1345

cerr <<

" --++MinEs id: "

<<

key

.first.first <<

" score: "

<<

key

.first.second <<

" len: "

<< MinEs.size()<< endl;

1346

cerr <<

" --++OtherEs id: "

<<

key

.second.first <<

" score: "

<<

key

.second.second <<

" len: "

<< OtherEs.size()<< endl;

1349  if

(

key

.first.first != -1 &&

key

.second.first != -1) {{

1350  if

(MergeResultMap.find(

key

) != MergeResultMap.end()) {

1351  int

MergeResult = MergeResultMap[

key

];

1352 #ifdef MERGE_TREE_VERBOSE_DEBUG 1353

cerr <<

" --++ Had Cached Value: "

<< MergeResult << endl;

1355  if

(MergeResult == FULL_MERGE) {

1356

CachedPath.insert(CachedPath.end(), MinEs.begin(), MinEs.end());

1357

CachedPath.insert(CachedPath.end(), OtherEs.begin(), OtherEs.end());

1358  sort

(CachedPath.begin(), CachedPath.end());

1359

}

else if

(MergeResult == ALL_MIN) {

1361

}

else if

(MergeResult == ALL_OTHER) {

1362

CachedPath = OtherEs;

1369  if

(CachedPath.empty()) {

1371

CurrEquivs.insert(CurrEquivs.end(), MinEs.begin(), MinEs.end());

1372

CurrEquivs.insert(CurrEquivs.end(), OtherEs.begin(), OtherEs.end());

1373  sort

(CurrEquivs.begin(), CurrEquivs.end());

1376 #ifdef MERGE_TREE_VERBOSE_DEBUG 1378

cerr <<

" --++SplitEquivs : "

<< CurrEquivs.size() <<

" to "

<< SplitEquivs.size() << endl;

1391  if

(

Path

.empty()) {

1392

Output.insert(Output.end(), EarlyRemoves.begin(), EarlyRemoves.end());

1397  sort

(Abutted.begin(), Abutted.end());

1399  if

(

key

.first.first != -1 &&

key

.second.first != -1) {{

1402 #ifdef MERGE_TREE_VERBOSE_DEBUG 1403

cerr <<

" --++Result id: "

<< ResultId <<

" score: "

<< ResultLength <<

" len: "

<< Abutted.size()<< endl;

1405  int

MergeResult = 0;

1406  if

(ResultId == -1 && ResultLength == (

key

.first.second+

key

.second.second)) {

1407

MergeResult = FULL_MERGE;

1408

}

else if

(ResultId ==

key

.first.first && ResultLength ==

key

.first.second) {

1409

MergeResult = ALL_MIN;

1410

}

else if

(ResultId ==

key

.second.first && ResultLength ==

key

.second.second) {

1411

MergeResult = ALL_OTHER;

1413

MergeResult = MIXED;

1415

MergeResultMap[

key

] = MergeResult;

1416 #ifdef MERGE_TREE_VERBOSE_DEBUG 1417

cerr <<

" --++New MergeResult: "

<< MergeResult << endl;

1423  sort

(Abutted.begin(), Abutted.end());

1427  if

(!Abutted.empty()) {

1428 #ifdef MERGE_TREE_VERBOSE_DEBUG 1429

cerr <<

" --++Merged from : "

<< MinEs.size() <<

" and "

<< OtherEs.size() << endl;

1430

cerr <<

" --++Re-inserting Merged Alignment: "

<< Abutted.size() << endl;

1443  if

(!Abutted.empty() && PassCounter > PASSES_BEFORE_EARLY_REMOVE) {{

1445  if

(ResultId != -1) {

1448  if

( (Abutted.size() == MinEs.size() &&

1449

ResultId == MinEId) ||

1450

(Abutted.size() == OtherEs.size() &&

1451

ResultId == OtherEId) ) {

1458  if

(ResultId == MinEId) {

1460

}

else if

(ResultId == OtherEId) {

1463  if

(LoserEs !=

NULL

) {

1465

AllMergeMatches += EquivIter->Matches;

1470

EarlyRemoves.push_back(Merged);

1478 #ifdef MERGE_TREE_VERBOSE_DEBUG 1480  int

MinScore = Tree.

Score

(MinEs);

1481  int

OtherScore = Tree.

Score

(OtherEs);

1482  int

NewScore = Tree.

Score

(Abutted);

1484  if

(NewScore < MinScore || NewScore < OtherScore) {

1485

cerr <<

"BACKWARDS!"

<< endl;

1493  if

(!CurrGraph.

Empty

()) {

1497

AllMergeMatches += EquivIter->Matches;

1499  if

(!LastEquivs.empty()) {

1503

Output.push_back(Merged);

1511

Output.insert(Output.end(), EarlyRemoves.begin(), EarlyRemoves.end());

1513 #ifdef MERGE_TREE_VERBOSE_DEBUG 1514

cerr <<

"Orig : "

<< OrigMatches <<

" vs "

<< AllMergeMatches << endl;

1515  if

(OrigMatches != AllMergeMatches)

1516

cerr <<

"MATCHES PROBLEM!"

<< endl;

void x_CalculateAllDistances()

CAlignDistGraph(CEquivRangeBuilder &Builder)

void AddAlignment(const TEquivList &NewAlignEquivs)

bool GetAndRemoveNearestPair(TEquivList &First, TEquivList &Second)

CEquivRangeBuilder & m_EquivRangeBuilder

void x_CalculateOneDistance(size_t CalcIndex)

void RemoveEquivs(const TEquivList &RemoveEquivs)

map< size_t, TSeqPos > TIndexDistMap

void CalculateAllDistances()

map< size_t, size_t > TIndexIndexMap

TIndexDistMap NearestDistMap

map< size_t, TEquivList > TAlignEquivListMap

TAlignEquivListMap AlignEquivMap

bool GetLastAlignEquivs(TEquivList &LastEquivs)

TIndexIndexMap NearestMap

CRef< CDense_seg > FillUnaligned() const

Create a new dense-seg with added all unaligned pieces (implicit inserts), if any,...

void Compact()

Join adjacent mergeable segments to create a more compact alignment.

void Assign(const CSerialObject &obj, ESerialRecursionMode how=eRecursive)

overloaded Assign()

void CalcMatches(objects::CBioseq_Handle QueryHandle, objects::CBioseq_Handle SubjtHandle, TEquivList &Equivs)

bool MergeAbuttings(const TEquivList &Originals, TEquivList &Merges)

void ExtractRangesFromSeqAlign(const objects::CSeq_align &Alignment, TEquivList &Equivs)

bool SplitIntersections(const TEquivList &Originals, TEquivList &Splits)

static TSeqPos Distance(const CEquivRange &A, const CEquivRange &B)

int Score(const TEquivList &Path) const

void SetScoring(SScoring Scoring)

TInterruptFnPtr SetInterruptCallback(TInterruptFnPtr Callback, void *CallbackData)

void Search(TEquivList &Path, bool Once=false)

void AddEquivs(const TEquivList &Equivs)

const CSeq_id & GetSeq_id(TDim row) const

Get seq-id (the first one if segments have different ids).

ENa_strand GetSeqStrand(TDim row) const

Get strand (the first one if segments have different strands).

void Validate(bool full_test=false) const

pair< TSeqIdPair, TSeqIdPair > TMapKey

void x_SplitGlobalUnique(const TAlignVec &Input, TAlignVec &Unique, TAlignVec &Other)

void Merge(const list< CRef< objects::CSeq_align > > &Input, list< CRef< objects::CSeq_align > > &Output)

void x_MakeMergeableGroups(list< CRef< objects::CSeq_align > > Input, TAlignGroupMap &AlignGroupMap)

vector< CRef< objects::CSeq_align > > TAlignVec

void Merge_Dist(const list< CRef< objects::CSeq_align > > &Input, list< CRef< objects::CSeq_align > > &Output)

void Merge_Pairwise(const list< CRef< objects::CSeq_align > > &Input, list< CRef< objects::CSeq_align > > &Output)

CRef< objects::CSeq_align > x_MakeSeqAlign(TEquivList &Equivs, objects::CSeq_id_Handle QueryIDH, objects::CSeq_id_Handle SubjtIDH)

void Merge_AllAtOnce(const list< CRef< objects::CSeq_align > > &Input, list< CRef< objects::CSeq_align > > &Output)

CMergeTree::TInterruptFnPtr Callback

objects::CScope * m_Scope

pair< objects::CSeq_id_Handle, objects::ENa_strand > TSeqIdPair

CMergeTree::SScoring m_Scoring

void x_Merge_Dist_Impl(TAlignVec &Aligns, objects::CSeq_id_Handle QueryIDH, objects::CSeq_id_Handle SubjtIDH, objects::CBioseq_Handle QueryBSH, objects::CBioseq_Handle SubjtBSH, list< CRef< objects::CSeq_align > > &Output)

const_iterator begin() const

const_iterator end() const

iterator_bool insert(const value_type &val)

const_iterator find(const key_type &key) const

iterator_bool insert(const value_type &val)

bool s_SortEquivBySubjt(const CEquivRange &A, const CEquivRange &B)

vector< CEquivRange > TEquivList

string Path(const string &dir, const string &file)

unsigned int TSeqPos

Type for sequence locations and lengths.

#define ITERATE(Type, Var, Cont)

ITERATE macro to sequence through container elements.

#define ERASE_ITERATE(Type, Var, Cont)

Non-constant version with ability to erase current element, if container permits.

int TSignedSeqPos

Type for signed sequence position.

#define NON_CONST_ITERATE(Type, Var, Cont)

Non constant version of ITERATE macro.

#define ERR_POST(message)

Error posting with file, line number information but without error codes.

void Error(CExceptionArgs_Base &args)

#define NCBI_THROW(exception_class, err_code, message)

Generic macro to throw an exception, given the exception class, error code and message string.

string ReportAll(TDiagPostFlags flags=eDPF_Exception) const

Report all exceptions.

#define MSerial_AsnText

I/O stream manipulators –.

virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)

Optimized implementation of CSerialObject::Assign, which is not so efficient.

CConstRef< CSeq_id > GetSeqId(void) const

static CSeq_id_Handle GetHandle(const CSeq_id &id)

Normal way of getting a handle, works for any seq-id.

string AsString(void) const

bool CanGetInst_Length(void) const

TInst_Length GetInst_Length(void) const

TThisType IntersectionWith(const TThisType &r) const

#define END_NCBI_SCOPE

End previously defined NCBI scope.

#define BEGIN_NCBI_SCOPE

Define ncbi namespace.

TTo GetTo(void) const

Get the To member data.

TFrom GetFrom(void) const

Get the From member data.

TLens & SetLens(void)

Assign a value to Lens data member.

void SetSegs(TSegs &value)

Assign a value to Segs data member.

void SetDim(TDim value)

Assign a value to Dim data member.

void SetType(TType value)

Assign a value to Type data member.

TStarts & SetStarts(void)

Assign a value to Starts data member.

TStrands & SetStrands(void)

Assign a value to Strands data member.

bool IsDisc(void) const

Check if variant Disc is selected.

void SetNumseg(TNumseg value)

Assign a value to Numseg data member.

TIds & SetIds(void)

Assign a value to Ids data member.

const TDisc & GetDisc(void) const

Get the variant data.

const Tdata & Get(void) const

Get the member data.

const TSegs & GetSegs(void) const

Get the Segs member data.

@ eType_partial

mapping pieces together

unsigned int

A callback function used to compare two keys in a database.

bool s_SortSeqAlignByQuery_Subjt(CRef< CSeq_align > A, CRef< CSeq_align > B)

void s_EquivDiff(const TEquivList &A, const TEquivList &B)

bool s_SortSeqAlignByIntercept(CRef< CSeq_align > A, CRef< CSeq_align > B)

bool s_SortSeqAlignByLength(CRef< CSeq_align > A, CRef< CSeq_align > B)

TSeqPos s_AlignDist(const CSeq_align &A, const CSeq_align &B)

set< int > s_AlignIdsFromEquivList(const TEquivList &Equivs)

TSignedSeqPos s_SeqAlignIntercept(const CSeq_align &A)

bool s_SortSeqAlignByQueryMinus_Subjt(CRef< CSeq_align > A, CRef< CSeq_align > B)

size_t s_LengthFromEquivList(const TEquivList &Equivs)

size_t s_ScoreFromEquivList(const TEquivList &Equivs)

int s_UniformAlignId(const TEquivList &Equivs)

void s_FindBestSubRange(const CMergeTree &Tree, const TEquivList &Path)

constexpr auto sort(_Init &&init)

const struct ncbi::grid::netcache::search::fields::KEY key

#define F(x)

Make a parametrized function appear to have only one variable.


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