sequence;
72 ESpliceSiteReadgood_donor = ReadDonorSpliceSite(strand, stop, vec_donor, seq_len_donor, donor);
73 ESpliceSiteReadgood_acceptor = ReadAcceptorSpliceSite(strand, start, vec_acceptor, seq_len_acceptor, acceptor);
74 booldonor_ok = (good_donor == eSpliceSiteRead_OK || good_donor == eSpliceSiteRead_WrongNT);
75 boolacceptor_ok = (good_acceptor == eSpliceSiteRead_OK || good_acceptor == eSpliceSiteRead_WrongNT);
77 if(donor_ok && acceptor_ok) {
87m_AcceptorProblems.push_back(
TSpliceProblem(good_acceptor, start));
90m_AcceptorProblems.push_back(
TSpliceProblem(good_acceptor, start));
100 boolbad_seq =
false;
104 if(stop > 1 && stop <= seq_len) {
107bad_seq = (vec[stop - 1] > 250 || vec[stop - 2] > 250);
111 returneSpliceSiteRead_Gap;
112}
else if(bad_seq) {
113 returneSpliceSiteRead_BadSeq;
117 site[0] = vec[stop - 2];
118 site[1] = vec[stop - 1];
120 returneSpliceSiteRead_OutOfRange;
125 if(stop < seq_len - 2) {
128bad_seq = (vec[stop + 1] > 250 || vec[stop + 2] > 250);
131 returneSpliceSiteRead_Gap;
132}
else if(bad_seq) {
133 returneSpliceSiteRead_BadSeq;
135 site[0] = vec[stop + 1];
136 site[1] = vec[stop + 2];
138 returneSpliceSiteRead_OutOfRange;
144 returneSpliceSiteRead_OK;
146 returneSpliceSiteRead_WrongNT;
149 returneSpliceSiteRead_OK;
159 returnReadDonorSpliceSite(strand, stop, vec, seq_len,
site);
173 boolbad_seq =
false;
177 if(start < seq_len - 2) {
180bad_seq = (vec[start + 1] > 250 || vec[start + 2] > 250);
184 returneSpliceSiteRead_Gap;
185}
else if(bad_seq) {
186 returneSpliceSiteRead_BadSeq;
188 site[0] = vec[start + 1];
189 site[1] = vec[start + 2];
191 returneSpliceSiteRead_OutOfRange;
196 if(start > 1 && start <= seq_len) {
199bad_seq = (vec[start - 2] > 250 || vec[start - 1] > 250);
203 returneSpliceSiteRead_Gap;
204}
else if(bad_seq) {
205 returneSpliceSiteRead_BadSeq;
207 site[0] = vec[start - 2];
208 site[1] = vec[start - 1];
210 returneSpliceSiteRead_OutOfRange;
215 returneSpliceSiteRead_OK;
217 returneSpliceSiteRead_WrongNT;
220 returneSpliceSiteRead_BadSeq;
233 returnReadAcceptorSpliceSite(strand, start, vec, seq_len,
site);
239 boolhas_errors =
false;
241 for(
autoit = m_DonorProblems.begin(); it != m_DonorProblems.end() && !has_errors; it++) {
242 if(it->first == eSpliceSiteRead_BadSeq || it->first == eSpliceSiteRead_Gap ||
243it->first == eSpliceSiteRead_WrongNT) {
248 for(
autoit = m_AcceptorProblems.begin(); it != m_AcceptorProblems.end() && !has_errors; it++) {
249 if(it->first == eSpliceSiteRead_BadSeq || it->first == eSpliceSiteRead_Gap ||
250it->first == eSpliceSiteRead_WrongNT) {
261m_DonorProblems.clear();
262m_AcceptorProblems.clear();
263m_ExceptionUnnecessary =
false;
264m_ErrorsNotExpected =
true;
266 boolhas_errors =
false, ribo_slip =
false;
282m_ErrorsNotExpected =
false;
292m_ErrorsNotExpected =
false;
300 for(CSeq_loc_CI
si(loc);
si; ++
si) {
301 if(
si.IsSetStrand()) {
305strand =
si.GetStrand();
306}
else if(strand !=
tmp) {
314 if(!check_all && num_parts < 2) {
328ValidateSpliceExon(feat, loc_handle, strand);
331ValidateSpliceMrna(feat, loc_handle, strand);
334ValidateSpliceCdregion(feat, loc_handle, strand);
340has_errors = SpliceSitesHaveErrors();
342 if(!m_ErrorsNotExpected && !has_errors && !ribo_slip) {
343m_ExceptionUnnecessary =
true;
353 booloverlap_feat_partial_5 =
false;
354 booloverlap_feat_partial_3 =
false;
355 TSeqPosoverlap_feat_start = 0;
358 booloverlap_feat_exists =
false;
366overlap_feat_exists =
true;
381overlap_feat_exists =
true;
390CSeq_loc_CI
si(loc);
402start = range.
GetTo();
406stop = range.
GetTo();
409 if(overlap_feat_exists) {
411 if(stop == overlap_feat_stop) {
412 if(overlap_feat_partial_3) {
423 if(start == overlap_feat_start) {
424 if(overlap_feat_partial_5) {
426m_AcceptorProblems.push_back(
TSpliceProblem(good_acceptor, start));
430m_AcceptorProblems.push_back(
TSpliceProblem(good_acceptor, start));
441m_AcceptorProblems.push_back(
TSpliceProblem(good_acceptor, start));
448}
catch(
conststd::exception& ) {
457 boolignore_mrna_partial5 =
false;
458 boolignore_mrna_partial3 =
false;
472ignore_mrna_partial5 =
true;
476ignore_mrna_partial3 =
true;
483CSeq_loc_CI
head(loc);
486 constCSeq_loc& part =
head.GetEmbeddingSeq_loc();
493start = range.
GetTo();
499m_AcceptorProblems.push_back(
TSpliceProblem(good_acceptor, start));
503CSeq_loc_CI tail(loc);
509 for(; tail; ++
head, ++tail) {
514 if(bsh_head && bsh_tail) {
520start = range_tail.
GetTo();
523start = range_tail.
GetFrom();
524stop = range_head.
GetTo();
526ValidateDonorAcceptorPair(
538 constCSeq_loc& part =
head.GetEmbeddingSeq_loc();
547stop = range.
GetTo();
564CSeq_loc_CI
head(loc);
567 constCSeq_loc& part =
head.GetEmbeddingSeq_loc();
575start = range.
GetTo();
580m_AcceptorProblems.push_back(
TSpliceProblem(good_acceptor, start));
586CSeq_loc_CI tail(loc);
592 for(; tail; ++
head, ++tail) {
597 if(bsh_head && bsh_tail) {
603start = range_tail.
GetTo();
606start = range_tail.
GetFrom();
607stop = range_head.
GetTo();
609ValidateDonorAcceptorPair(
621 constCSeq_loc& part =
head.GetEmbeddingSeq_loc();
631stop = range.
GetTo();
667 structtagSpliceSiteInfo
690 static int size=
sizeof(SpliceSiteInfo) /
sizeof(
structtagSpliceSiteInfo);
692 for(
int i= 0;
i<
size; ++
i) {
693 structtagSpliceSiteInfo* entry = &SpliceSiteInfo[
i];
694 if(strand == entry->strand && entry->id == signature) {
695 return(entry->check_donor0(donor[0]) && entry->check_donor1(donor[1]) &&
696entry->check_acceptor0(acceptor[0]) && entry->check_acceptor1(acceptor[1]));
707 structtagSpliceSiteInfo
728 static int size=
sizeof(SpliceSiteInfo) /
sizeof(
structtagSpliceSiteInfo);
730 for(
int i= 0;
i<
size; ++
i) {
731 structtagSpliceSiteInfo* entry = &SpliceSiteInfo[
i];
732 if(strand == entry->strand && entry->id == signature) {
733 return(entry->check_site0(
site[0]) && entry->check_site1(
site[1]));
@ eExtreme_Biological
5' and 3'
ESubtype GetSubtype(void) const
SeqVector related exceptions.
namespace ncbi::objects::
bool SpliceSitesHaveErrors()
void ValidateSpliceCdregion(const CSeq_feat &feat, const CBioseq_Handle &bsh, ENa_strand strand)
void CalculateSpliceProblems(const CSeq_feat &feat, bool check_all, bool pseudo, CBioseq_Handle loc_handle)
void ValidateSpliceExon(const CSeq_feat &feat, const CBioseq_Handle &bsh, ENa_strand strand)
ESpliceSiteRead ReadAcceptorSpliceSite(ENa_strand strand, TSeqPos start, const CSeqVector &vec, TSeqPos seq_len, TSpliceSite &site)
ESpliceSiteRead ReadDonorSpliceSite(ENa_strand strand, TSeqPos stop, const CSeqVector &vec, TSeqPos seq_len, TSpliceSite &site)
void ValidateSpliceMrna(const CSeq_feat &feat, const CBioseq_Handle &bsh, ENa_strand strand)
pair< size_t, TSeqPos > TSpliceProblem
void ValidateDonorAcceptorPair(ENa_strand strand, TSeqPos stop, const CSeqVector &vec_donor, TSeqPos seq_len_donor, TSeqPos start, const CSeqVector &vec_acceptor, TSeqPos seq_len_acceptor)
Include a standard set of the NCBI C++ Toolkit most basic headers.
The NCBI C++ standard methods for dealing with std::string.
static const char si[8][64]
unsigned int TSeqPos
Type for sequence locations and lengths.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
bool IsPartialStart(ESeqLocExtremes ext) const
check start or stop of location for e_Lim fuzz
TSeqPos GetStart(ESeqLocExtremes ext) const
Return start and stop positions of the seq-loc.
bool IsPartialStop(ESeqLocExtremes ext) const
TSeqPos GetStop(ESeqLocExtremes ext) const
CMappedFeat GetBestOverlappingFeat(const CMappedFeat &feat, CSeqFeatData::ESubtype need_subtype, sequence::EOverlapType overlap_type, CFeatTree *feat_tree=0, const SAnnotSelector *base_sel=0)
@ eOverlap_Contains
2nd contains 1st extremes
@ eOverlap_Contained
2nd contained within 1st extremes
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
TInst_Length GetInst_Length(void) const
CScope & GetScope(void) const
Get scope this handle belongs to.
CSeqVector GetSeqVector(EVectorCoding coding, ENa_strand strand=eNa_strand_plus) const
Get sequence: Iupacna or Iupacaa if use_iupac_coding is true.
@ eCoding_Iupac
Set coding to printable coding (Iupacna or Iupacaa)
bool IsInGap(TSeqPos pos) const
true if sequence at 0-based position 'pos' has gap Note: this method is not MT-safe,...
char Char
Alias for char.
#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.
static SIZE_TYPE FindNoCase(const CTempString str, const CTempString pattern, SIZE_TYPE start, SIZE_TYPE end, EOccurrence which=eFirst)
Find the pattern in the specified range of a string using a case insensitive search.
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
const TLocation & GetLocation(void) const
Get the Location member data.
const TData & GetData(void) const
Get the Data member data.
bool IsSetExcept(void) const
something funny about this? Check if a value has been assigned to Except data member.
const TExcept_text & GetExcept_text(void) const
Get the Except_text member data.
bool IsSetExcept_text(void) const
explain if except=TRUE Check if a value has been assigned to Except_text data member.
ENa_strand
strand of nucleic acid
const struct ncbi::grid::netcache::search::fields::SIZE size
bool CheckIntronAcceptor(ENa_strand strand, TConstSpliceSite acceptor)
static const char * kSpliceSiteGT
bool CheckIntronSpliceSites(ENa_strand strand, TConstSpliceSite donor, TConstSpliceSite acceptor)
static bool s_EqualsA(Char c)
static const char * kSpliceSiteGTAG
static const char * kSpliceSiteATAC
static const char * kSpliceSiteGCAG
static const char * kSpliceSiteAG
static const char * kSpliceSiteGC
static bool s_EqualsT(Char c)
static bool s_EqualsG(Char c)
bool CheckAdjacentSpliceSites(const string &signature, ENa_strand strand, TConstSpliceSite donor, TConstSpliceSite acceptor)
static bool s_EqualsC(Char c)
bool CheckIntronDonor(ENa_strand strand, TConstSpliceSite donor)
bool CheckSpliceSite(const string &signature, ENa_strand strand, TConstSpliceSite site)
Char const (& TConstSpliceSite)[2]
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