ii = (strand ==
ePlus) ?
i: SeqLen()-1-
i;
48 if(ii < 0 || ii+2 >= SeqLen())
return false;
49 else if(ss[ii] !=
enA|| ss[ii+1] !=
enT|| ss[ii+2] !=
enG)
return false;
57 if(ii < 0 || ii+2 >=
SeqLen())
return false;
58 if((ss[ii] !=
enT|| ss[ii+1] !=
enA|| ss[ii+2] !=
enA) &&
59(ss[ii] !=
enT|| ss[ii+1] !=
enA|| ss[ii+2] !=
enG) &&
60(ss[ii] !=
enT|| ss[ii+1] !=
enG|| ss[ii+2] !=
enA))
return false;
66 if(strand ==
ePlus) {
75 if(strand ==
ePlus) {
86 if(ii-1 < 0 || ii >=
SeqLen())
return false;
87 if(ss[ii-1] !=
enA|| ss[ii] !=
enG)
return false;
95 if(ii < 0 || ii+1 >=
SeqLen())
return false;
96 if(ss[ii] !=
enG|| ss[ii+1] !=
enT)
return false;
112 return&ss.front()+ii;
132 if(
a>
b)
return0;
133 doublescore =
m_cdrscr[strand][frame][
b];
134 if(
a> 0) score -=
m_cdrscr[strand][frame][
a-1];
153 _ASSERT(strand == 0 || strand == 1);
186 TSignedSeqPosx =
a.ReadingFrame().NotEmpty() ?
a.ReadingFrame().GetFrom() :
a.Limits().GetFrom();
187 TSignedSeqPosy =
b.ReadingFrame().NotEmpty() ?
b.ReadingFrame().GetFrom() :
b.Limits().GetFrom();
190 return a.ID()<
b.ID();
216 return a.ID()==
m_id;
222 return(
a.MaxCdsLimits().Empty() ?
a.Limits().GetFrom() :
a.MaxCdsLimits().GetFrom() );
235: m_acceptor(
a), m_donor(d), m_start(stt), m_stop(stp), m_cdr(cr), m_ncdr(ncr), m_intrg(ing),
236m_align_list(cls), m_fshifts(initial_fshifts), m_map(from,to), m_chunk_start(from), m_chunk_stop(to), m_mpp(mpp)
243 for(
unsigned int i= 1;
i< align.
Exons().
size(); ++
i) {
244 if(!align.
Exons()[
i-1].m_ssplice || !align.
Exons()[
i].m_fsplice) {
245 inthole_len = align.
Exons()[
i].GetFrom()-align.
Exons()[
i-1].GetTo()-1;
246 if(hole_len <= intron_params.
MinLen()) {
250 if(hole_len%3 != 0) {
252p = (p+align.
Exons()[
i].GetFrom())/2;
285 for(
intstrand = 0; strand < 2; ++strand) {
294 for(
intframe = 0; frame < 3; ++frame) {
299 for(
intph = 0; ph < 2; ++ph) {
304}
catch(bad_alloc&) {
311 intleft = ig->first;
312 intright = ig->first+ig->second-1;
320 for(
intpnt = left; pnt <= right; ++pnt) {
333 for(
intjj = ig->first; jj <= ig->
first+ (
int)ig->second->GetInDelV().length() - 1; ++jj) {
347 const intRepeatMargin = 25;
348 for(
intrpta = 0; rpta <
len; ) {
349 while(rpta <
len&&
isupper(sequence[rpta]))
352 while(rptb+1 <
len&&
islower(sequence[rptb+1]))
354 if(rptb-rpta+1 > 2*RepeatMargin) {
356repeats[
ePlus].insert(
i);
372 charc = sequence[
i];
378 const intNLimit = 6;
410 boolopposite =
false;
413 if(it == jt)
continue;
423align.
Remap(mapper);
445 if(strand ==
eMinus)
swap(extraNs5p,extraNs3p);
450mRNA.insert(mRNA.begin(),extraNs5p,
enN);
451mRNA.insert(mRNA.end(),extraNs3p,
enN);
455 for(
intk = extraNs5p; k < (
int)mRNA.size()-extraNs3p; ++k) {
457 if(strand ==
ePlus) {
495 for(
intpnt =
a; pnt <=
b; ++pnt) {
501 for(
intpnt =
a; pnt <=
b; ++pnt) {
518 for(
intpnt =
a; pnt <=
b; ++pnt) {
526 for(
intpnt =
a; pnt <=
b; ++pnt) {
541allaligns.
insert(align);
548repeats[strand].erase(
i);
558 intff = (strand ==
ePlus) ? 2-right%3 : right%3;
559 for(
intframe = 0; frame < 3; ++frame) {
566 if(!e->m_ssplice && right < align.
Limits().
GetTo()) {
567ff = (strand ==
ePlus) ? 2-right%3 : right%3;
568 for(
intframe = 0; frame < 3; ++frame) {
594 const intRepeatFreeMargin = 75;
622 for(
int i=
max(0,
limits.GetFrom()-RepeatFreeMargin);
i<
limits.GetFrom(); ++
i)
623repeats[align.
Strand()].erase(
i);
627repeats[align.
Strand()].erase(
i);
632 for(
intstrand = 0; strand < 2; ++strand) {
633 for(
int i: repeats[strand]) {
662 intstrand = algn.
Strand();
666 for(
unsigned intk = 1; k < algn.
Exons().size(); ++k)
668 if(algn.
Exons()[k-1].m_ssplice)
670 int i= algn.
Exons()[k-1].GetTo();
674 if(algn.
Exons()[k].m_fsplice)
676 int i= algn.
Exons()[k].GetFrom();
678 else m_dscr[strand][
i-1] = 0;
682 for(
unsigned intk = 1; k < algn.
Exons().size(); ++k)
684 intintrona = algn.
Exons()[k-1].GetTo()+1;
685 intintronb = algn.
Exons()[k].GetFrom()-1;
687 if(algn.
Exons()[k-1].m_ssplice)
695 if(algn.
Exons()[k].m_fsplice)
703 if(algn.
Exons()[k-1].m_ssplice && algn.
Exons()[k].m_fsplice)
705 for(
intpnt = introna; pnt <= intronb; ++pnt)
714 for(
unsigned intk = 0; k < algn.
Exons().size(); ++k)
716 intexona = algn.
Exons()[k].GetFrom();
717 intexonb = algn.
Exons()[k].GetTo();
718 for(
intpnt = exona; pnt <= exonb; ++pnt)
736 if(strand ==
ePlus)
a+= 3;
750 for(
intstrand = 0; strand < 2; ++strand)
755 for(
intframe = 0; frame < 3; ++frame)
763 for(
intstrand = 0; strand < 2; ++strand)
772 if(strand ==
ePlus)
816 intstrand = algn.
Strand();
818 if(cds_lim.
Empty())
continue;
820 if(strand ==
ePlus)
822 for(
unsigned intk = 0; k < algn.
Exons().
size(); ++k) {
832 for(
unsigned intk = 0; k < algn.
Exons().
size(); ++k) {
841 for(
intstrand = 0; strand < 2; ++strand)
849 if(strand ==
ePlus)
852lstp =
max(
int(
i)+1,lstp);
858lstp =
max(
int(
i)-2,lstp);
865 for(
intstrand = 0; strand < 2; ++strand)
874 if(score ==
BadScore()) score = 0;
879 if(score ==
BadScore()) score = 0;
884 if(pcsf_slice !=
nullptr) {
885 auto& score = (*pcsf_slice->
m_scoresp)[strand];
891 if(pcsf_slice->
m_map!=
nullptr)
897 if(codon_left < 0 || codon_left >
len-3)
899 intframe = strand ==
ePlus? (3-codon_left%3)%3 : (2+codon_left%3)%3;
900 if(pcsf_score > 0) {
901 for(
intstep = 0; step < 3; ++step)
902 m_cdrscr[strand][frame][codon_left+step] = pcsf_score;
907 for(
intframe = 0; frame < 3; ++frame)
932 if(strand ==
ePlus)
934codonshift = (frame+
i)%3;
939codonshift = (frame-(
int)
i)%3;
940 if(codonshift < 0) codonshift += 3;
944 doublescore =
m_cdr.
Score(s,ii,codonshift);
945 if(score ==
BadScore()) score = 0;
954lstp[
i] =
max(lstp[
i-1],lstp[
i]);
960 for(
intstrand = 0; strand < 2; ++strand)
962 for(
intframe = 0; frame < 3; ++frame)
976left =
i+1-(strand==
ePlus?
t.Left():
t.Right());
977right =
i+(strand==
ePlus?
t.Right():
t.Left());
979right =
min(
len-1,right);
985left =
i+1-(strand==
ePlus?
t.Left():
t.Right());
986right =
i+(strand==
ePlus?
t.Right():
t.Left());
988right =
min(
len-1,right);
994left =
i+1-(strand==
ePlus?
t.Left():
t.Right());
995right =
i+(strand==
ePlus?
t.Right():
t.Left());
997right =
min(
len-1,right);
1003left =
i+1-(strand==
ePlus?
t.Left():
t.Right());
1004right =
i+(strand==
ePlus?
t.Right():
t.Left());
1005left =
max(0,left);
1006right =
min(
len-1,right);
1016 intstrand = algn.
Strand();
1018 if(algn.
Exons().front().m_fsplice_sig ==
"XX"|| algn.
Exons().front().m_ssplice_sig ==
"XX") {
1021 m_sttscr[strand][p] = consensuspenalty;
1024 m_stpscr[strand][p] = consensuspenalty;
1029 if(algn.
Exons().back().m_fsplice_sig ==
"XX"|| algn.
Exons().back().m_ssplice_sig ==
"XX") {
1032 m_stpscr[strand][p] = consensuspenalty;
1035 m_sttscr[strand][p] = consensuspenalty;
1041 const intNonConsensusMargin = 50;
1042 if(consensuspenalty !=
BadScore())
1047 intstrand = algn.
Strand();
1050 for(
unsigned intk = 1; k < algn.
Exons().
size(); ++k)
1052 if(algn.
Exons()[k-1].m_ssplice && algn.
Exons()[k].m_fsplice)
continue;
1054 int a= algn.
Exons()[k-1].GetTo();
1055 int b= algn.
Exons()[k].GetFrom();
1058 if(i <= a+NonConsensusMargin || i >=
b-NonConsensusMargin)
1062 m_dscr[strand][
i] = consensuspenalty;
1068 m_ascr[strand][
i] = consensuspenalty;
1075 if(strand ==
ePlus)
1077 if(!algn.
HasStart() && algn.
Exons().front().m_ssplice_sig !=
"XX")
1079 int a=
max(2,lim.
GetFrom()-NonConsensusMargin);
1085 m_sttscr[strand][
i] = consensuspenalty;
1091 m_dscr[strand][
i] = consensuspenalty;
1097 m_ascr[strand][
i] = consensuspenalty;
1103 if(!algn.
HasStop() && algn.
Exons().back().m_fsplice_sig !=
"XX")
1106 int b=
min(
len-4,lim.
GetTo()+NonConsensusMargin);
1111 m_stpscr[strand][
i] = consensuspenalty;
1117 m_dscr[strand][
i] = consensuspenalty;
1123 m_ascr[strand][
i] = consensuspenalty;
1131 if(!algn.
HasStart() && algn.
Exons().back().m_fsplice_sig !=
"XX")
1134 int b=
min(
len-4,lim.
GetTo()+NonConsensusMargin);
1139 m_sttscr[strand][
i] = consensuspenalty;
1145 m_dscr[strand][
i] = consensuspenalty;
1151 m_ascr[strand][
i] = consensuspenalty;
1157 if(!algn.
HasStop() && algn.
Exons().front().m_ssplice_sig !=
"XX")
1159 int a=
max(2,lim.
GetFrom()-NonConsensusMargin);
1165 m_stpscr[strand][
i] = consensuspenalty;
1171 m_dscr[strand][
i] = consensuspenalty;
1177 m_ascr[strand][
i] = consensuspenalty;
1185 const intstpT = 1, stpTA = 2, stpTG = 4;
1187 for(
intstrand = 0; strand < 2; ++strand)
1191 if(strand ==
ePlus) {
1197 if(s[
i+1] ==
enA)
m_asplit[strand][1][
i] |= stpTA|stpTG;
1208 intii =
len-2-
i;
1210 if(s[ii+1] ==
enA&& s[ii+2] ==
enA)
m_asplit[strand][0][
i] |= stpT;
1211 if(s[ii+1] ==
enA&& s[ii+2] ==
enG)
m_asplit[strand][0][
i] |= stpT;
1212 if(s[ii+1] ==
enG&& s[ii+2] ==
enA)
m_asplit[strand][0][
i] |= stpT;
1213 if(s[ii+1] ==
enA)
m_asplit[strand][1][
i] |= stpTA|stpTG;
1214 if(s[ii+1] ==
enG)
m_asplit[strand][1][
i] |= stpTA;
1218 if(s[ii-1] ==
enT&& s[ii] ==
enA)
m_dsplit[strand][1][
i] |= stpTA;
1219 if(s[ii-1] ==
enT&& s[ii] ==
enG)
m_dsplit[strand][1][
i] |= stpTG;
1228 intstrand = algn.
Strand();
1230 if(cds_lim.
Empty())
continue;
1232 if(strand ==
ePlus)
1234 for(
unsigned intk = 0; k < algn.
Exons().
size()-1; ++k)
1237 if(algn.
Exons()[k].m_ssplice && algn.
Exons()[k+1].m_fsplice &&
b>= cds_lim.
GetFrom() &&
b<= cds_lim.
GetTo())
1246 for(
unsigned intk = 1; k < algn.
Exons().
size(); ++k)
1249 if(
a> 0 && algn.
Exons()[k-1].m_ssplice && algn.
Exons()[k].m_fsplice &&
a>= cds_lim.
GetFrom() &&
a<= cds_lim.
GetTo())
1263 if(strand ==
ePlus) {
1268 for(
intk =
l-donor.
Left()+1; k <=
l+donor.
Right(); ++k) {
1277 l= contig_len-1-
l;
1296 if(strand ==
ePlus) {
1302 for(
intk =
l-acceptor.
Left()+1; k <=
l+acceptor.
Right(); ++k) {
1311 l= contig_len-2-
l;
1333 intcodonshift = (
l+3-frame)%3;
1336codonshift = (2-codonshift)%3;
1340 doublescr = cdr.
Score(ds[strand], pos, codonshift);
1344 doubles = ncdr.
Score(ds[strand], pos);
1363 constvector<CModelExon>& exons = model.
Exons();
1364 intnum_exons = (
int)model.
Exons().size();
1367 TDVecsplicescr(mrna.size(),0);
1369 if(strand ==
ePlus) {
1371 for(
int i= 1;
i< num_exons; ++
i) {
1372shift += mrnamap.
FShiftedLen(exons[
i-1].GetFrom(),exons[
i-1].GetTo());
1374 if(exons[
i-1].m_ssplice && exons[
i-1].m_ssplice_sig !=
"XX") {
1375 int l= exons[
i-1].GetTo();
1380 for(
intk =
l-donor.
Left()+1; k <=
l+donor.
Right(); ++k) {
1386splicescr[shift] = scr;
1389 if(exons[
i].m_fsplice && exons[
i].m_fsplice_sig !=
"XX") {
1390 int l= exons[
i].GetFrom()-1;
1395 for(
intk =
l-acceptor.
Left()+1; k <=
l+acceptor.
Right(); ++k) {
1401splicescr[shift] += scr;
1405 intshift = (
int)mrna.size()-1;
1406 for(
int i= 1;
i< num_exons; ++
i) {
1407shift -= mrnamap.
FShiftedLen(exons[
i-1].GetFrom(),exons[
i-1].GetTo());
1409 if(exons[
i-1].m_ssplice && exons[
i-1].m_ssplice_sig !=
"XX") {
1410 int l= contig_len-2-exons[
i-1].GetTo();
1415 for(
intk =
l-acceptor.
Left()+1; k <=
l+acceptor.
Right(); ++k) {
1421splicescr[shift] = scr;
1424 if(exons[
i].m_fsplice && exons[
i].m_fsplice_sig !=
"XX") {
1425 int l= contig_len-1-exons[
i].GetFrom();
1430 for(
intk =
l-donor.
Left()+1; k <=
l+donor.
Right(); ++k) {
1436splicescr[shift] += scr;
1442 for(
intframe = 0; frame < 3; ++frame) {
1443 if(frame==best_frame || best_frame==-1)
1444cdrscr[frame].resize(mrna.size(), 0);
1447 if(pcsf_slice !=
nullptr) {
1449 for(
intframe = 0; frame < 3; ++frame) {
1450 if(frame==best_frame || best_frame==-1) {
1451 for(
intcodon_left = frame; codon_left <= (
int)mrna.size()-3; codon_left += 3) {
1456 if(pcsf_score > 0) {
1457 for(
intstep = 0; step < 3; ++step)
1458cdrscr[frame][codon_left+step] = pcsf_score;
1465 for(
intframe = 0; frame < 3; ++frame) {
1466 if(frame==best_frame || best_frame==-1) {
1467 for(
int i= 0;
i< (
int)mrna.size(); ++
i) {
1468 intcodonshift = (
i-frame)%3;
1472 doublescr = cdr.
Score(mrna,
i,codonshift);
1476 doubles = ncdr.
Score(mrna,
i);
1482cdrscr[frame][
i] += scr+splicescr[
i];
1484cdrscr[frame][
i] += cdrscr[frame][
i-1];
1494 intbest_frame_initial = best_frame;
1496 for(
intframe = 0; frame < 3; ++frame) {
1497 if(frame==best_frame_initial || best_frame_initial==-1) {
1498 for(
int i= 0;
i< (
int)stops[frame].
size();
i++) {
1499 intstop = stops[frame][
i];
1505prev_stop = stops[frame][
i-1];
1506TIVec::iterator it_a = lower_bound(starts[frame].begin(),starts[frame].end(),prev_stop+3);
1507 if(it_a == starts[frame].end() || *it_a >= stop)
1509TIVec::iterator it_b = it_a+1;
1510 if(*it_a < 0 && it_b != starts[frame].end() && *it_b < stop)
1513 for( ; it_b != starts[frame].end() && *it_b < stop; ++it_b);
1516 for(TIVec::iterator it = it_a; it != it_b; it++) {
1520 if(stop-start-(start>=0?0:3) < 30)
1523 doubles = cdrscr[frame][stop-1]-cdrscr[frame][start+2+(start>=0?0:3)];
1526 if(start >= stt.
Left()+2) {
1528stt_score = stt.
Score(mrna,pnt);
1530 for(
intk = pnt-stt.
Left()+1; k <= pnt+stt.
Right(); ++k) {
1531 doublesn = ncdr.
Score(mrna,k);
1538 if(strand ==
eMinus) pnt = contig_len-1-pnt;
1540stt_score = stt.
Score(ds[strand],pnt);
1542 for(
intk = pnt-stt.
Left()+1; k <= pnt+stt.
Right(); ++k) {
1543 doublesn = ncdr.
Score(ds[strand],k);
1552 doublestp_score = stp.
Score(mrna,stop-1);
1554 for(
intk = stop-stp.
Left(); k < stop+stp.
Right(); ++k) {
1555 doublesn = ncdr.
Score(mrna,k);
1562 if(s >= best_score) {
1574best_score +=
max(1.,0.3*best_score);
1587 TIVecstarts[3], stops[3];
1598 for(
intfr = 0; fr < 3; ++fr) {
1601CCDSInfo::TPStops::iterator it = find(pstops.begin(), pstops.end(), pstop);
1602 if(it != pstops.end())
1608 intmrna_len = (
int)mrna.size();
1610 for(
intfr = 0; fr < 3; ++fr) {
1612 intfirst_stop = stops[fr][0];
1616 if(first_stop >= 3) {
1619 if(first_stop < mrna_len-2) {
1623 intfirst_start = -1;
1624 if(!starts[fr].
empty()) {
1625first_start = starts[fr][0];
1626 if(first_start < 0 && starts[fr].
size() > 1)
1627first_start = starts[fr][1];
1630 if(first_start >= 0 && first_start <= first_stop-6) {
1632fivep_rf = first_start+3;
1635 if(stt.
NotEmpty() || stops[fr][0] >= 0) {
1636 intthreep_rf = first_stop-1;
1645 if(stops[fr][0] < 0) {
1658 if(first_stop < mrna_len-2) {
1660 intlast_stop = stops[fr][(
int)stops[fr].
size()-1];
1661 if(last_stop >= mrna_len-2)
1662last_stop = stops[fr][(
int)stops[fr].
size()-2];
1666 if(start > last_stop && start <= mrna_len-6) {
1672 intfivep_rf = start+3;
1673 intthreep_rf = mrna_len-(mrna_len-fr)%3-1;
1689 intbest_start, best_stop;
1690 doublebest_score =
SelectBestReadingFrame(model, mrna, mrnamap, starts, stops, frame, best_start, best_stop, extend5p);
1701 boolis_open =
false;
1702 if(best_start == 0) {
1704}
else if(best_start<0 && starts[frame].
size() > 1) {
1705 intnew_start = starts[frame][1];
1706 intnewlen = best_stop-new_start;
1707 intoldlen = best_stop-best_start;
1710best_start = new_start;
1714 if(cds_info.
ConfirmedStart() && best_start != starts[frame].back()) {
1718 boolhas_start = best_start>=0;
1726 if(
Include(best_reading_frame, cds_info.
Stop()))
1737 intupstream_stop = frame-3;
1741 intfirst_start = best_start;
1749 if((
int)mrna.size() - best_stop >=3)
1752 for(
int i= upstream_stop+3;
i< best_stop;
i+= 3) {
1756CCDSInfo::TPStops::iterator it = find(pstops.begin(), pstops.end(), pstop);
1757 if(it != pstops.end())
1758status = it->m_status;
1759cds_info.
AddPStop(pstop, status);
1763cds_info.
SetScore(best_score, is_open);
TSignedSeqRange MapRangeEditedToOrig(TSignedSeqRange edited_range, bool withextras=true) const
TSignedSeqPos MapOrigToEdited(TSignedSeqPos orig_pos) const
void EditedSequence(const In &original_sequence, Out &edited_sequence, bool includeholes=false) const
TSignedSeqPos MapEditedToOrig(TSignedSeqPos edited_pos) const
int FShiftedLen(TSignedSeqRange ab, ERangeEnd lend, ERangeEnd rend) const
TSignedSeqRange MapRangeOrigToEdited(TSignedSeqRange orig_range, ERangeEnd lend, ERangeEnd rend) const
CCDSInfo MapFromEditedToOrig(const CAlignMap &amap) const
void SetStart(TSignedSeqRange r, bool confirmed=false)
CCDSInfo MapFromOrigToEdited(const CAlignMap &amap) const
TSignedSeqRange MaxCdsLimits() const
void Set5PrimeCdsLimit(TSignedSeqPos p)
bool IsMappedToGenome() const
void SetScore(double score, bool open=false)
TSignedSeqRange Start() const
bool ConfirmedStart() const
void AddPStop(SPStop stp)
TSignedSeqRange ReadingFrame() const
TSignedSeqRange ProtReadingFrame() const
void SetStop(TSignedSeqRange r, bool confirmed=false)
const TPStops & PStops() const
bool ConfirmedStop() const
void Clear5PrimeCdsLimit()
void SetReadingFrame(TSignedSeqRange r, bool protein=false)
TSignedSeqRange Stop() const
virtual double Score(const CEResidueVec &seq, int i, int codonshift) const =0
void ExtendRight(int amount)
void Extend(const CGeneModel &a, bool ensure_cds_invariant=true)
int FShiftedLen(TSignedSeqRange ab, bool withextras=true) const
const TExons & Exons() const
vector< CCDSInfo > * SetEdgeReadingFrames()
TSignedSeqRange ReadingFrame() const
virtual CAlignMap GetAlignMap() const
virtual void Clip(TSignedSeqRange limits, EClipMode mode, bool ensure_cds_invariant=true)
void SetCdsInfo(const CCDSInfo &cds_info)
TSignedSeqRange Limits() const
void AddComment(const string &comment)
const CCDSInfo & GetCdsInfo() const
vector< CModelExon > TExons
TSignedSeqRange MaxCdsLimits() const
bool ConfirmedStart() const
void ExtendLeft(int amount)
void Remap(const CRangeMapper &mapper)
double SelectBestReadingFrame(const CGeneModel &model, const CEResidueVec &mrna, const CAlignMap &mrnamap, TIVec starts[3], TIVec stops[3], int &frame, int &best_start, int &best_stop, bool extend5p=true) const
double DonorScore(int l, EStrand strand) const
unique_ptr< SGnomonEngineImplData > m_data
double PointCodingScore(int l, EStrand strand, int frame) const
void GetScore(CGeneModel &model, bool extend5p=false, bool obeystart=false, bool extend_max_cds=false) const
double AcceptorScore(int l, EStrand strand) const
virtual double Score(const CEResidueVec &seq, int i) const =0
bool isReadingFrameRightEnd(int i, int strand) const
bool OpenCodingRegion(int a, int b, int strand, int frame) const
void Init(CResidueVec &original_sequence, bool leftwall, bool rightwall, double consensuspenalty, const CGnomonAnnotator_Base::TIntMap ¬bridgeable_gaps_len, const CGnomonAnnotator_Base::TGgapInfo &ggapinfo, SPhyloCSFSlice *pcsf_slice=nullptr)
bool isStop(int i, int strand) const
bool isConsensusIntron(int i, int j, int strand) const
TSignedSeqPos From() const
const CNonCodingRegion & m_intrg
bool OpenIntergenicRegion(int a, int b) const
TSignedSeqPos m_chunk_stop
const CTerminal & m_donor
bool isAG(int i, int strand) const
const CTerminal & m_start
double IntergenicScore(int a, int b, int strand) const
const CNonCodingRegion & m_ncdr
bool isGT(int i, int strand) const
const EResidue * SeqPtr(int i, int strand) const
TGeneModelList m_align_list
double CodingScore(int a, int b, int strand, int frame) const
bool isReadingFrameLeftEnd(int i, int strand) const
bool isStart(int i, int strand) const
TSignedSeqPos m_chunk_start
double NonCodingScore(int a, int b, int strand) const
const CCodingRegion & m_cdr
CResidueVec ConstructSequenceAndMaps(const TGeneModelList &aligns, const CResidueVec &original_sequence)
bool OpenNonCodingRegion(int a, int b, int strand) const
const CTerminal & m_acceptor
bool StopInside(int a, int b, int strand, int frame) const
CSeqScores(const CTerminal &a, const CTerminal &d, const CTerminal &stt, const CTerminal &stp, const CCodingRegion &cr, const CNonCodingRegion &ncr, const CNonCodingRegion &ing, const CIntronParameters &intron_params, TSignedSeqPos from, TSignedSeqPos to, const TGeneModelList &cls, const TInDels &initial_fshifts, double mpp, const CGnomonEngine &gnomon)
virtual double Score(const CEResidueVec &seq, int i) const =0
iterator_bool insert(const value_type &val)
const_iterator begin() const
parent_type::iterator iterator
const_iterator end() const
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
static const TDS_WORD limits[]
vector< TResidue > CResidueVec
bool Include(TSignedSeqRange big, TSignedSeqRange small)
const EResidue k_toMinus[5]
list< CGeneModel > TGeneModelList
bool IsStopCodon(const Res *seq, int strand=ePlus)
vector< CInDelInfo > TInDels
bool FindFirstStart(const vector< int > &starts, int stop, int &start)
bool FindUpstreamStop(const vector< int > &stops, int start, int &stop)
void FindStartsStops(const CGeneModel &model, const CEResidueVec &contig_seq, const CEResidueVec &mrna, const CAlignMap &mrnamap, TIVec starts[3], TIVec stops[3], int &frame, bool obeystart)
EResidue fromACGT(TResidue c)
#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 VECTOR_ERASE(Var, Cont)
Use this macro inside body of ERASE_ITERATE cycle to erase from vector-like container.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
void swap(NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair1, NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair2)
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
int64_t Int8
8-byte (64-bit) signed integer
position_type GetLength(void) const
bool NotEmpty(void) const
bool IntersectingWith(const TThisType &r) const
static TThisType GetEmpty(void)
static position_type GetWholeFrom(void)
CRange< TSignedSeqPos > TSignedSeqRange
static position_type GetWholeTo(void)
#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.
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
unsigned int
A callback function used to compare two keys in a database.
constexpr auto sort(_Init &&init)
constexpr bool empty(list< Ts... >) noexcept
const struct ncbi::grid::netcache::search::fields::SIZE size
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
set< CGeneModel, SAlignOrder > TAlignSet
static bool s_AlignLeftLimitOrder(const CGeneModel &ap, const CGeneModel &bp)
TSignedSeqPos AlignLeftLimit(const CGeneModel &a)
static SLJIT_INLINE sljit_ins l(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
TSignedSeqRange operator()(TSignedSeqRange r, bool withextras=true) const
const CAlignMap & m_seq_map
CIndelMapper(const CAlignMap &seq_map)
bool operator()(const CGeneModel &a)
bool operator()(const CGeneModel &a, const CGeneModel &b) const
TSignedSeqRange CompactRange(int s, TSignedSeqRange edited_range) const
TPhyloCSFScore Score(int s, TSignedSeqPos codon_left) const
const array< SPhyloCSFCompactScore, 2 > * m_scoresp
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