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/depth__filter_8cpp_source.html below:

NCBI C++ ToolKit: src/algo/align/util/depth_filter.cpp Source File

39 using namespace ncbi

;

54  if

(

A

.Range.GetFrom() !=

B

.Range.GetFrom())

55  return A

.Range.GetFrom() <

B

.Range.GetFrom();

57  return A

.Range.GetTo() <

B

.Range.GetTo();

67  void

CollapseOnDepth(

size_t

CollapseDepth);

69  size_t

MinDepthForRange(

TSeqRange

CheckRange)

const

;

73  void

CalcStats()

const

;

76  ITERATE

(vector<SRangeDepth>, RangeIter, x_Ranges) {

77

cerr << RangeIter->Range <<

" : "

<< RangeIter->Depth << endl;

88  if

(x_Ranges.empty()) {

90

x_Ranges.push_back(NewRangeDepth);

94

vector<SRangeDepth> News;

97  ERASE_ITERATE

(vector<SRangeDepth>, RangeDepthIter, x_Ranges) {

99  if

(RemainRange.

Empty

()) {

103  if

( RangeDepthIter->Range == RemainRange) {

104

RangeDepthIter->Depth++;

110  if

(RemainRange.

GetTo

() < RangeDepthIter->Range.GetFrom()) {

114  bool

EraseCurr =

false

;

118  SRangeDepth

InterRangeDepth(Inter, RangeDepthIter->Depth + 1);

119

News.push_back(InterRangeDepth);

128

News.push_back(NewPrev);

130  if

(RemainRange.

GetTo

() >= Inter.

GetTo

()) {

134

RemainRange = NewAfterRange;

137  if

(RangeDepthIter->Range.GetFrom() < Inter.

GetFrom

()) {

139

OldPrevRange.

SetFrom

(RangeDepthIter->Range.GetFrom());

141  SRangeDepth

OldPrev(OldPrevRange, RangeDepthIter->Depth);

142

News.push_back(OldPrev);

144  if

(RangeDepthIter->Range.GetTo() > Inter.

GetTo

()) {

147

OldAfterRange.

SetTo

(RangeDepthIter->Range.GetTo());

148  SRangeDepth

OldAfter(OldAfterRange, RangeDepthIter->Depth);

149

News.push_back(OldAfter);

162

x_Ranges.push_back(RemainRangeDepth);

166

x_Ranges.insert(x_Ranges.end(), News.begin(), News.end());

167  sort

(x_Ranges.begin(), x_Ranges.end());

173

vector<SRangeDepth> Result;

175  ITERATE

(vector<SRangeDepth>, RangeDepthIter, x_Ranges) {

179  if

(Result.empty() ||

180

!RangeDepthIter->Range.AbuttingWith( Result.back().Range )) {

181

Result.push_back(*RangeDepthIter);

186  if

((Result.back().Depth <= CollapseDepth) ^

187

(RangeDepthIter->Depth <= CollapseDepth)) {

188

Result.push_back(*RangeDepthIter);

193

Result.back().Depth =

min

(Result.back().Depth, RangeDepthIter->Depth);

194

Result.back().Range += RangeDepthIter->Range;

197

x_Ranges.swap(Result);

198  sort

(x_Ranges.begin(), x_Ranges.end());

205  ITERATE

(vector<SRangeDepth>, RangeIter, x_Ranges) {

207

Result =

min

(Result, RangeIter->Depth);

215

vector<SRangeDepth> News;

218  ITERATE

(vector<SRangeDepth>, RangeIter, x_Ranges) {

220  if

(Prev != RangeIter->Range &&

224

Zero.

SetTo

(RangeIter->Range.GetFrom()-1);

226

News.push_back(ZeroRD);

228

Prev = RangeIter->Range;

231

x_Ranges.insert(x_Ranges.end(), News.begin(), News.end());

232  sort

(x_Ranges.begin(), x_Ranges.end());

237  size_t

AccumBases = 0;

238  size_t

AccumBaseDepth = 0;

239  size_t

AccumRangeDepth = 0;

240  size_t

RangeCount = 0;

242

vector<size_t> SortBaseDepths;

243

vector<size_t> SortRangeDepths;

246  ITERATE

(vector<SRangeDepth>, RangeDepthIter, x_Ranges) {

247

AccumBases += RangeDepthIter->Range.GetLength();

248

AccumBaseDepth += (RangeDepthIter->Range.GetLength() * RangeDepthIter->Depth);

249

AccumRangeDepth += RangeDepthIter->Depth;

252  for

(

size_t i

= 0;

i

< RangeDepthIter->Range.GetLength();

i

++) {

253

SortBaseDepths.push_back(RangeDepthIter->Depth);

255

SortRangeDepths.push_back(RangeDepthIter->Depth);

258  double

BaseMean = (double(AccumBaseDepth) / double(AccumBases));

259  double

RangeMean = (double(AccumRangeDepth) / double(RangeCount));

261  sort

(SortBaseDepths.begin(), SortBaseDepths.end());

262  sort

(SortRangeDepths.begin(), SortRangeDepths.end());

264  size_t

BaseMedian = SortBaseDepths[SortBaseDepths.size()/2];

265  size_t

RangeMedian = SortRangeDepths[SortRangeDepths.size()/2];

267  size_t

PrevValue = SortRangeDepths.front();

268  size_t

PrevCounts = 0;

269  size_t

BestValue=PrevValue, BestCounts=0;

270  ITERATE

(vector<size_t>, ValueIter, SortRangeDepths) {

271  if

( (*ValueIter) == PrevValue) {

274  if

(PrevCounts > BestCounts) {

275

BestValue = PrevValue;

276

BestCounts = PrevCounts;

278

PrevValue = *ValueIter;

282  size_t

RangeMode = BestValue;

284

PrevValue = SortBaseDepths.front();

286

BestValue=PrevValue, BestCounts=0;

287  ITERATE

(vector<size_t>, ValueIter, SortBaseDepths) {

288  if

( (*ValueIter) == PrevValue) {

291  if

(PrevCounts > BestCounts) {

292

BestValue = PrevValue;

293

BestCounts = PrevCounts;

295

PrevValue = *ValueIter;

299  size_t

BaseMode = BestValue;

302

cerr <<

"BaseMean: "

<< BaseMean << endl;

303

cerr <<

"RangeMean: "

<< RangeMean << endl;

304

cerr <<

"BaseMedian: "

<< BaseMedian << endl;

305

cerr <<

"RangeMedian: "

<< RangeMedian << endl;

306

cerr <<

"BaseMode: "

<< BaseMode << endl;

307

cerr <<

"RangeMode: "

<< RangeMode << endl;

320  double

PctIdentRescue)

330  TSeqRange

Range = (*AlignIter)->GetSeqRange(FilterOnRow);

342  TSeqRange

Range = (*AlignIter)->GetSeqRange(FilterOnRow);

346  if

(CurrDepth <= DepthCutoff) {

347

Output.push_back(*AlignIter);

351  double

PctIdentUngap = 0.0;

357  TSeqPos

AlignLen = (*AlignIter)->GetAlignLength(

false

);

358

PctIdentUngap = (double(NumIdent) / AlignLen) * 100.0;

362  if

(PctIdentUngap >= PctIdentRescue) {

363

Output.push_back(*AlignIter);

374  size_t

DepthCutoff,

double

PctIdentRescue)

378

FilterOneRow(Input, FilteredQ, 0, DepthCutoff, PctIdentRescue);

379

FilterOneRow(Input, FilteredS, 1, DepthCutoff, PctIdentRescue);

383

TAlignList::const_iterator AlignIterQ = FilteredQ.begin(),

384

EndQ = FilteredQ.end();

385

TAlignList::const_iterator AlignIterS = FilteredS.begin(),

386

EndS = FilteredS.end();

389  if

(AlignIterQ == EndQ || AlignIterS == EndS)

break

;

391  if

(*AlignIter == *AlignIterQ && *AlignIter == *AlignIterS) {

392

Output.push_back(*AlignIter);

395  if

(*AlignIter == *AlignIterQ) ++AlignIterQ;

396  if

(*AlignIter == *AlignIterS) ++AlignIterS;

static void FilterOneRow(const list< CRef< objects::CSeq_align > > &Input, list< CRef< objects::CSeq_align > > &Output, int FilterOnRow, size_t DepthCutoff=5, double PctIdentRescue=95.0)

static void FilterBothRows(const list< CRef< objects::CSeq_align > > &Input, list< CRef< objects::CSeq_align > > &Output, size_t DepthCutoff=5, double PctIdentRescue=95.0)

void CollapseOnDepth(size_t CollapseDepth)

vector< SRangeDepth > x_Ranges

void AddRange(TSeqRange NewRange)

size_t MinDepthForRange(TSeqRange CheckRange) const

@ eScore_PercentIdentity_Ungapped

static unsigned char depth[2 *(256+1+29)+1]

bool operator<(const SRangeDepth &A, const SRangeDepth &B)

list< CRef< CSeq_align > > TAlignList

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.

#define VECTOR_ERASE(Var, Cont)

Use this macro inside body of ERASE_ITERATE cycle to erase from vector-like container.

bool NotEmpty(void) const

bool AbuttingWith(const TThisType &r) const

bool IntersectingWith(const TThisType &r) const

TThisType IntersectionWith(const TThisType &r) const

CRange< TSeqPos > TSeqRange

typedefs for sequence ranges

#define END_NCBI_SCOPE

End previously defined NCBI scope.

#define BEGIN_NCBI_SCOPE

Define ncbi namespace.

void SetFrom(TFrom value)

Assign a value to From data member.

TTo GetTo(void) const

Get the To member data.

TFrom GetFrom(void) const

Get the From member data.

void SetTo(TTo value)

Assign a value to To data member.

constexpr auto sort(_Init &&init)

Magic spell ;-) needed for some weird compilers... very empiric.

SRangeDepth(TSeqRange range)

SRangeDepth(TSeqRange range, size_t depth)


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