89 && inst.
GetDelta().front()->IsSetAction()
102 placement->
SetLoc(*dinucleotide_loc);
136 if(!
v2.GetData().IsInstance() || !
v2.GetData().GetInstance().IsSetObservation()) {
146 && !
v2.IsSetPlacements()
147 &&
v2.GetData().GetInstance().GetDelta().size() > 0
148 &&
v2.GetData().GetInstance().GetDelta().front()->IsSetSeq()
149 &&
v2.GetData().GetInstance().GetDelta().front()->GetSeq().IsLiteral())
151 asserted_seq.
Reset(&
v2.GetData().GetInstance().GetDelta().front()->GetSeq().GetLiteral());
181 const auto& first_var_data = vset.
GetVariations().front()->GetData();
182 if (!first_var_data.IsInstance() ||
253 util.FlipStrand(*flipped_variation);
259 flipped_asserted_seq->
Assign(*asserted_seq);
260 if(asserted_seq->IsSetSeq_data()) {
262 asserted_seq->GetSeq_data(),
264 0, asserted_seq->GetLength());
278 string hgvs_data_str =
"";
279 size_t subvariation_count(0);
300 if(
v2.GetData().IsInstance()
302 &&
v2.GetData().GetInstance().IsSetObservation()
310 hgvs_data_str += delim + subvariation_expr;
312 ++subvariation_count;
314 }
else if(
variation.GetData().IsInstance()) {
320 }
else if(
variation.GetData().IsUnknown()) {
322 }
else if(
variation.GetData().IsNote()) {
323 hgvs_data_str =
":" +
variation.GetData().GetNote();
325 hgvs_data_str =
":OTHER";
329 if(hgvs_data_str ==
"Xaa" || hgvs_data_str ==
"delinsXaa") {
336 hgvs_data_str +=
"fs";
337 if(
variation.GetFrameshift().IsSetX_length()) {
343 && find(
variation.GetMethod().GetMethod().begin(),
347 hgvs_data_str =
"(" + hgvs_data_str +
")";
351 bool is_bracketed =
false;
352 bool location_within_brackets =
true;
369 is_bracketed =
false;
371 }
else if(subvariation_count > 1) {
380 location_within_brackets =
false;
383 string hgvs_loc_str =
"";
384 if(placement &&
variation.IsSetPlacements()) {
390 if(location_within_brackets) {
391 hgvs_data_str =
"[" + hgvs_loc_str + hgvs_data_str +
"]";
393 hgvs_data_str = hgvs_loc_str +
"[" + hgvs_data_str +
"]";
396 hgvs_data_str = hgvs_loc_str + hgvs_data_str;
399 return hgvs_data_str;
407 const static char* ncbieaa =
"-ABCDEFGHIKLMNPQRSTVWXYZU*O";
410 const static char* iupac3aa =
"---AlaAsxCysAspGluPheGlyHisIleLysLeuMetAsnProGlnArgSerThrValTrpXaaTyrGlxSecTerPyl";
412 for(
size_t i = 0;
i < prot_str.size();
i++) {
413 char aa = prot_str[
i];
446 code.SetId(is_mito ? 2 : 1);
469 if(translate &&
literal.GetLength() > 0) {
531 const int sign = hgvs_pos > 0 ? 1
537 const int k = (with_sign && sign == -1) ? -1 : 1;
547 val =
"(" + from +
"_" + to +
")";
554 && (fuzz_gt || fuzz_lt) ?
"?"
555 : !hgvs_pos && fuzz_gt ?
"?"
557 : fuzz_gt ?
"(" +
val +
"_?)"
558 : fuzz_lt ?
"(?_" +
val +
")"
562 const string sign_str = (!with_sign ?
""
566 return sign_str +
val;
591 :
id.GetSeqIdString(
true);
594 idstr = idstr.substr(4);
599 +idstr +
":" + moltype;
607 const long* offset_pos,
610 if(offset_pos && (anchor_pos == 0 || anchor_pos >= effective_seq_length - 1)) {
618 long resolved_pos = anchor_pos + *offset_pos;
621 string anchor_str =
s_IntWithFuzzToStr(anchor_pos, &anchor_ref_pos,
false, anchor_fuzz);
623 return anchor_str+offset_str;
642 util.AttachSeq(*vp_ref);
649 if(
id.IsGeneral() &&
id.GetGeneral().GetDb() ==
"LRG") {
651 if(lrg_resolver->CanCreate(
id.GetGeneral().GetTag().GetStr())) {
652 CSeq_id_Handle idh = lrg_resolver->Get(
id.GetGeneral().GetTag().GetStr());
662 size_t effective_seq_length =
util.GetEffectiveTranscriptLength(bsh);
701 long start_offset = 0;
706 bool is_cdsstop_relative = cds_last_pos
714 is_cdsstop_relative ? cds_last_pos + 1 : first_pos,
715 effective_seq_length,
719 if(is_cdsstop_relative) {
720 loc_str =
"*" + loc_str;
740 long biostart_offset = 0;
747 is_biostart_cdsstop_relative ? cds_last_pos + 1 : first_pos,
748 effective_seq_length,
755 if(is_biostart_cdsstop_relative) {
756 biostart_str =
"*" + biostart_str;
764 long biostop_offset = 0;
771 is_biostop_cdsstop_relative ? cds_last_pos + 1 : first_pos,
772 effective_seq_length,
778 biostop_str =
Ncbieaa2HgvsAA(prot_str.substr(prot_str.size() - 1,1)) + biostop_str;
780 if(is_biostop_cdsstop_relative) {
781 biostop_str =
"*" + biostop_str;
785 swap(biostart_str, biostop_str);
788 loc_str = biostart_str +
"_" + biostop_str;
811 len += d_len * multiplier;
826 : p->IsSetStart_offset_fuzz() ?
true
827 : p->IsSetStop_offset_fuzz() ?
true
866 && placement->IsSetSeq()
867 && placement->GetSeq().IsSetSeq_data()
870 asserted_seq.
Reset(&placement->GetSeq());
882 if(
util.AttachSeq(*p2)) {
889 && explicit_asserted_seq
899 asserted_seq = explicit_asserted_seq.
GetPointer();
904 static const size_t s_max_literal_length = 16;
906 string asserted_seq_str =
908 : asserted_seq->GetLength() < s_max_literal_length ?
x_SeqLiteralToStr(*asserted_seq, is_prot, is_mito)
911 string inst_str =
"";
912 bool append_delta =
false;
922 inst_str = ( asserted_seq
923 && asserted_seq->GetLength() < s_max_literal_length
924 && asserted_seq->IsSetSeq_data()
925 && !is_prot ? asserted_seq_str :
"")
927 }
else if(!asserted_seq_str.empty() && s_ParentIsInvDup(
variation)) {
930 inst_str =
"inv" + asserted_seq_str;
932 inst_str = (asserted_seq ? asserted_seq_str :
"N" )+
">";
939 placement && placement->GetLoc().IsPnt() &&
940 placement->GetLoc().GetPnt().GetPoint() == 0)
942 inst_str =
"extMet-";
944 && placement && placement->GetLoc().IsPnt()
946 && placement->GetLoc().GetPnt().GetPoint() == bsh.
GetInst_Length() - 1)
952 inst_str =
"del" + asserted_seq_str +
"ins";
957 if(placement && placement->GetLoc().IsWhole()) {
964 inst_str =
"del" + asserted_seq_str;
971 if(
delta.GetSeq().IsThis() &&
delta.IsSetMultiplier() &&
delta.GetMultiplier() == 2) {
983 append_delta =
false;
1012 &&
variation.GetParent()->GetData().GetSet().GetVariations().front().GetPointer() != &
variation)
1020 }
else if(
delta.GetSeq().IsThis()) {
1022 }
else if(
delta.GetSeq().IsLiteral()) {
1031 if( inst_str == variant_str +
">"
1032 || inst_str ==
"del" + variant_str +
"ins")
1037 inst_str = (!variant_str.empty() &&
isdigit(variant_str.at(0)) ?
"" : variant_str) +
"=";
1039 inst_str += variant_str;
1041 }
else if(
delta.GetSeq().IsLoc()) {
1042 string delta_loc_str;
1055 && placement->GetLoc().GetId()
1068 inst_str += delta_loc_str;
1075 if(
delta.IsSetMultiplier()) {
1078 delta.GetMultiplier(),
1081 delta.IsSetMultiplier_fuzz() ? &
delta.GetMultiplier_fuzz() :
NULL);
1084 multiplier_str =
"[" + multiplier_str +
"]";
1089 inst_str += multiplier_str;
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
@ eExtreme_Biological
5' and 3'
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
Resolve LRG seq-ids, e.g. LRG_123, LRG_123t1, LRG_123p1.
static TSeqPos Convert(const CSeq_data &in_seq, CSeq_data *out_seq, CSeq_data::E_Choice to_code, TSeqPos uBeginIdx=0, TSeqPos uLength=0, bool bAmbig=false, Uint4 seed=17734276)
static TSeqPos ReverseComplement(CSeq_data *in_seq, TSeqPos uBeginIdx=0, TSeqPos uLength=0)
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
Template class for iteration on objects of class C (non-medifiable version)
Template class for iteration on objects of class C.
Set of related Variations.
const CVariation * GetParent() const
static string s_OffsetPointToString(TSeqPos anchor_pos, const CInt_fuzz *anchor_fuzz, TSeqPos anchor_ref_pos, TSeqPos effective_seq_length, const long *offset_pos, const CInt_fuzz *offset_fuzz)
Construct an HGVS coordinate, which may be an intronic offset-point, e.g. "5+(10_11)".
static TSignedSeqPos s_GetHgvsPos(TSeqPos abs_pos, const TSeqPos *atg_pos)
if no atg_pos, assume that not dealing with coordinate systems (simply return abs-pos) otherwise,...
static string s_SeqIdToHgvsStr(const CVariantPlacement &vp, CScope *scope=NULL)
Construct an hgvs "header" consisting of seq-id and mol-type, e.g. "NG_016831.1:g....
CRef< CVariantPlacement > x_AdjustPlacementForHgvs(const CVariantPlacement &p, const CVariation_inst &inst)
In some cases the placement needs to be adjusted depending on inst, e.g.
string x_AsHgvsInstExpression(const CVariation &inst_variation, CConstRef< CVariantPlacement > p, CConstRef< CSeq_literal > asserted_seq)
Create "inst" part of HGVS expression.
string AsHgvsExpression(const CVariation &variation, CConstRef< CSeq_id > seq_id=CConstRef< CSeq_id >(NULL))
static string s_IntWithFuzzToStr(long pos, const TSeqPos *ref_pos, bool with_sign, const CInt_fuzz *fuzz)
this function may be used to create hgvs-coordinates (if ref_pos is not null), or to create a fuzzy h...
CConstRef< CSeq_literal > x_FindAssertedSequence(const CVariation &v)
If the variation is a package-set, find the subvariation with observation-type "asserted" and return ...
string x_LocToSeqStr(const CSeq_loc &loc)
Get literal seq at location.
TSeqPos x_GetInstLength(const CVariation_inst &inst, const CVariantPlacement &p, bool account_for_multiplier)
Compute length of the delta.
string x_AsHgvsExpression(const CVariation &variation, CConstRef< CSeq_id > id, CConstRef< CSeq_literal > asserted_seq)
Construct HGVS expression for a variation: use first VariantPlacement, or, if id is specified,...
string x_SeqLiteralToStr(const CSeq_literal &literal, bool translate, bool is_mito)
translate=true will translate nucleotide literal to prot as appropriate.
string x_PlacementCoordsToStr(const CVariantPlacement &vp)
static const CVariation::TPlacements * s_GetPlacements(const CVariation &v)
static TSeqPos s_GetLength(const CVariantPlacement &p, CScope *scope)
std::ofstream out("events_result.xml")
main entry point for tests
unsigned int TSeqPos
Type for sequence locations and lengths.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
int TSignedSeqPos
Type for signed sequence position.
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.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
const TPrim & Get(void) const
#define MSerial_AsnText
I/O stream manipulators –.
virtual bool Equals(const CSerialObject &object, ESerialRecursionMode how=eRecursive) const
Check if both objects contain the same values.
ENa_strand GetStrand(void) const
Get the location's strand.
TSeqPos GetStart(ESeqLocExtremes ext) const
Return start and stop positions of the seq-loc.
const CSeq_id * GetId(void) const
Get the id of the location return NULL if has multiple ids or no id at all.
TSeqPos GetStop(ESeqLocExtremes ext) const
CBeginInfo Begin(C &obj)
Get starting point of object hierarchy.
TSeqPos GetStop(const CSeq_loc &loc, CScope *scope, ESeqLocExtremes ext=eExtreme_Positional)
If only one CBioseq is represented by CSeq_loc, returns the position at the stop of the location.
const CSeq_id & GetId(const CSeq_loc &loc, CScope *scope)
If all CSeq_ids embedded in CSeq_loc refer to the same CBioseq, returns the first CSeq_id found,...
TSeqPos GetLength(const CSeq_id &id, CScope *scope)
Get sequence length if scope not null, else return max possible TSeqPos.
ENa_strand GetStrand(const CSeq_loc &loc, CScope *scope=0)
Returns eNa_strand_unknown if multiple Bioseqs in loc Returns eNa_strand_other if multiple strands in...
TSeqPos GetStart(const CSeq_loc &loc, CScope *scope, ESeqLocExtremes ext=eExtreme_Positional)
If only one CBioseq is represented by CSeq_loc, returns the position at the start of the location.
CRef< CSeq_loc > Seq_loc_Merge(const CSeq_loc &loc, CSeq_loc::TOpFlags flags, CScope *scope)
Merge ranges in the seq-loc.
CRef< CSeq_loc > Seq_loc_Add(const CSeq_loc &loc1, const CSeq_loc &loc2, CSeq_loc::TOpFlags flags, CScope *scope)
Add two seq-locs.
bool IsSameBioseq(const CSeq_id &id1, const CSeq_id &id2, CScope *scope, CScope::EGetBioseqFlag get_flag=CScope::eGetBioseq_All)
Determines if two CSeq_ids represent the same CBioseq.
const CBioSource * GetBioSource(const CBioseq &bioseq)
Retrieve the BioSource object for a given bioseq handle.
string GetAccessionForGi(TGi gi, CScope &scope, EAccessionVersion use_version=eWithAccessionVersion, EGetIdType flags=0)
Retrieve the accession for a given GI.
static void Translate(const string &seq, string &prot, const CGenetic_code *code, bool include_stop=true, bool remove_trailing_X=false, bool *alt_start=NULL, bool is_5prime_complete=true, bool is_3prime_complete=true)
Translate a string using a specified genetic code.
@ fIs5PrimePartial
= 0x4 Translate first codon even if not start codon (because sequence is 5' partial)
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
const CSeqFeatData & GetData(void) const
TInst_Length GetInst_Length(void) const
@ eCoding_Iupac
Set coding to printable coding (Iupacna or Iupacaa)
const CSeq_loc & GetLocation(void) const
void GetSeqData(TSeqPos start, TSeqPos stop, string &buffer) const
Fill the buffer string with the sequence data for the interval [start, stop).
const_iterator begin(void) const
const_iterator end(void) const
TObjectType * GetPointer(void) const THROWS_NONE
Get pointer,.
void Reset(void)
Reset reference object.
void Reset(void)
Reset reference object.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
CTempString literal(const char(&str)[Size])
Templatized initialization from a string literal.
static string LongToString(long value, TNumToStringFlags flags=0, int base=10)
Convert Int to string.
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
CTempString substr(size_type pos) const
Obtain a substring from this string, beginning at a given offset.
static enable_if< is_arithmetic< TNumeric >::value||is_convertible< TNumeric, Int8 >::value, string >::type NumericToString(TNumeric value, TNumToStringFlags flags=0, int base=10)
Convert numeric value to string.
size_type find(const CTempString match, size_type pos=0) const
Find the first instance of the entire matching string within the current string, beginning at an opti...
TGenome GetGenome(void) const
Get the Genome member data.
bool IsLim(void) const
Check if variant Lim is selected.
TLim GetLim(void) const
Get the variant data.
TMin GetMin(void) const
Get the Min member data.
bool IsRange(void) const
Check if variant Range is selected.
TMax GetMax(void) const
Get the Max member data.
const TRange & GetRange(void) const
Get the variant data.
@ eLim_tl
space to left of position
@ eLim_tr
space to right of position
bool IsCdregion(void) const
Check if variant Cdregion is selected.
const TFuzz_from & GetFuzz_from(void) const
Get the Fuzz_from member data.
bool IsEmpty(void) const
Check if variant Empty is selected.
const TPnt & GetPnt(void) const
Get the variant data.
TPoint GetPoint(void) const
Get the Point member data.
const TFuzz_to & GetFuzz_to(void) const
Get the Fuzz_to member data.
TFrom GetFrom(void) const
Get the From member data.
bool IsSetFuzz(void) const
Check if a value has been assigned to Fuzz data member.
const TFuzz & GetFuzz(void) const
Get the Fuzz member data.
bool IsSetFuzz_to(void) const
Check if a value has been assigned to Fuzz_to data member.
TTo GetTo(void) const
Get the To member data.
bool IsWhole(void) const
Check if variant Whole is selected.
bool IsInt(void) const
Check if variant Int is selected.
const TInt & GetInt(void) const
Get the variant data.
bool IsNull(void) const
Check if variant Null is selected.
bool IsSetFuzz_from(void) const
Check if a value has been assigned to Fuzz_from data member.
bool IsPnt(void) const
Check if variant Pnt is selected.
bool IsNcbipna(void) const
Check if variant Ncbipna is selected.
bool IsNcbieaa(void) const
Check if variant Ncbieaa is selected.
bool IsNcbi8aa(void) const
Check if variant Ncbi8aa is selected.
void SetSeq_data(TSeq_data &value)
Assign a value to Seq_data data member.
bool IsIupacaa(void) const
Check if variant Iupacaa is selected.
const TIupacna & GetIupacna(void) const
Get the variant data.
bool IsNcbistdaa(void) const
Check if variant Ncbistdaa is selected.
bool IsNcbi4na(void) const
Check if variant Ncbi4na is selected.
bool IsNcbi8na(void) const
Check if variant Ncbi8na is selected.
TLength GetLength(void) const
Get the Length member data.
const TNcbieaa & GetNcbieaa(void) const
Get the variant data.
bool IsNcbipaa(void) const
Check if variant Ncbipaa is selected.
bool IsSetSeq_data(void) const
may have the data Check if a value has been assigned to Seq_data data member.
bool IsNcbi2na(void) const
Check if variant Ncbi2na is selected.
bool IsIupacna(void) const
Check if variant Iupacna is selected.
const TSeq_data & GetSeq_data(void) const
Get the Seq_data member data.
@ e_Ncbieaa
extended ASCII 1 letter aa codes
@ e_Iupacna
IUPAC 1 letter nuc acid code.
TMol GetMol(void) const
Get the Mol member data.
bool IsSetStop_offset_fuzz(void) const
Check if a value has been assigned to Stop_offset_fuzz data member.
list< CRef< CVariantPlacement > > TPlacements
list< CRef< CVariation > > TVariations
const TStop_offset_fuzz & GetStop_offset_fuzz(void) const
Get the Stop_offset_fuzz member data.
bool IsInstance(void) const
Check if variant Instance is selected.
const TSet & GetSet(void) const
Get the variant data.
bool IsSetSeq(void) const
for situations in which a raw location isn't sufficient Check if a value has been assigned to Seq dat...
const TInstance & GetInstance(void) const
Get the variant data.
bool IsSetStart_offset_fuzz(void) const
Check if a value has been assigned to Start_offset_fuzz data member.
const TVariations & GetVariations(void) const
Get the Variations member data.
TStop_offset GetStop_offset(void) const
Get the Stop_offset member data.
const TSeq & GetSeq(void) const
Get the Seq member data.
const TData & GetData(void) const
Get the Data member data.
void SetMol(TMol value)
Assign a value to Mol data member.
bool IsSetStop_offset(void) const
Check if a value has been assigned to Stop_offset data member.
const TStart_offset_fuzz & GetStart_offset_fuzz(void) const
Get the Start_offset_fuzz member data.
bool IsSetStart_offset(void) const
location refinements, describing offsets into introns from product coordinates.
const TLoc & GetLoc(void) const
Get the Loc member data.
bool IsSet(void) const
Check if variant Set is selected.
void SetLoc(TLoc &value)
Assign a value to Loc data member.
TType GetType(void) const
Get the Type member data.
TStart_offset GetStart_offset(void) const
Get the Start_offset member data.
@ eData_set_type_genotype
changes on different alleles in the same genotype, e.g. g.[476C>T]+[476C>T]
@ eData_set_type_chimeric
e.g. c.[1C>T//2G>T]
@ eData_set_type_alleles
set represents a set of observed alleles
@ eData_set_type_package
set represents a package of observations at a given location, generally containing asserted + referen...
@ eData_set_type_compound
complex change at the same location on the same molecule
@ eData_set_type_individual
same organism; allele relationship unknown, e.g. g.[476C>T(+)183G>C]
@ eData_set_type_products
different products arising from the same variation in a precursor, e.g. r.[13g>a, 13_88del]
@ eData_set_type_haplotype
changes on the same allele, e.g r.[13g>a;15u>c]
@ eData_set_type_mosaic
different genotypes in the same individual
@ eMol_cdna
"c." coordinates in HGVS
@ eMol_mitochondrion
"mt." coordinates in HGVS
@ eMol_rna
"n." coordinates in HGVS
@ eMol_protein
"p." coordinates in HGVS
@ eMol_genomic
"g." coordinates in HGVS
@ eMethod_E_computational
TType GetType(void) const
Get the Type member data.
const TLoc & GetLoc(void) const
Get the variant data.
const TDelta & GetDelta(void) const
Get the Delta member data.
const TSeq & GetSeq(void) const
Get the Seq member data.
const TLiteral & GetLiteral(void) const
Get the variant data.
TMultiplier GetMultiplier(void) const
Get the Multiplier member data.
list< CRef< CDelta_item > > TDelta
bool IsLiteral(void) const
Check if variant Literal is selected.
bool IsSetMultiplier(void) const
Multiplier allows representing a tandem, e.g.
bool IsThis(void) const
Check if variant This is selected.
bool IsLoc(void) const
Check if variant Loc is selected.
@ eType_snv
delta=[morph of length 1] NOTE: this is snV not snP; the latter requires frequency-based validation t...
@ eType_inv
delta=[del, ins.seq= RevComp(variation-location)]
@ eType_mnp
delta=[morph of length >1]
@ eType_microsatellite
delta=[del, ins.seq= repeat-unit with fuzzy multiplier] variation-location is the microsat expansion ...
@ eType_delins
delta=[del, ins]
@ eType_prot_nonsense
delta=[del]; variation-location is the tail of the protein being truncated
@ eType_transposon
delta=[del, ins.seq= known donor or 'this'] variation-location is equiv of transposon locs.
@ eType_prot_other
delta=any
@ eType_prot_silent
delta=[morph of length 1, same AA as at variation-location]
@ eType_prot_missense
delta=[morph of length 1]
@ eType_prot_neutral
delta=[morph of length 1]
@ eAction_ins_before
insert seq before the location.start
@ eObservation_variant
inst represent the observed variant at a given position
@ eObservation_asserted
inst represents the asserted base at a position
@ eObservation_reference
inst represents the reference base at the position
string Ncbieaa2HgvsAA(const string &prot_str)
bool ContainsAnyFuzz(CConstRef< CVariantPlacement > p)
bool IsMitochondrion(CBioseq_Handle bsh)
Int4 delta(size_t dimension_, const Int4 *score_)
Calculate upstream (first) and downstream(second) flanks for loc.
CRef< CSeq_loc > upstream