47 if (
a.Strand() !=
b.Strand())
50 if(
a.OpenRightEnd() &&
b.OpenLeftEnd())
52 }
else if (
Precede(
b.Limits(),
a.Limits())) {
53 if(
b.OpenRightEnd() &&
a.OpenLeftEnd())
62 if(
a.Strand() !=
b.Strand() || !
a.IntersectingWith(
b))
return commonspl;
63 for(
size_t i = 1;
i <
a.Exons().
size(); ++
i) {
64 for(
size_t j = 1; j <
b.Exons().
size(); ++j) {
65 if(
a.Exons()[
i-1].GetTo() ==
b.Exons()[j-1].GetTo())
67 if(
a.Exons()[
i].GetFrom() ==
b.Exons()[j].GetFrom() )
78 if(
a.Strand() !=
b.Strand())
81 if(
a.ReadingFrame().NotEmpty() &&
b.ReadingFrame().NotEmpty()) {
82 if(!
a.ReadingFrame().IntersectingWith(
b.ReadingFrame()) ||
a.GetCdsInfo().PStops() !=
b.GetCdsInfo().PStops())
85 if(
a.Exons().size() == 1 &&
b.Exons().size()==1) {
88 int common_point = (acds & bcds).GetFrom();
89 if(
a.FShiftedLen(acds.
GetFrom(),common_point,
false)%3 !=
b.FShiftedLen(bcds.
GetFrom(),common_point,
false)%3)
99 while(amin < (
int)
a.Exons().size() &&
a.Exons()[amin].GetTo() < mutual_min) ++amin;
100 if(amin == (
int)
a.Exons().size())
return false;
102 int amax = (
int)
a.Exons().size()-1;
103 while(amax >=0 &&
a.Exons()[amax].GetFrom() > mutual_max) --amax;
104 if(amax < 0)
return false;
107 while(bmin < (
int)
b.Exons().size() &&
b.Exons()[bmin].GetTo() < mutual_min) ++bmin;
108 if(bmin == (
int)
b.Exons().size())
return false;
110 int bmax = (
int)
b.Exons().size()-1;
111 while(bmax >=0 &&
b.Exons()[bmax].GetFrom() > mutual_max) --bmax;
112 if(bmax < 0)
return false;
114 if(amax-amin != bmax-bmin)
return false;
117 if (amin != 0 ||
size_t(amax) !=
a.Exons().size()-1 || bmin != 0 || size_t(bmax) !=
b.Exons().size()-1)
120 for( ; amin <= amax; ++amin, ++bmin) {
121 if(
abs(
max(mutual_min,
a.Exons()[amin].GetFrom())-
max(mutual_min,
b.Exons()[bmin].GetFrom())) >= tolerance)
123 if(
abs(
min(mutual_max,
a.Exons()[amin].GetTo())-
min(mutual_max,
b.Exons()[bmin].GetTo())) >= tolerance)
132 if((!
a.TrustedmRNA().empty() || !
a.TrustedProt().empty()) && (!
b.TrustedmRNA().empty() || !
b.TrustedProt().empty()))
142 for(
int i = 1;
i < (
int)algn.
Exons().size(); ++
i) {
143 if(check_in_holes || (algn.
Exons()[
i-1].m_ssplice && algn.
Exons()[
i].m_fsplice)) {
154 if(
a.Strand() !=
b.Strand() || !
a.IntersectingWith(
b))
return false;
156 for(
unsigned int i = 0;
i <
a.Exons().
size(); ++
i) {
157 for(
unsigned int j = 0; j <
b.Exons().
size(); ++j) {
158 if(
a.Exons()[
i] ==
b.Exons()[j])
163 for(
unsigned int i = 1;
i <
a.Exons().
size(); ++
i) {
165 for(
unsigned int j = 1; j <
b.Exons().
size(); ++j) {
167 if(introna == intronb)
189 bool gapfilled =
false;
191 for(
int ie = 0; ie < (
int)model.
Exons().size(); ++ie) {
192 if(model.
Exons()[ie].Limits().Empty())
198 if(gapfilled && genome_cds < 45) {
206 bad_aligns.push_back(*it);
CCDSInfo MapFromOrigToEdited(const CAlignMap &amap) const
bool IsMappedToGenome() const
TSignedSeqRange Cds() const
TSignedSeqRange ReadingFrame() const
const TExons & Exons() const
virtual CAlignMap GetAlignMap() const
TSignedSeqRange TranscriptExon(int i) const
void AddComment(const string &comment)
const CCDSInfo & GetCdsInfo() const
void FilterGenes(TGeneModelList &chains, TGeneModelList &bad_aligns, TGeneModelList &dest)
Filters genes, excluding genes flagged to be skipped.
static bool HaveCommonExonOrIntron(const CGeneModel &a, const CGeneModel &b)
static bool RangeNestedInIntron(TSignedSeqRange r, const CGeneModel &algn, bool check_in_holes=true)
static size_t CountCommonSplices(const CGeneModel &a, const CGeneModel &b)
static bool AreSimilar(const CGeneModel &a, const CGeneModel &b, int tolerance)
static bool BadOverlapTest(const CGeneModel &a, const CGeneModel &b)
bool Precede(TSignedSeqRange l, TSignedSeqRange r)
bool Include(TSignedSeqRange big, TSignedSeqRange small)
list< CGeneModel > TGeneModelList
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
int TSignedSeqPos
Type for signed sequence position.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
TSeqPos GetLength(const CSeq_id &id, CScope *scope)
Get sequence length if scope not null, else return max possible TSeqPos.
#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.
const struct ncbi::grid::netcache::search::fields::SIZE size
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)