(
charc :
str) {
162 for(
i= 0;
i<
str.length(); ++
i) {
163 if(
str[
i] !=
'\n')
166 for(
size_tk =
i+ 1; k <
str.length() &&
isspace(
str[k]); ++k)
170 str.erase(
i+ 1, j);
174 while(!
str.empty()) {
175 charc =
str.back();
176 if(c ==
' '|| c ==
';'|| c ==
','|| c ==
'\"'|| c ==
'\t')
188 boolno_create =
true;
189 boolno_update =
true;
191 for(
const auto& desc : descrs) {
192 if(desc->IsCreate_date())
194 else if(desc->IsUpdate_date())
197 if(no_create ==
false&& no_update ==
false)
204 return(no_create || no_update);
218 for(
const auto& desc : bioseq.
GetDescr().
Get()) {
223 for(
const auto& annot : bioseq.
GetAnnot()) {
224 if(! annot->IsFtable())
227 for(
const auto& feat : annot->GetData().GetFtable()) {
228 if(feat->IsSetData() && feat->GetData().IsPub())
232 for(
const auto& feat : annot->GetData().GetFtable()) {
233 if(! feat->IsSetData() || ! feat->GetData().IsImp())
236 const CImp_feat& imp = feat->GetData().GetImp();
237 if(imp.
GetKey() ==
"Site-ref") {
269 autotemp = chain.cbegin();
270 for(; temp != chain.cend(); ++temp) {
271 const auto& dblk = *temp;
272 if(dblk.mType !=
type)
277 const auto& subblocks = dblk.GetSubBlocks();
278 for(
const auto& dbp : subblocks)
283 autodbp = subblocks.cbegin();
287 if(temp == chain.cend())
298 stringtemp = ibp->
acnum;
299 if(accver && ibp->
vernum> 0) {
301temp += to_string(ibp->
vernum);
319 const string& gapType(gfp.
gap_type);
320 if(gapType ==
"unknown"|| gapType ==
"within scaffold"|| gapType ==
"repeat within scaffold") {
335CDelta_ext::Tdata::iterator
delta= deltas.begin();
340 if(! (*delta)->IsLiteral())
344 if(
literal.GetLength() !=
static_cast<Uint4>(gfp->to - gfp->from + 1)) {
346 "The lengths of the CONTIG/CO line gaps disagrees with the lengths of assembly_gap features. First assembly_gap with a mismatch is at \"{}..{}\".",
357 if(*drop || (
delta== deltas.end() && gfp == gf.end()))
360 if(
delta== deltas.end() && gfp != gf.end()) {
362 "The number of the assembly_gap features exceeds the number of CONTIG/CO line gaps. First extra assembly_gap is at \"{}..{}\".",
365}
else if(
delta!= deltas.end() && gfp == gf.end()) {
367 if((*delta)->IsLiteral())
371 if(
delta== deltas.end())
392 if(sequence.empty() || sequence.size() != bioseq.
GetLength())
396 for(
autotgfp = gf.begin(); tgfp != gf.end(); ++tgfp) {
397 auto constnxt =
next(tgfp);
398 if(nxt != gf.end()) {
399p = sequence.c_str() + tgfp->to;
400 for(
i= tgfp->to + 1; i < nxt->from; p++,
i++)
403 if(
i== nxt->from && nxt->from > tgfp->to + 1) {
405 "A run of all-N sequence exists between the gap features located at \"{}..{}\" and \"{}..{}\".",
406tgfp->from, tgfp->to, nxt->from, nxt->to);
407tgfp->rightNs =
true;
410nextfrom = nxt->from;
414 if(tgfp->leftNs ==
false&& tgfp->from - prevto > 10) {
415 for(p = sequence.c_str() + tgfp->from - 11,
i= 0;
i< 10; p++,
i++)
420 "A run of N's greater or equal than 10 abuts the gap feature at \"{}..{}\" : possible problem with the boundaries of the gap.",
421tgfp->from, tgfp->to);
425 if(tgfp->rightNs ==
false&& nextfrom - tgfp->to > 10) {
426 for(p = sequence.c_str() + tgfp->to,
i= 0;
i< 10; p++,
i++)
431 "A run of N's greater or equal than 10 abuts the gap feature at \"{}..{}\" : possible problem with the boundaries of the gap.",
432tgfp->from, tgfp->to);
436 for(
i= tgfp->from - 1, p = sequence.c_str() +
i; i < tgfp->to; p++,
i++)
441 "The sequence data associated with the gap feature at \"{}..{}\" contains basepairs other than N.",
442tgfp->from, tgfp->to);
459 if(tgfp->from - prevto - 1 > 0) {
460 len= tgfp->from - prevto - 1;
461 delta->SetLiteral().SetLength(
len);
462 delta->SetLiteral().SetSeq_data().SetIupacna().Set() = sequence.substr(prevto,
len);
464deltas.push_back(
delta);
469 len= tgfp->to - tgfp->from + 1;
470 delta->SetLiteral().SetLength(
len);
471 if(tgfp->estimated_length == -100) {
472 delta->SetLiteral().SetFuzz().SetLim();
473}
else if(tgfp->estimated_length !=
len) {
474 delta->SetLiteral().SetFuzz().SetRange().SetMin(tgfp->estimated_length);
475 delta->SetLiteral().SetFuzz().SetRange().SetMax(
len);
478 if(tgfp->assembly_gap)
481deltas.push_back(
delta);
486 if(tgfp == gf.end()) {
491 delta->SetLiteral().SetLength(
len);
492 delta->SetLiteral().SetSeq_data().SetIupacna().Set() = sequence.substr(prevto,
len);
494deltas.push_back(
delta);
500 if(! deltas.empty()) {
501bioseq.
SetInst().SetExt().SetDelta().Set().swap(deltas);
503bioseq.
SetInst().ResetSeq_data();
522 if(sequence.empty() || sequence.size() != bioseq.
GetLength())
525vector<Char>
buf(sequence.begin(), sequence.end());
532 for(q = p; *p !=
'\0';) {
538 for(
r= p, p++,
i= 1; *p ==
'N';
i++)
551j = (
Int4)(
r- q);
553 delta->SetLiteral().SetLength(j);
554 delta->SetLiteral().SetSeq_data().SetIupacna().Set(
string(q,
r));
556deltas.push_back(
delta);
563 delta->SetLiteral().SetLength(
i);
565 delta->SetLiteral().SetFuzz().SetLim();
568deltas.push_back(
delta);
576 delta->SetLiteral().SetLength(j);
577 delta->SetLiteral().SetSeq_data().SetIupacna().Set(
string(q, p));
579deltas.push_back(
delta);
582 if(deltas.size() > 1) {
583bioseq.
SetInst().SetExt().SetDelta().Set().swap(deltas);
585bioseq.
SetInst().ResetSeq_data();
590 "or more N's to indicate gaps between component contigs. " 591 "This could be an error, or perhaps sequencing is finished " 592 "and this record should not be Phase 1.");
598 "for one contig, and hence gaps are not expected. But " 599 "this record does have one (ore more) gaps, hence it " 600 "may require review.");
603 "of at least 20 N's. They could indicate gaps, " 604 "but have not been treated that way because " 605 "they are below the minimum of 100 N's.");
623 if(extra_accs.empty())
626 if(extra_accs.size() != 2)
629CGB_block::TExtra_accessions::const_iterator it = extra_accs.begin();
634acc1 = ppacc1.data();
635acc2 = ppacc2.data();
637 if(! acc1 && ! acc2)
639 if(! acc1 || ! acc2)
673 for(p = master; *p !=
'\0'&& (*p < '0' || *p >
'9');)
682 for(q = range; *q !=
'\0'&& (*q < '0' || *q >
'9');)
691 boolret = (master == range);
707ext.GetDelta().IsSet()) {
708 const auto&
delta= ext.GetDelta().Get();
709 returnany_of(begin(
delta),
711[](
CRef<CDelta_seq>pDeltaSeq) {
return(pDeltaSeq && pDeltaSeq->IsLoc()); });
719 const autoidType =
id.Which();
734 const autoprimaryType = primary.
Which();
737 const boolprimaryIsGi = primaryIsAccession ?
false: (primaryType ==
CSeq_id::e_Gi);
739unique_ptr<string> pPrimaryAccessionString;
741 for(
const auto& pDeltaSeq : delta_ext.
Get()) {
742 if(pDeltaSeq && pDeltaSeq->IsLoc()) {
743 autopId = pDeltaSeq->GetLoc().GetId();
744 const auto& deltaIdType = pId->Which();
745 if(deltaIdType == primaryType) {
746 if(pId->GetSeqIdString() == primaryString) {
752 autodeltaAccessionHandle = scope.
GetAccVer(deltaHandle);
753 if(! deltaAccessionHandle) {
757 if(deltaAccessionHandle.GetSeqId()->GetSeqIdString() ==
762 if(! pPrimaryAccessionString) {
764 autoprimaryAccessionHandle = scope.
GetAccVer(primaryGiHandle);
765 if(! primaryAccessionHandle) {
768pPrimaryAccessionString =
769make_unique<string>(primaryAccessionHandle.GetSeqId()->GetSeqIdString());
772 if(*pPrimaryAccessionString == pId->GetSeqIdString()) {
785 autoit = find_if(begin(accession),
787[](
charc) {
return! (
isalpha(c) || c ==
'_'); });
789 _ASSERT(it != accession.end());
790 return int(distance(accession.begin(), it));
816string_view primaryAccession(acc);
821vector<string> candidatesAccs;
822vector<CRef<CSeq_id>> candidatesIds;
823vector<CSeq_id_Handle> candidatesIdhs;
825list<CRef<CSeq_id>> replaces;
827 for(
const auto& accessionString : hist) {
828 if(accessionString.empty())
842 if(pri_acc == 0 || pri_acc == 2) {
847 if(prefixLength <= 0) {
851 if((accessionString.length() <= prefixLength ||
852!
NStr::EqualNocase(accessionString, 0, prefixLength, primaryAccession.substr(0, prefixLength)) ||
853!
isdigit(accessionString[prefixLength])) &&
861candidatesAccs.push_back(accessionString);
862candidatesIds.push_back(
id);
867 for(
size_t i= 0;
i< candidatesIdhs.size(); ++
i) {
868 auto& accessionString = candidatesAccs[
i];
869 auto id= candidatesIds[
i];
870 autoidChoice =
id->Which();
871 autosecondaryBsh = secondaryBshs[
i];
872 boolIsConOrScaffold =
false;
877 "Failed to determine division code for secondary accession \"{}\". Entry dropped.",
882 if(! IsConOrScaffold && pricon && idChoice == acctype) {
886 if(IsConOrScaffold && ! pricon) {
891replaces.push_back(
id);
896replaces.push_back(
id);
900 if(! replaces.empty()) {
901 auto& hist_replaces_ids = bioseq.
SetInst().SetHist().SetReplaces().SetIds();
902hist_replaces_ids.splice(hist_replaces_ids.end(), replaces);
911 if(! s1 || ! s2 || !
StringEqu(s1, s2))
919 booldeldiv =
false;
921 for(TKeywordList::iterator
key= kwds.begin();
key!= kwds.end();) {
922 booldelnode =
false;
923 boolerrpost =
false;
924 if(*
key==
"HTGS_PHASE0") {
925 if(ibp->
htg!= 0 && ibp->
htg!= 5) {
927 if(ibp->
htg== 1 || ibp->
htg== 2 || ibp->
htg== 3)
934}
else if(*
key==
"HTGS_PHASE1") {
935 if(ibp->
htg!= 0 && ibp->
htg!= 5) {
937 if(ibp->
htg== 2 || ibp->
htg== 3 || ibp->
htg== 4)
944}
else if(*
key==
"HTGS_PHASE2") {
945 if(ibp->
htg!= 0 && ibp->
htg!= 5) {
947 if(ibp->
htg== 1 || ibp->
htg== 3 || ibp->
htg== 4)
954}
else if(*
key==
"HTGS_PHASE3") {
955 if(ibp->
htg!= 0 && ibp->
htg!= 5) {
957 if(ibp->
htg== 1 || ibp->
htg== 2 || ibp->
htg== 4)
964}
else if(*
key==
"HTG") {
965 if(ibp->
htg== 0) {
990forward_list<FTATpaSpan> ftsp;
992 if(ftbp.empty() || length < 1)
995ftsp.emplace_front(ftbp.front().from1, ftbp.front().to1);
996 autotftsp = ftsp.begin();
997 for(
autotftbp = ftbp.begin(); tftbp != ftbp.end(); ++tftbp) {
998 Int4i1 = tftbp->to1 - tftbp->from1;
999 Int4i2 = tftbp->to2 - tftbp->from2;
1000 Int4j = (i2 > i1) ? (i2 - i1) : (i1 - i2);
1003 if(i1 < 3000 && j * 10 > i1) {
1006 "Span \"{}..{}\" of this TPA record differs from the span \"{}..{}\" of the contributing primary sequence or trace record by more than 10 percent.",
1007tftbp->from1, tftbp->to1, tftbp->from2, tftbp->to2);
1010 "Span \"{}..{}\" of this TSA record differs from the span \"{}..{}\" of the contributing primary sequence or trace record by more than 10 percent.",
1011tftbp->from1, tftbp->to1, tftbp->from2, tftbp->to2);
1014 if(i1 >= 3000 && j > 300) {
1017 "Span \"{}..{}\" of this TPA record differs from span \"{}..{}\" of the contributing primary sequence or trace record by more than 300 basepairs.",
1018tftbp->from1, tftbp->to1, tftbp->from2, tftbp->to2);
1021 "Span \"{}..{}\" of this TSA record differs from span \"{}..{}\" of the contributing primary sequence or trace record by more than 300 basepairs.",
1022tftbp->from1, tftbp->to1, tftbp->from2, tftbp->to2);
1025 if(tftbp->from1 <= tftsp->to + 1) {
1026 if(tftbp->to1 > tftsp->to)
1027tftsp->to = tftbp->to1;
1031tftsp = ftsp.emplace_after(tftsp, tftbp->from1, tftbp->to1);
1034 if(ftsp.front().from - 1 > 50) {
1036 FtaErrPost(
SEV_ERROR,
ERR_TPA_IncompleteCoverage,
"This TPA record contains a sequence region \"1..{}\" greater than 50 basepairs long that is not accounted for by a contributing primary sequence or trace record.", ftsp.front().from - 1);
1038 FtaErrPost(
SEV_ERROR,
ERR_TSA_IncompleteCoverage,
"This TSA record contains a sequence region \"1..{}\" greater than 50 basepairs long that is not accounted for by a contributing primary sequence or trace record.", ftsp.front().from - 1);
1041 for(
autoit = ftsp.begin(); it != ftsp.end();) {
1042 autoit_next =
next(it);
1043 if(it_next != ftsp.end() && it_next->from - it->to - 1 > 50) {
1045 FtaErrPost(
SEV_ERROR,
ERR_TPA_IncompleteCoverage,
"This TPA record contains a sequence region \"{}..{}\" greater than 50 basepairs long that is not accounted for by a contributing primary sequence or trace record.", it->to + 1, it_next->from - 1);
1047 FtaErrPost(
SEV_ERROR,
ERR_TSA_IncompleteCoverage,
"This TSA record contains a sequence region \"{}..{}\" greater than 50 basepairs long that is not accounted for by a contributing primary sequence or trace record.", it->to + 1, it_next->from - 1);
1048}
else if(it_next == ftsp.end() && length - it->to > 50) {
1050 FtaErrPost(
SEV_ERROR,
ERR_TPA_IncompleteCoverage,
"This TPA record contains a sequence region \"{}..{}\" greater than 50 basepairs long that is not accounted for by a contributing primary sequence or trace record.", it->to + 1, length);
1052 FtaErrPost(
SEV_ERROR,
ERR_TSA_IncompleteCoverage,
"This TSA record contains a sequence region \"{}..{}\" greater than 50 basepairs long that is not accounted for by a contributing primary sequence or trace record.", it->to + 1, length);
1128 const char* bad_accession;
1141 for(p =
offset; *p !=
'\0'; p++)
1148 buf.append(
"\n");
1157ftbp.emplace_front(0, 0);
1160bad_interval =
false;
1161bad_accession =
nullptr;
1167 for(p += col_data; *p ==
' ';)
1169 for(
r= p; *p >=
'0'&& *p <=
'9';)
1172bad_interval =
true;
1179 for(
r= p; *p >=
'0'&& *p <=
'9';)
1181 if(*p !=
' '&& *p !=
'\n'&& *p !=
'\0') {
1182bad_interval =
true;
1190bad_interval =
true;
1194 autoft = ftbp.begin();
1196 autoit_next =
next(ft);
1197 if(it_next == ftbp.end() || (it_next->from1 > from1) ||
1198(it_next->from1 == from1 && it_next->to1 > to1))
1201 autotftbp = ftbp.emplace_after(ft, from1, to1);
1205 for(
r= p; *p !=
'\0'&& *p !=
' '&& *p !=
'\n';)
1213 for(
t=
r; *
t>=
'0'&& *
t<=
'9';)
1217bad_accession = tftbp->accession;
1224 for(
r= tftbp->accession + 2; *
r==
'0';)
1227bad_accession = tftbp->accession;
1230 while(*
r>=
'0'&& *
r<=
'9')
1233bad_accession = tftbp->accession;
1241bad_accession = tftbp->accession;
1254 for(
r= p; *p >=
'0'&& *p <=
'9';)
1257bad_interval =
true;
1263 for(
r= p; *p >=
'0'&& *p <=
'9';)
1265 if(*p !=
' '&& *p !=
'\n'&& *p !=
'\0') {
1266bad_interval =
true;
1273 if(tftbp->from2 >= tftbp->to2) {
1274bad_interval =
true;
1283 for(p++; *p ==
' ';)
1294 if(bad_line || bad_interval || bad_accession) {
1300}
else if(bad_accession) {
1321 if(! assembly.empty())
1329 for(
autoit = ftbp.begin(); it != ftbp.end(); ++it) {
1330 Int4len1 = it->to1 - it->from1 + 1;
1331 Int4len2 = it->to2 - it->from2 + 1;
1340seg.SetNumseg((len1 == len2) ? 1 : 2);
1342seg.SetStarts().push_back(it->from1 - 1);
1343seg.SetStarts().push_back(it->from2 - 1);
1347seg.SetStarts().push_back(-1);
1348seg.SetStarts().push_back(it->from2 - 1 + len1);
1350seg.SetStarts().push_back(it->from1 - 1 + len2);
1351seg.SetStarts().push_back(-1);
1356seg.SetLens().push_back(len1);
1357 else if(len1 < len2) {
1358seg.SetLens().push_back(len1);
1359seg.SetLens().push_back(len2 - len1);
1361seg.SetLens().push_back(len2);
1362seg.SetLens().push_back(len1 - len2);
1366seg.SetStrands().push_back(it->strand);
1370seg.SetStrands().push_back(it->strand);
1374text_id->SetAccession(acnum);
1377text_id->SetVersion(vernum);
1382seg.SetIds().push_back(
id);
1388 for(
r= it->accession + 2; *
r==
'0';)
1393 tag.SetTag().SetStr(
r);
1396seg.SetIds().push_back(gen_id);
1399otext_id->SetAccession(it->accession);
1401 if(it->version > 0)
1402otext_id->SetVersion(it->version);
1405 SetTextId(it->sicho, *aux_id, *otext_id);
1409seg.SetIds().push_back(aux_id);
1411align_set.
Set().push_back(align);
1414assembly.push_back(root_align);
1423 if(! where || ! what || *where ==
'\0'|| *what ==
'\0')
1427 char* res =
nullptr;
1428 for(
char* p = where; *p !=
'\0'; p++)
1448interval.
SetId().Assign(seq_id);
1456 boolbad_format =
false;
1458 autois_digit = [](
charc) {
return '0'<= c && c <=
'9'; };
1460 if(name.empty() || name.size() < 7)
1462 else if(name[0] !=
'G'|| name[1] !=
'C'|| (name[2] !=
'F'&& name[2] !=
'A') ||
1463name[3] !=
'_'|| ! is_digit(name[4]))
1466 autop = name.begin() + 5;
1467 autoe = name.end();
1468 while(p < e && is_digit(*p))
1470 if(! (p < e && *p ==
'.')) {
1474 if(! (p < e && is_digit(*p)))
1477 if(! std::all_of(p, e, is_digit))
1490 boolbad_format =
false;
1492 autois_digit = [](
charc) {
return '0'<= c && c <=
'9'; };
1494 if(name.size() < 6)
1496 else if(name[0] !=
'P'|| name[1] !=
'R'|| name[2] !=
'J'||
1497(name[3] !=
'E'&& name[3] !=
'N'&& name[3] !=
'D') ||
1498name[4] <
'A'|| name[4] >
'Z'|| ! is_digit(name[5]))
1501 if(! std::all_of(name.begin() + 6, name.end(), is_digit))
1512(name[3] !=
'N'|| name[4] !=
'A')) ||
1514(name[3] !=
'N'|| name[4] !=
'A')))
1523 if(
str.empty()) {
1529 for(
char& c :
str) {
1530 if(c ==
';'|| c ==
','|| c ==
'\t')
1541forward_list<string> res;
1542 autotail = res.before_begin();
1544 for(
autop =
str.begin(); p !=
str.end();) {
1545 while(p !=
str.end() && *p ==
' ')
1548 if(p ==
str.end())
1552 while(p !=
str.end() && *p !=
' ')
1555string_view name(q, p);
1557 if(! std::all_of(name.begin(), name.end(), [](
charc) { return
'0'<= c && c <=
'9'; })) {
1565tail = res.insert_after(tail,
string(name));
1582 boolnewstyle =
false;
1585name =
"GenomeProject:"sv;
1589name =
"Project:"sv;
1593 size_t len= name.size();
1595 auto n=
str.find(ch);
1596 if(
n!= string_view::npos)
1599 if(!
str.starts_with(name)) {
1610 str.remove_prefix(
len);
1620 for(
auto& descr : descrs) {
1621 if(! descr->IsUser() || ! descr->GetUser().IsSetData())
1624user_obj_ptr = &(descr->SetUser());
1628obj_id = &(user_obj_ptr->
SetType());
1630 if(obj_id && obj_id->
IsStr() && obj_id->
GetStr() ==
"DBLink") {
1639 for(
const auto& tvnp : vnp)
1647 id.SetStr(
"DBLink");
1651user_field->
SetLabel().SetStr(
"BioProject");
1654 for(
const auto& tvnp : vnp)
1655user_field->
SetData().SetStrs().push_back(tvnp);
1657user_obj_ptr->
SetData().push_back(user_field);
1665 id.SetStr(
"GenomeProjectsDB");
1667 for(
const auto& tvnp : vnp) {
1670user_field->
SetLabel().SetStr(
"ProjectID");
1672user_obj_ptr->
SetData().push_back(user_field);
1675user_field->
SetLabel().SetStr(
"ParentID");
1676user_field->
SetData().SetInt(0);
1677user_obj_ptr->
SetData().push_back(user_field);
1683descr->
SetUser(*user_obj_ptr);
1684descrs.push_back(descr);
1691 if(
id.
size() > 3 &&
1692(
id[0] ==
'E'||
id[0] ==
'S'||
id[0] ==
'D') &&
id[1] ==
'R'&&
1693(
id[2] ==
'A'||
id[2] ==
'P'||
id[2] ==
'R'||
id[2] ==
'S'||
1694 id[2] ==
'X'||
id[2] ==
'Z')) {
1695 if(std::all_of(
id.begin() + 3,
id.end(), [](
charc) {
return '0'<= c && c <=
'9'; }))
1709 if(
id.
size() > 5 &&
id[0] ==
'S'&&
id[1] ==
'A'&&
1710 id[2] ==
'M'&& (
id[3] ==
'N'||
id[3] ==
'E'||
id[3] ==
'D')) {
1711 autop =
id.begin() + 4;
1712 if(*p ==
'A'|| *p ==
'G')
1714 if(std::all_of(p,
id.end(), [](
charc) {
return '0'<= c && c <=
'9'; }))
1733 if(
str.empty()) {
1738 for(
char& c :
str)
1739 if(c ==
';'|| c ==
'\t')
1742forward_list<string> res;
1743 autotvnp = res.before_begin();
1744 autotagvnp = res.end();
1750bioproject =
false;
1752 autonl =
str.begin();
1753 for(
autop =
str.begin(); p !=
str.end(); got_nl =
false) {
1754 while(p !=
str.end() && (*p ==
' '|| *p ==
'\n'|| *p ==
':'|| *p ==
',')) {
1763 auto t= std::find(p,
str.end(),
':');
1764 if(
t!=
str.end()) {
1768 if((
tag.find(
',') == string::npos) && (
tag.find(
'\n') == string::npos)) {
1771 if(! (
tag==
"Project:") &&
1772! (
tag==
"Assembly:") &&
1773! (
tag==
"BioSample:") &&
1774! (
tag==
"BioProject:") &&
1775! (
tag==
"Sequence Read Archive:") &&
1776! (
tag==
"Trace Assembly Archive:")) {
1781bioproject = (
tag==
"BioProject:");
1782sra = (
tag==
"Sequence Read Archive:");
1783biosample = (
tag==
"BioSample:");
1784assembly = (
tag==
"Assembly:");
1786 if(! res.empty() && tvnp->find(
':') != string::npos) {
1791 for(
autouvnp = res.cbegin(); uvnp != res.cend(); ++uvnp)
1792 if(*uvnp ==
tag) {
1797tvnp = res.insert_after(tvnp, std::move(
tag));
1805 while(p !=
str.end() && *p !=
','&& *p !=
'\n'&& *p !=
':')
1807 if(p !=
str.end() && *p ==
':') {
1808 while(p !=
str.end() && *p !=
'\n')
1819 if(tagvnp != res.end() && ! tagvnp->empty()) {
1821 for(
autouvnp =
next(tagvnp); uvnp != res.end(); ++uvnp) {
1822 if(! uvnp->empty() && *uvnp == name) {
1843tvnp = res.insert_after(tvnp, std::move(name));
1846 if(! res.empty() && tvnp->find(
':') != string::npos) {
1869 for(
autotvnp = vnp.begin(); tvnp != vnp.end(); ++tvnp) {
1870 if(tvnp->find(
':') != string::npos) {
1874 if(*tvnp ==
"Project:") {
1878 id.SetStr(
"GenomeProjectsDB");
1883 if(user_obj.
Empty())
1886 const char*
str= tvnp->c_str();
1887 if(!
str|| *
str==
'\0')
1891 while(*
str>=
'0'&& *
str<=
'9')
1893 if(*
str!=
'\0') {
1900user_field->
SetLabel().SetStr(
"ProjectID");
1902user_obj->
SetData().push_back(user_field);
1905user_field->
SetLabel().SetStr(
"ParentID");
1906user_field->
SetData().SetInt(0);
1908user_obj->
SetData().push_back(user_field);
1918descrs.push_back(descr);
1922user_field.
Reset();
1925 for(
autotvnp = vnp.begin(); tvnp != vnp.end(); ++tvnp) {
1926 if(tvnp->find(
':') != string::npos) {
1927 if(*tvnp ==
"Project:") {
1934 if(user_obj.
Empty()) {
1936user_obj->
SetType().SetStr(
"DBLink");
1940 for(
autouvnp =
next(tvnp); uvnp != vnp.end(); ++uvnp, ++
i)
1941 if(uvnp->find(
':') != string::npos)
1948user_field->
SetLabel().SetStr(lstr);
1950user_field->
SetData().SetStrs();
1952user_obj->
SetData().push_back(user_field);
1953}
else if(! inpr && user_obj.
NotEmpty()) {
1954user_field->
SetData().SetStrs().push_back(*tvnp);
1963descrs.push_back(descr);
1976 boolfinished =
true;
1979 if(!
delta->IsLoc())
1986 const CSeq_id*
id=
nullptr;
2002 const CTextseq_id* text_id =
id->GetTextseq_Id();
2016 if(good && finished)
2030 if(
id.IsLocal()) {
2034 if(name.empty() &&
id.IsGeneral()) {
2036 if(
tag.GetDb() ==
"SeqLit"||
tag.GetDb() ==
"UnkSeqLit")
2040 if(!
id.IsGenbank() && !
id.IsEmbl() && !
id.IsPir() &&
2041!
id.IsSwissprot() && !
id.IsOther() && !
id.IsDdbj() && !
id.IsPrf() &&
2042!
id.IsTpg() && !
id.IsTpe() && !
id.IsTpd()) {
2052 const CTextseq_id* text_id =
id.GetTextseq_Id();
2069slip->
wgsacc= accession;
2070}
else if(
i== 7) {
2074slip->
wgsacc= accession;
2080 if(
type!=
id.Which()) {
2082new_text_id->Assign(*text_id);
2086 id.SetGeneral().SetDb(
"FlyBase");
2087 id.SetGeneral().SetTag().SetStr(accession);
2090 id.SetPatent(*pat_id);
2102 if(
id.IsGenbank()) {
2107}
else if(
id.IsEmbl()) {
2112}
else if(
id.IsPir()) {
2117}
else if(
id.IsSwissprot()) {
2122}
else if(
id.IsOther()) {
2127}
else if(
id.IsDdbj()) {
2132}
else if(
id.IsPrf()) {
2137}
else if(
id.IsTpg()) {
2142}
else if(
id.IsTpe()) {
2147}
else if(
id.IsTpd()) {
2158 for(
auto& loc : locs) {
2159 if(loc->IsEmpty()) {
2161}
else if(loc->IsWhole()) {
2163}
else if(loc->IsInt()) {
2165}
else if(loc->IsPnt()) {
2167 if(iscon && ! loc->GetPnt().IsSetFuzz()) {
2168 intpoint = loc->GetPnt().GetPoint();
2171interval->
SetTo(point);
2173 if(loc->GetPnt().IsSetStrand())
2174interval->
SetStrand(loc->GetPnt().GetStrand());
2176interval->
SetId(loc->SetPnt().SetId());
2177loc->SetInt(*interval);
2179}
else if(loc->IsPacked_int()) {
2180 for(
auto& interval : loc->SetPacked_int().Set()) {
2183}
else if(loc->IsPacked_pnt()) {
2185}
else if(loc->IsMix()) {
2187}
else if(loc->IsEquiv()) {
2197 const Char* p =
nullptr;
2216 if((tpa > 0 && non_tpa > 0) || tpa > 1 || non_tpa > 1 ||
2220 if(tpa > 0 && non_tpa > 0) {
2228 if(tpa > 1 || non_tpa > 1) {
2231p =
"Entry skipped.";
2263msga[4] = msgb[4] = 0;
2270 if(
i== 3 ||
i== 7) {
2296 return(sli.
total);
2309 for(p =
buf.data(); *p !=
'\0'; p++) {
2313 for(p++; *p ==
' '|| *p ==
'~'; p++)
2318forward_list<string> res;
2319 autovnp = res.before_begin();
2320 for(start =
buf.data();;) {
2332vnp = res.insert_after(vnp, s);
2342 strings(start,
r);
2347vnp = res.insert_after(vnp, s);
2360 if(
tag.empty() || scomment.empty())
2370 id.SetStr(
"StructuredComment");
2373field->
SetLabel().SetStr(
"StructuredCommentPrefix");
2376field->
SetData().SetStr() +=
"-START##";
2378obj->
SetData().push_back(field);
2380 for(
const auto& tvnp : vnp) {
2384 autoq = tvnp.find(
"::");
2385 if(q == string::npos)
2388 if(q > 0 && tvnp[q - 1] ==
' ')
2392 while(q < tvnp.size() && (tvnp[q] ==
' '|| tvnp[q] ==
':'))
2395 if(q == tvnp.size())
2399field->
SetLabel().SetStr(tvnp.substr(0, qq));
2400field->
SetData().SetStr(tvnp.substr(q));
2402obj->
SetData().push_back(field);
2405 if(obj->
GetData().size() < 2) {
2411field->
SetLabel().SetStr(
"StructuredCommentSuffix");
2413field->
SetData().SetStr() +=
"-END##";
2415obj->
SetData().push_back(field);
2425forward_list<string> tagvnp;
2432 if(!
str|| *
str==
'\0')
2440 if(*q ==
'~'|| (*q ==
'#'&& q >
str&& *--q ==
'#') || q ==
str)
2442 if(q[0] !=
'#'|| q[1] !=
'#') {
2457 size_t i=
tag.size();
2473 if(tagvnp.empty()) {
2474tagvnp.push_front(
tag);
2476 for(
autovnp = tagvnp.begin(); vnp != tagvnp.end(); ++vnp) {
2477 if(vnp->substr(2) ==
tag.substr(2)) {
2478 if(vnp->front() !=
' ') {
2480vnp->front() =
' ';
2484 if(
next(vnp) == tagvnp.end()) {
2485tagvnp.insert_after(vnp,
tag);
2491 if(
tag==
"##Metadata") {
2495string_view scomment(p, q);
2496 if(scomment.find(
"::") == string_view::npos) {
2503 if(cur.
Empty()) {
2508objs.push_back(cur);
2530 while(fgets(
buf, 1023, fd)) {
2531 if(
buf[0] ==
'>'&& ret[0] !=
'\0')
2542 if(seq_entry.
IsSeq()) {
2545}
else if(seq_entry.
IsSet()) {
2553 for(TSeqdescList::iterator descr = descrs->begin(); descr != descrs->end();) {
2554 if(! (*descr)->IsUser()) {
2566descr = descrs->erase(descr);
2575 boolgot_comment =
false;
2576 boolgot_dblink =
false;
2578 for(
const auto& descr : bioseq.
GetDescr().
Get()) {
2579 if(! descr->IsUser())
2586 const string& user_type_str = user_obj.
GetType().
GetStr();
2588 if(user_type_str ==
"StructuredComment")
2589got_comment =
true;
2590 else if(user_type_str ==
"GenomeProjectsDB")
2592 else if(user_type_str ==
"DBLink") {
2593 for(
const auto& field : user_obj.
GetData()) {
2594 if(! field->IsSetLabel() || ! field->GetLabel().IsStr() ||
2595field->GetLabel().GetStr() !=
"BioProject")
2623 for(
auto& descr : bioseq.
SetDescr().Set()) {
2624 if(descr->IsMolinfo()) {
2625mol_info = &descr->SetMolinfo();
2637bioseq.
SetDescr().Set().push_back(descr);
2647 FtaErrPost(
SEV_INFO,
ERR_SEQUENCE_HasManyComponents,
"An OnlyNearFeatures FeatureFetchPolicy User-object has been added to this record because it is constructed from {} components, which exceeds the threshold of 999 for User-object creation.", num);
2654field->
SetLabel().SetStr(
"Policy");
2655field->
SetData().SetStr(
"OnlyNearFeatures");
2659bsp.
SetDescr().Set().push_back(descr);
2665 for(
size_t i=
str.find(
"{ECO:");
i!= string::npos;
i=
str.find(
"{ECO:",
i)) {
2666 size_tj =
str.find(
'}',
i);
2667 if(j == string::npos)
2670 if(
i> 0 &&
str[
i- 1] ==
' ')
2672 if(
i> 0 && j <
str.size()) {
2673 if((
str[
i- 1] ==
'.'&&
str[j] ==
'.') ||
2674(
str[
i- 1] ==
';'&&
str[j] ==
';')) {
2678 str.erase(
i, j -
i);
2691 for(
const auto& field : uop->
GetData()) {
2692 if(! field->IsSetData() || ! field->GetData().IsStrs() || ! field->IsSetNum() || field->GetNum() < 1 ||
2693! field->IsSetLabel() || ! field->GetLabel().IsStr() || field->GetLabel().GetStr() !=
"Sequence Read Archive")
2697 if(
str.size() > 2 &&
2698(
str[0] ==
'D'||
str[0] ==
'E'||
str[0] ==
'S') &&
str[1] ==
'R'&&
2699(
str[2] ==
'R'||
str[2] ==
'X'||
str[2] ==
'Z')) {
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.
static bool s_IsConOrScaffold(CBioseq_Handle bsh)
void AssemblyGapsToDelta(CBioseq &bioseq, TGapFeatsList &gf, bool *drop)
static bool fta_validate_bioproject(string_view name, Parser::ESource source)
bool no_reference(const CBioseq &bioseq)
void SeqToDelta(CBioseq &bioseq, Int2 tech)
CMolInfo::TTech fta_check_con_for_wgs(CBioseq &bioseq)
bool fta_check_htg_kwds(TKeywordList &kwds, IndexblkPtr ibp, CMolInfo &mol_info)
void fta_set_molinfo_completeness(CBioseq &bioseq, const Indexblk *ibp)
void fta_add_hist(ParserPtr pp, CBioseq &bioseq, CGB_block::TExtra_accessions &extra_accs, Parser::ESource source, CSeq_id::E_Choice acctype, bool pricon, const char *acc)
static bool fta_ranges_to_hist(const CGB_block::TExtra_accessions &extra_accs)
static int sGetPrefixLength(string_view accession)
bool fta_parse_tpa_tsa_block(CBioseq &bioseq, char *offset, char *acnum, Int2 vernum, size_t len, Int2 col_data, bool tpa)
bool g_DoesNotReferencePrimary(const CDelta_ext &delta_ext, const CSeq_id &primary, CScope &scope)
Int4 fta_fix_seq_loc_id(TSeqLocList &locs, ParserPtr pp, string_view location, string_view name, bool iscon)
static forward_list< string > fta_tokenize_project(string str, Parser::ESource source, bool newstyle)
string GetQSFromFile(FILE *fd, const Indexblk *ibp)
CRef< CSeq_loc > fta_get_seqloc_int_whole(const CSeq_id &seq_id, size_t len)
static void CreateSeqGap(CSeq_literal &seq_lit, GapFeats &gfp)
bool fta_strings_same(const char *s1, const char *s2)
static void fta_check_tpa_tsa_coverage(const FTATpaBlockList &ftbp, Int4 length, bool tpa)
bool check_cds(const DataBlk &entry, Parser::EFormat format)
static bool s_IsAccession(const CSeq_id &id)
bool fta_if_valid_sra(string_view id, bool dblink)
static void fta_validate_assembly(string_view name)
void fta_create_far_fetch_policy_user_object(CBioseq &bsp, Int4 num)
void fta_tsa_tls_comment_dblink_check(const CBioseq &bioseq, bool is_tsa)
void fta_remove_cleanup_user_object(CSeq_entry &seq_entry)
bool fta_dblink_has_sra(const CRef< CUser_object > &uop)
static forward_list< string > fta_tokenize_dblink(string str, Parser::ESource source)
static void fta_do_fix_seq_loc_id(TSeqLocList &locs, IndexblkPtr ibp, string_view location, string_view name, SeqLocIdsPtr slip, bool iscon, Parser::ESource source)
void GapsToDelta(CBioseq &bioseq, TGapFeatsList &gf, bool *drop)
char * StringRStr(char *where, const char *what)
void fta_get_project_user_object(TSeqdescList &descrs, const char *offset, Parser::EFormat format, bool *drop, Parser::ESource source)
void fta_get_dblink_user_object(TSeqdescList &descrs, char *offset, size_t len, Parser::ESource source, bool *drop, CRef< CUser_object > &dbuop)
bool fta_number_is_huge(const Char *s)
void err_install(const Indexblk *ibp, bool accver)
static void fta_fix_seq_id(CSeq_loc &loc, CSeq_id &id, IndexblkPtr ibp, string_view location, string_view name, SeqLocIdsPtr slip, bool iscon, Parser::ESource source)
string tata_save(string_view t)
bool no_date(Parser::EFormat format, const TSeqdescList &descrs)
static CRef< CUser_object > fta_build_structured_comment(string_view tag, string_view scomment)
bool fta_if_valid_biosample(string_view id, bool dblink)
static forward_list< string > fta_vnp_structured_comment(string buf)
void fta_parse_structured_comment(char *str, bool &bad, TUserObjVector &objs)
forward_list< FTATpaBlock > FTATpaBlockList
void StripECO(string &str)
CRef< CPatent_seq_id > MakeUsptoPatSeqId(const char *acc)
void ShrinkSpaces(char *line)
TSeqPos GetLength(void) const
@Imp_feat.hpp User-defined methods of the data storage class.
Seq-loc iterator class â iterates all intervals from a seq-loc in the correct order.
#define ParFlat_COL_DATA_EMBL
#define ERR_REFERENCE_Illegalreference
#define ERR_LOCATION_TpaAndNonTpa
#define ERR_TPA_SpanLengthDiff
#define ERR_COMMENT_SameStructuredCommentTags
#define ERR_TSA_SpanLengthDiff
#define ERR_TPA_InvalidPrimarySeqId
#define ERR_TSA_SpanDiffOver300bp
#define ERR_ENTRY_TLSLacksBioProjectLink
#define ERR_FORMAT_InvalidBioProjectAcc
#define ERR_TPA_IncompleteCoverage
#define ERR_DBLINK_InvalidIdentifier
#define ERR_SEQUENCE_HasManyComponents
#define ERR_LOCATION_CrossDatabaseFeatLoc
#define ERR_COMMENT_StructuredCommentLacksDelim
#define ERR_TPA_InvalidPrimarySpan
#define ERR_ENTRY_TSALacksStructuredComment
#define ERR_FORMAT_WrongBioProjectPrefix
#define ERR_LOCATION_SeqIdProblem
#define ERR_SEQUENCE_MultipleWGSProjects
#define ERR_TSA_IncompleteCoverage
#define ERR_ACCESSION_CannotGetDivForSecondary
#define ERR_ENTRY_TSALacksBioProjectLink
#define ERR_TPA_SpanDiffOver300bp
#define ERR_FORMAT_ContigVersusAssemblyGapMissmatch
#define ERR_TSA_InvalidPrimaryBlock
#define ERR_TSA_InvalidPrimarySpan
#define ERR_FEATURE_AllNsBetweenGaps
#define ERR_FEATURE_InvalidGapSequence
#define ERR_FORMAT_IncorrectDBLINK
#define ERR_FEATURE_NsAbutGap
#define ERR_ENTRY_TLSLacksStructuredComment
#define ERR_LOCATION_ContigAndScaffold
#define ERR_ACCESSION_WGSPrefixMismatch
#define ERR_DBLINK_DuplicateIdentifierRemoved
#define ERR_SEQUENCE_HTGPossibleShortGap
#define ERR_TPA_InvalidPrimaryBlock
#define ERR_SEQUENCE_HTGPhaseZeroHasGap
#define ERR_COMMENT_InvalidStructuredComment
#define ERR_KEYWORD_MultipleHTGPhases
#define ERR_SEQUENCE_HTGWithoutGaps
#define ERR_TSA_InvalidPrimarySeqId
forward_list< GapFeats > TGapFeatsList
std::list< std::string > TKeywordList
forward_list< GapFeats >::iterator GapFeatsPtr
std::list< CRef< objects::CSeqdesc > > TSeqdescList
std::vector< CRef< objects::CUser_object > > TUserObjVector
int fta_atoi(string_view sv)
bool StringEquNI(const char *s1, const char *s2, size_t n)
bool StringEquN(const char *s1, const char *s2, size_t n)
bool StringEqu(const char *s1, const char *s2)
void StringNCpy(char *d, const char *s, size_t n)
size_t StringLen(const char *s)
char * StringRChr(char *s, const char c)
void FtaInstallPrefix(int prefix, string_view name, string_view location)
#define FtaErrPost(sev, level,...)
static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
static const char * str(char *buf, int n)
static const char location[]
unsigned int TSeqPos
Type for sequence locations and lengths.
static EAccessionInfo IdentifyAccession(const CTempString &accession, TParseFlags flags=fParse_AnyRaw)
Deduces information from a bare accession a la WHICH_db_accession; may report false negatives on prop...
string GetSeqIdString(bool with_version=false) const
Return seqid string with optional version for text seqid type.
static E_Choice GetAccType(EAccessionInfo info)
static CSeq_id_Handle GetHandle(const CSeq_id &id)
Normal way of getting a handle, works for any seq-id.
CConstRef< CSeq_loc > GetRangeAsSeq_loc(void) const
Get seq-loc for the current iterator position.
const CSeq_id & GetSeq_id(void) const
Get seq_id of the current location.
void GetLabel(string *label) const
Appends a label suitable for display (e.g., error messages) label must point to an existing string ob...
CSeq_id_Handle GetAccVer(const CSeq_id_Handle &idh, TGetFlags flags=0)
Get accession.version Seq-id Returns null CSeq_id_Handle if the sequence is not found or if it doesn'...
TBioseqHandles GetBioseqHandles(const TIds &ids)
Get bioseq handles for all ids.
const TInst_Ext & GetInst_Ext(void) const
bool IsSetInst_Ext(void) const
bool IsSetInst_Repr(void) const
TInst_Repr GetInst_Repr(void) const
TObjectType * GetNCPointer(void) const THROWS_NONE
Get pointer,.
void Reset(void)
Reset reference object.
bool NotEmpty(void) const THROWS_NONE
Check if CRef is not empty â pointing to an object and has a non-null value.
bool Empty(void) const THROWS_NONE
Check if CRef is empty â not pointing to any object, which means having a null value.
int16_t Int2
2-byte (16-bit) signed integer
int32_t Int4
4-byte (32-bit) signed integer
char Char
Alias for char.
uint32_t Uint4
4-byte (32-bit) unsigned integer
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
NCBI_NS_STD::string::size_type SIZE_TYPE
CTempString literal(const char(&str)[Size])
Templatized initialization from a string literal.
static bool EqualNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive equality of a substring with another string.
static const char label[]
list< string > TExtra_accessions
bool IsSetData(void) const
the object itself Check if a value has been assigned to Data data member.
bool IsStr(void) const
Check if variant Str is selected.
bool IsSetType(void) const
type of object within class Check if a value has been assigned to Type data member.
TData & SetData(void)
Assign a value to Data data member.
void SetNum(TNum value)
Assign a value to Num data member.
const TStr & GetStr(void) const
Get the variant data.
void SetLabel(TLabel &value)
Assign a value to Label data member.
const TData & GetData(void) const
Get the Data member data.
void SetType(TType &value)
Assign a value to Type data member.
void SetData(TData &value)
Assign a value to Data data member.
const TType & GetType(void) const
Get the Type member data.
Tdata & Set(void)
Assign a value to data member.
void SetSegs(TSegs &value)
Assign a value to Segs data member.
void SetDim(TDim value)
Assign a value to Dim data member.
void SetType(TType value)
Assign a value to Type data member.
@ eType_partial
mapping pieces together
const TKey & GetKey(void) const
Get the Key member data.
void SetTo(TTo value)
Assign a value to To data member.
bool IsGenbank(void) const
Check if variant Genbank is selected.
TGeneral & SetGeneral(void)
Select the variant.
bool IsSetAccession(void) const
Check if a value has been assigned to Accession data member.
bool IsTpg(void) const
Check if variant Tpg is selected.
bool IsEmpty(void) const
Check if variant Empty is selected.
ENa_strand
strand of nucleic acid
bool IsPacked_pnt(void) const
Check if variant Packed_pnt is selected.
bool IsTpd(void) const
Check if variant Tpd is selected.
bool IsOther(void) const
Check if variant Other is selected.
void SetId(TId &value)
Assign a value to Id data member.
bool IsEmbl(void) const
Check if variant Embl is selected.
E_Choice Which(void) const
Which variant is currently selected.
void SetFrom(TFrom value)
Assign a value to From data member.
TGi GetGi(void) const
Get the variant data.
E_Choice
Choice variants.
bool IsWhole(void) const
Check if variant Whole is selected.
bool IsInt(void) const
Check if variant Int is selected.
void SetStrand(TStrand value)
Assign a value to Strand data member.
bool IsTpe(void) const
Check if variant Tpe is selected.
bool IsPnt(void) const
Check if variant Pnt is selected.
const TAccession & GetAccession(void) const
Get the Accession member data.
bool IsDdbj(void) const
Check if variant Ddbj is selected.
@ e_General
for other databases
@ e_Gi
GenInfo Integrated Database.
@ e_Named_annot_track
Internal named annotation tracking ID.
@ e_not_set
No variant selected.
@ e_Tpg
Third Party Annot/Seq Genbank.
const TSeq & GetSeq(void) const
Get the variant data.
TSet & SetSet(void)
Select the variant.
const TSet & GetSet(void) const
Get the variant data.
bool IsSeq(void) const
Check if variant Seq is selected.
bool IsSetDescr(void) const
Check if a value has been assigned to Descr data member.
bool IsSet(void) const
Check if variant Set is selected.
void SetDescr(TDescr &value)
Assign a value to Descr data member.
TSeq & SetSeq(void)
Select the variant.
void SetCompleteness(TCompleteness value)
Assign a value to Completeness data member.
TRepr GetRepr(void) const
Get the Repr member data.
list< CRef< CSeq_align > > TAssembly
bool IsSetSeq_data(void) const
the sequence Check if a value has been assigned to Seq_data data member.
const TInst & GetInst(void) const
Get the Inst member data.
void SetSeq_data(TSeq_data &value)
Assign a value to Seq_data data member.
TTopology GetTopology(void) const
Get the Topology member data.
const TIupacna & GetIupacna(void) const
Get the variant data.
const TAnnot & GetAnnot(void) const
Get the Annot member data.
bool IsSetExt(void) const
extensions for special types Check if a value has been assigned to Ext data member.
const Tdata & Get(void) const
Get the member data.
void SetType(TType value)
Assign a value to Type data member.
bool IsDelta(void) const
Check if variant Delta is selected.
void SetInst(TInst &value)
Assign a value to Inst data member.
const TExt & GetExt(void) const
Get the Ext member data.
bool IsSetDescr(void) const
descriptors Check if a value has been assigned to Descr data member.
void SetDescr(TDescr &value)
Assign a value to Descr data member.
const TDelta & GetDelta(void) const
Get the variant data.
TUser & SetUser(void)
Select the variant.
const Tdata & Get(void) const
Get the member data.
list< CRef< CDelta_seq > > Tdata
TLinkage_evidence & SetLinkage_evidence(void)
Assign a value to Linkage_evidence data member.
void SetLinkage(TLinkage value)
Assign a value to Linkage data member.
const TSeq_data & GetSeq_data(void) const
Get the Seq_data member data.
void SetTech(TTech value)
Assign a value to Tech data member.
const TDescr & GetDescr(void) const
Get the Descr member data.
TMolinfo & SetMolinfo(void)
Select the variant.
@ eRepr_delta
sequence made by changes (delta) to others
@ eCompleteness_complete
complete biological entity
@ eTech_htgs_2
ordered High Throughput sequence contig
@ eTech_htgs_3
finished High Throughput sequence
@ eTech_htgs_1
unordered High Throughput sequence contig
@ eTech_wgs
whole genome shotgun sequencing
@ eTech_htgs_0
single genomic reads for coordination
unsigned int
A callback function used to compare two keys in a database.
int fta_if_wgs_acc(string_view accession)
bool isSupportedAccession(CSeq_id::E_Choice type)
Int4 IsNewAccessFormat(const Char *acnum)
CSeq_id::E_Choice GetNucAccOwner(string_view acc)
The blob sat and sat key Both must be positive integers</td > n< td > Non empty string The interpretation of the blob id depends on a processor Cassandra n processor expects the following format
const struct ncbi::grid::netcache::search::fields::SIZE size
const struct ncbi::grid::netcache::search::fields::KEY key
const CharType(& source)[N]
static const BitmapCharRec ch1
static const BitmapCharRec ch2
std::list< SeqLoc > TSeqLocList
Int4 delta(size_t dimension_, const Int4 *score_)
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
static SLJIT_INLINE sljit_ins msg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
FTATpaBlock(Int4 f, Int4 t)
FTATpaSpan(Int4 f, Int4 t)
objects::CLinkage_evidence::TLinkage_evidence asn_linkage_evidence
objects::CSeq_gap::TType asn_gap_type
vector< IndexblkPtr > entrylist
bool allow_crossdb_featloc
char * SrchTheChar(string_view sv, Char letter)
bool SetTextId(Uint1 seqtype, CSeq_id &seqId, CTextseq_id &textId)
TDataBlkList & TrackNodes(const DataBlk &entry)
char * SrchTheStr(string_view sv, string_view leadstr)
void fta_StringCpy(char *dst, const char *src)
void UnwrapAccessionRange(const CGB_block::TExtra_accessions &extra_accs, CGB_block::TExtra_accessions &hist)
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