action_sizer.Add(
m_Panel->GetPanel(), 1, wxALIGN_CENTER_HORIZONTAL | wxALL, 2);
75action_sizer.Layout();
77parent_panel->Layout();
79parent_panel->Refresh();
87 catch(
constexception& ex) {
98 if(
m_Panel==
nullptr)
return;
99wxPanel* panel =
m_Panel->GetPanel();
101wxSizer* sizer = panel->GetContainingSizer();
103sizer->Detach(panel);
113 if(!
m_Panel->TransferDataFromPanel())
129 const auto& fn_args = fn_it.m_FArgs;
131 for(
auto& arg :
m_Args) {
132 autoit = fn_args.find(arg->GetName());
133 if(it!= fn_args.end()) {
134arg->SetValue() = it->second;
139 autofield_type_from =
func_info.front().m_FieldTypeFrom;
141 for(
auto& arg :
m_Args) {
142 const auto& name = arg->GetName();
157 autofield_type_to =
func_info.front().m_FieldTypeTo;
159 for(
auto& arg :
m_Args) {
160 const auto& name = arg->GetName();
202 returnret &&
m_Panel->TransferDataToPanel();
208 for(
auto& it : args) {
209vars += it +
" = %"+
m_ArgList[it].GetValue() +
"%\n";
227 return{ macro::CMacroFunction_PubFields::sm_PubTitle,
228macro::CMacroFunction_PubFields::sm_PubAffil,
229macro::CMacroFunction_PubFields::sm_PubAuthors,
230macro::CMacroFunction_PubFields::sm_PubCit,
231macro::CMacroFunction_PubFields::sm_PubDate,
232macro::CMacroFunction_PubFields::sm_PubVolume,
233macro::CMacroFunction_PubFields::sm_PubIssue,
234macro::CMacroFunction_PubFields::sm_PubJournal,
235macro::CMacroFunction_PubFields::sm_PubPages,
236macro::CMacroFunction_PubFields::sm_PubPMID,
237macro::CMacroFunction_PubFields::sm_PubDOI,
238macro::CMacroFunction_PubFields::sm_PubClass,
239macro::CMacroFunction_PubFields::sm_PubStatus,
240macro::CMacroFunction_PubFields::sm_PubSerialNumber };
429wxTreeItemData*
data=
nullptr;
438action_data->SetTarget(node.
GetTarget());
466 const string& target = macro_rep.GetForEachString();
468 if(target.empty() || do_funcs.empty())
472 sort(do_funcs.begin(), do_funcs.end());
473do_funcs.erase(unique(do_funcs.begin(), do_funcs.end()), do_funcs.end());
475vector<EMActionType> possible_types;
477 for(
const auto& type_it :
types) {
480vector<string> possible_actions = data_it->second->GetFunctionNames();
481 sort(possible_actions.begin(), possible_actions.end());
482 if(do_funcs.size() == 1) {
483 if(possible_actions == do_funcs) {
484possible_types.push_back(data_it->first);
488 if(includes(possible_actions.begin(), possible_actions.end(), do_funcs.begin(), do_funcs.end())) {
489 const auto& main_fncs = data_it->second->GetMainFunctions();
490 if(!main_fncs.empty()) {
491 for(
const auto& fnc_it : main_fncs) {
492 if(find(do_funcs.begin(), do_funcs.end(), fnc_it) != do_funcs.end()) {
493possible_types.push_back(data_it->first);
498possible_types.push_back(data_it->first);
504 LOG_POST(
Info<<
"Possible types: "<< possible_types.size());
505 sort(possible_types.begin(), possible_types.end());
506possible_types.erase(unique(possible_types.begin(), possible_types.end()), possible_types.end());
509 if(possible_types.empty()) {
510 LOG_POST(
Error<<
"Functions not recognized for this action:");
511 for(
const auto& it : do_funcs) {
517 else if(possible_types.size() == 1) {
537 if(find(need_processing.begin(), need_processing.end(), possible_types[0]) != need_processing.end()) {
538 if(!macro_interpret.
PostProcess(possible_types[0])) {
547 if(macro_rep.GetForEachString() == macro::CMacroBioData::sm_BioSource) {
552 else if(possible_types.size() > 1) {
555 if(macro_rep.GetForEachString() == macro::CMacroBioData::sm_BioSource) {
595 NStr::EqualNocase(fnc_it.m_FName, macro::CMacroFunction_SetQual::GetFuncName())) {
602 else if(fnc_it.m_FieldTypeFrom == fnc_it.m_FieldTypeTo && fnc_it.m_FieldTypeFrom ==
EMacroFieldType::eRNA) {
605 else if(find(possible_types.begin(), possible_types.end(),
EMActionType::eCopyRNA) != possible_types.end())
609 else if(find(possible_types.begin(), possible_types.end(),
EMActionType::eSwapRNA) != possible_types.end())
627 else if(find(possible_types.begin(), possible_types.end(),
EMActionType::eRmvGene) != possible_types.end())
642 if(qual_it != fnc_it.m_FArgs.end() && qual_it->second ==
"gene allele") {
648 else if(find(possible_types.begin(), possible_types.end(),
EMActionType::eEditRNA) != possible_types.end())
650 else if(find(possible_types.begin(), possible_types.end(),
EMActionType::eRmvRNA) != possible_types.end())
699 if(field_it != fnc_it.m_FArgs.end() && field_it->second ==
"db-xref") {
713 if(possible_types.size() == 2 &&
720possible_types.erase(possible_types.begin());
728 autosel_type = possible_types.front();
738 if(field_it == fnc_it.m_FArgs.end())
749 if(from_it == fnc_it.m_FArgs.end())
754 if(to_it == fnc_it.m_FArgs.end())
765 auto& fn_args = fnc_it.m_FArgs;
767 if((field_it != fn_args.end()) && (field_it->second ==
"comment"|| field_it->second ==
"product")) {
768field_it->second =
"mRNA "+ field_it->second;
771 if((field_it != fn_args.end()) && (field_it->second ==
"comment"|| field_it->second ==
"product")) {
772field_it->second =
"mRNA "+ field_it->second;
793 if(field_name.empty())
return;
805feature = field_name.substr(0, pos);
806field = field_name.substr(pos + 1);
809 void GetRNASpecificFields(
const string& field_name,
string& rna_type,
string& ncRNA_class,
string& rna_qual)
811rna_type = ncRNA_class = rna_qual =
kEmptyStr;
815 const stringkGeneComment =
"gene comment";
816 if(find(rna_fields.begin(), rna_fields.end(), kGeneComment) != rna_fields.end() &&
818rna_qual = kGeneComment;
819 if(kGeneComment.length() < field_name.length()) {
820rna_type = field_name.substr(0, field_name.length() - kGeneComment.length());
825 for(
auto&& it : rna_fields) {
828 if(it.length() < field_name.length()) {
829rna_type = field_name.substr(0, field_name.length() - it.length());
838 if(!rna_qual.empty()) {
839 if(rna_type.empty()) {
843 stringremainder = rna_type;
845rna_type =
"miscRNA";
848rna_type =
"preRNA";
851 for(
auto&& it : rna_types) {
852 stringmajor_type = it;
854 stringremainder = rna_type.substr(major_type.length());
857ncRNA_class = remainder;
859 if(ncRNA_class.empty()) {
860ncRNA_class =
"any";
863rna_type = major_type;
874 stringmodified_field = field_name;
876modified_field = field_name.substr(4,
NPOS);
879modified_field =
"ncRNA ncRNA class";
884 string GetRNAFieldname(
const string& rna_type,
const string& ncRNA_type,
const string& rna_qual)
887 if(rna_type ==
"any"&& (ncRNA_type.empty() || ncRNA_type ==
"any")) {
890 else if(rna_type ==
"mRNA"||
891rna_type ==
"tRNA"||
892rna_type ==
"rRNA"||
893rna_type ==
"tmRNA") {
894field = rna_type +
" "+ rna_qual;
896 else if(rna_type ==
"miscRNA") {
897field =
string(
"misc_RNA") +
" "+ rna_qual;
899 else if(rna_type ==
"preRNA") {
900field =
string(
"pre_RNA") +
" "+ rna_qual;
902 else if(rna_type ==
"ncRNA") {
903 if(ncRNA_type.empty() || ncRNA_type ==
"any") {
904field = rna_type +
" "+ rna_qual;
907field = rna_type +
" "+ ncRNA_type +
" "+ rna_qual;
916 if(feature ==
"CDS") {
917 if(field ==
"product"||
919field ==
"activity"||
921feature =
"Protein";
929 void GetMemberNames(
const string& container,
const string& field,
string& member_type,
string& member_name,
string& main_qual_name)
931member_type.resize(0);
932member_name.resize(0);
933main_qual_name = field;
936member_type =
"subtype";
937member_name =
"subname";
940member_type =
"subtype";
941member_name =
"name";
944field ==
"codons_recognized") {
945member_type =
"qual";
946member_name =
"val";
949member_type =
"qual";
950member_name =
"val";
951main_qual_name =
"satellite";
954member_type =
"qual";
955member_name =
"val";
960member_type =
"qual";
961member_name =
"val";
967 if(field.empty() || rt_var.empty() || container.empty()) {
973 stringmain_qualifier = field;
974 GetMemberNames(container, field, field_type, member, main_qualifier);
976 stringfunc = rt_var +
" = "+ macro::CMacroFunction_Resolve::GetFuncName();
977func +=
"(\""+ container +
"\")";
978func +=
" WHERE "+ rt_var +
"."+ field_type +
" = \""+ main_qualifier +
"\"";
980 if(constraints.empty()) {
986TConstraints::iterator it = constraints.begin();
987 while(it != constraints.end()) {
988 auto& field_ref = it->first;
989 if(field_ref.find(macro::CMacroFunction_StructVoucherPart::GetFuncName()) !=
NPOS) {
990 if(it->second.find(field) !=
NPOS) {
992func +=
" AND "+ it->second;
993 if(remove_constraint) {
994it = constraints.erase(it);
999 else if((field ==
macro::kSatelliteName&& field_ref.find(macro::CMacroFunction_SatelliteName::GetFuncName()) !=
NPOS) ||
1001 if(field_ref.find(macro::CMacroFunction_RelatedFeatures::GetFuncName()) ==
NPOS) {
1002func +=
" AND "+ it->second;
1003 if(remove_constraint) {
1004it = constraints.erase(it);
1011 if(field_ref.find(macro::CMacroFunction_RelatedFeatures::GetFuncName()) ==
NPOS) {
1012func +=
" AND "+ it->second;
1013 if(remove_constraint) {
1014it = constraints.erase(it);
1019 else if(field_ref.find(
',') !=
NPOS) {
1020vector<string> tokens;
1022 for(
auto& word : tokens) {
1029 size_tpos = it->second.find(field_ref);
1031 stringnew_field =
"\""+ rt_var +
"."+ member +
"\"";
1032 stringnew_constraint = it->second;
1034func +=
" AND "+ new_constraint;
1035 if(remove_constraint) {
1036it = constraints.erase(it);
1051 if(field.empty() || rt_var.empty() || constraints.empty()) {
1057TConstraints::iterator it = constraints.begin();
1058 while(it != constraints.end()) {
1059 if(it->first.find(field) !=
NPOS) {
1061func = rt_var +
" = "+ macro::CMacroFunction_Resolve::GetFuncName();
1062func +=
"(\""+ field +
"\") ";
1065 if(func.find(
"WHERE") ==
NPOS) {
1072 stringnew_constraint = it->second;
1074func += new_constraint;
1075 if(remove_constraint) {
1076it = constraints.erase(it);
1083 if(!func.empty()) {
1092 stringresolve_fnc, var_name = path;
1098 if(!resolve_fnc.empty()) {
1102 returnmake_pair(resolve_fnc, var_name);
1108 stringresolve_fnc, var_name = path;
1111 if(path.find(
',') !=
NPOS) {
1112vector<string> tokens;
1121 if(!resolve_fnc.empty()) {
1130 if(!resolve_fnc.empty()) {
1133}
else if(path ==
"dbxref") {
1135 if(!resolve_fnc.empty()) {
1139 returnmake_pair(resolve_fnc, var_name);
1145 stringresolve_fnc, var_name = path;
1148 if(path.find(
',') !=
NPOS) {
1149vector<string> tokens;
1163resolve_fnc.clear();
1164var_name = tokens[1];
1172 if(!resolve_fnc.empty()) {
1176 else if(path ==
"dbxref") {
1178 if(!resolve_fnc.empty()) {
1182 returnmake_pair(resolve_fnc, var_name);
1186 TConstraints& constraints,
boolremove_constraint,
bool& is_gbqual)
1189 stringresolve_fnc, var_name = path;
1192 if(path.find(
',') !=
NPOS) {
1194vector<string> tokens;
1203var_name = tokens[1];
1210 if(!resolve_fnc.empty()) {
1214 returnmake_pair(resolve_fnc, var_name);
1220 stringresolve_fnc, var_name = path;
1223 if(path.find(
',') !=
NPOS) {
1224vector<string> tokens;
1228 if(!resolve_fnc.empty()) {
1236 if(!resolve_fnc.empty()) {
1240 returnmake_pair(resolve_fnc, var_name);
1246 stringresolve_fnc, var_name = path;
1249 if(path.find(
',') !=
NPOS) {
1250vector<string> tokens;
1260resolve_fnc.clear();
1261var_name = tokens[1];
1268 if(!resolve_fnc.empty()) {
1272 returnmake_pair(resolve_fnc, var_name);
1278 stringresolve_fnc, var_name = path;
1281 if(path.find(
',') !=
NPOS) {
1282vector<string> tokens;
1292 if(!resolve_fnc.empty()) {
1296 returnmake_pair(resolve_fnc, var_name);
1300 const string& rt_var,
TConstraints& constraints,
boolremove_constraint,
bool& is_gbqual)
1303 stringresolve_fnc, var_name = path;
1306 if(path.find(
',') !=
NPOS) {
1308vector<string> tokens;
1312var_name = tokens[1];
1318 if(!resolve_fnc.empty()) {
1322 returnmake_pair(resolve_fnc, var_name);
1327 if(field.empty() || rt_var.empty()) {
1331 stringlcl_field = field;
1337member =
"subname";
1343member =
"subname";
1350field ==
"codons_recognized") {
1354 if(member.empty()) {
1358 returnrt_var +
'.'+ member;
1367 CRegexpregexp(
"\\((.*)\\)");
1369rt_var = regexp.
GetSub(pub_func);
1370 if(rt_var ==
"()") {
1382 if(!rt_var.empty()) {
1383func = rt_var +
" = "+ pub_func;
1389TConstraints::iterator it = constraints.begin();
1390 while(it != constraints.end()) {
1392 if(func.find(
"WHERE") ==
NPOS) {
1401it = constraints.erase(it);
1414 if(field.empty() || rt_var.empty())
return kEmptyStr;
1417 if(!rt_var.empty()) {
1418func = rt_var +
" = "+ pub_func;
1424TConstraints::iterator it = constraints.begin();
1425 while(it != constraints.end()) {
1427 if(func.find(
"WHERE") ==
NPOS) {
1436it = constraints.erase(it);
1450func = rt_var +
" = "+ macro::CMacroFunction_PubFields::sm_PubAuthors +
"()";
1452TConstraints::iterator it = constraints.begin();
1453 while(it != constraints.end()) {
1460 size_tpos =
NStr::Find(it->second, macro::CMacroFunction_PubFields::sm_PubAuthors);
1463 stringsearch = macro::CMacroFunction_PubFields::sm_PubAuthors +
string(
"(\""+ constr_field +
"\")");
1464 stringreplace =
"\""+ rt_var +
"."+ constr_field +
"\"";
1467 if(func.find(
"WHERE") ==
NPOS) {
1474it = constraints.erase(it);
1487rt_var =
"dblink_obj";
1488 stringfunc = rt_var +
" = "+ macro::CMacroFunction_Resolve::GetFuncName();
1489func +=
"(\"data\") WHERE EQUALS(\""+ rt_var +
".label.str\", \""+ field +
"\", true);\n";
1492 stringtemp_rtvar =
"data_obj";
1493 stringtemp_func = temp_rtvar +
" = "+ macro::CMacroFunction_Resolve::GetFuncName();
1494temp_func +=
"(\""+ rt_var +
".data.strs\")";
1495found_constraint =
false;
1497TConstraints::iterator it = constraints.begin();
1498 while(it != constraints.end()) {
1499 if(it->second.find(field) !=
NPOS) {
1500 autopos = it->second.find(
"AND");
1502it->second = it->second.substr(pos + 4,
NPOS);
1503 if(temp_func.find(
"WHERE") ==
NPOS) {
1504temp_func +=
" WHERE ";
1507temp_func +=
" AND ";
1509temp_func += it->second;
1510found_constraint =
true;
1511it = constraints.erase(it);
1515 stringdblinktype_func = macro::CMacroFunction_GetDBLink::GetFuncName();
1516dblinktype_func +=
"(\""+ field +
"\")";
1517 autopos = it->second.find(dblinktype_func);
1520 if(temp_func.find(
"WHERE") ==
NPOS) {
1521temp_func +=
" WHERE ";
1524temp_func +=
" AND ";
1526temp_func += it->second;
1527found_constraint =
true;
1528it = constraints.erase(it);
1536temp_func +=
";\n";
1538 if(found_constraint) {
1540rt_var = temp_rtvar;
1547 if(constraints.empty() || rt_var.empty()) {
1550 stringfunc = rt_var +
" = "+ macro::CMacroFunction_Resolve::GetFuncName();
1551func +=
"(\""+ path +
"\")";
1553 boolfound =
false;
1554TConstraints::iterator it = constraints.begin();
1555 while(it != constraints.end()) {
1557 if(it->second.find(macro::CMacroFunction_GetDBXref::GetFuncName()) !=
NPOS) {
1558expr = macro::CMacroFunction_GetDBXref::GetFuncName() +
"()";
1561 else if(path ==
"org.db"&& it->second.find(path) !=
NPOS) {
1565 if(!expr.empty()) {
1566 if(func.find(
"WHERE") ==
NPOS) {
1573it = constraints.erase(it);
1581 return(found) ? func +
";\n":
kEmptyStr;
1587 if(rt_var.empty()) {
1591 stringfunc = rt_var +
" = "+ macro::CMacroFunction_Resolve::GetFuncName();
1592func +=
"(\"org.orgname.mod\")";
1594 autopos = field.find_last_of(
'-');
1595 autosubtype = field.substr(0, pos);
1596func +=
" WHERE "+ rt_var +
".subtype = \""+ subtype +
"\"";
1598found_constraint =
false;
1599TConstraints::iterator it = constraints.begin();
1600 while(it != constraints.end()) {
1601 if(it->second.find(subtype) !=
NPOS) {
1603 if(func.find(
"WHERE") ==
NPOS) {
1610it = constraints.erase(it);
1611found_constraint =
true;
1617 returnfunc +
";\n";
1623func = rt_var +
" = "+ macro::CMacroFunction_ValueFromTable::GetFuncName();
1624func +=
"("+
kTableName+
", "+ col +
");\n";
1626TConstraints::iterator it = constraints.begin();
1627 while(it != constraints.end()) {
1628 if(it->second.find(macro::CMacroFunction_InTable::GetFuncName()) !=
NPOS) {
1629 if(it->second.find(filename) !=
NPOS) {
1630 stringquoted =
"\""+ filename +
"\"";
1634warning.assign(
"The given file names differ from each other");
1639 if(!warning.empty())
1640warning +=
" and ";
1641warning +=
"the same column number is specified twice";
1652TConstraints::iterator it = constraints.begin();
1653 while(it != constraints.end()) {
1654 if(it->second.find(macro::CMacroFunction_InTable::GetFuncName()) !=
NPOS) {
1655 if(it->second.find(filename) !=
NPOS) {
1656 stringquoted =
"\""+ filename +
"\"";
1660warning.assign(
"The given file names differ from each other");
1663 for(
auto&& col_it : values) {
1666 if(!warning.empty())
1667warning +=
" and ";
1668warning +=
"the same column number is specified twice";
1672 if(it->second.find(
"(\"\",") !=
NPOS) {
1673warning +=
"InTable() field is empty";
1683 stringfunc = rt_var +
" = "+ macro::CMacroFunction_ValueFromTable::GetFuncName();
1684func +=
"("+
kTableName+
", "+ col +
");\n";
1692 string tag=
"&"+
property+
"=";
1693 size_ttag_idx =
info.find(
tag);
1695 if(tag_idx != string::npos) {
1698 size_ttag_end_idx =
info.find_first_of(
"&", tag_idx + 1);
1699 size_tstart_idx = tag_idx +
string(
tag).length();
1701 if(tag_end_idx == string::npos) {
1702 value=
info.substr(start_idx,
info.length() - start_idx);
1705 value=
info.substr(start_idx, tag_end_idx - start_idx);
1714 return(field ==
"data.prot.name"||
1715field ==
"data.prot.activity"||
1716field ==
"data.prot.ec"||
1717field ==
"data.gene.syn"||
1718field.find(
"genbank.keywords") !=
NPOS);
1723 staticvector<string> gene_field_names{
"locus",
"allele",
"gene-comment",
"gene-description"};
1724 returnfind(gene_field_names.begin(), gene_field_names.end(), field_name) != gene_field_names.end();
1729 if(container.empty() || field.empty() || rt_var.empty()) {
1733 stringfunc = rt_var +
" = "+ macro::CMacroFunction_GeneQual::GetFuncName();
1734func +=
"(\""+ field +
"\")";
1736 if(constraints.empty()) {
1742TConstraints::iterator it = constraints.begin();
1743 while(it != constraints.end()) {
1744 if(it->first.find(
',') !=
NPOS) {
1745vector<string> tokens;
1747 for(
auto& word : tokens) {
1754 size_tpos = it->second.find(it->first);
1756 stringnew_constraint = it->second;
1758 if(func.find(
"WHERE") ==
NPOS) {
1765func += new_constraint;
1766 if(remove_constraint) {
1767it = constraints.erase(it);
1782 if(field.empty() || rt_var.empty())
return kEmptyStr;
1785 if(field_name.empty())
return kEmptyStr;
1786func = rt_var +
" = "+ macro::CMacroFunction_Resolve::GetFuncName();
1787func +=
"(\"data\")";
1788func +=
" WHERE EQUALS(\""+ rt_var +
".label.str\", \""+ field_name +
"\", true)";
1790 stringconstraint_field = macro::CMacroFunction_StructCommField::GetFuncName();
1791constraint_field +=
"(\""+ field_name +
"\")";
1793TConstraints::iterator it = constraints.begin();
1794 while(it != constraints.end()) {
1797 if(func.find(
"WHERE") ==
NPOS) {
1804it = constraints.erase(it);
1811func = rt_var +
" = "+ macro::CMacroFunction_Resolve::GetFuncName();
1812func +=
"(\"data\")";
1813func +=
" WHERE EQUALS(\""+ rt_var +
".label.str\", \"StructuredCommentPrefix\", true)";
1814func +=
" OR EQUALS(\""+ rt_var +
".label.str\", \"StructuredCommentSuffix\", true)";
1817func = rt_var +
" = "+ macro::CMacroFunction_Resolve::GetFuncName();
1818func +=
"(\"data\")";
1819func +=
" WHERE NOT EQUALS(\""+ rt_var +
".label.str\", \"StructuredCommentPrefix\", true)";
1820func +=
" AND NOT EQUALS(\""+ rt_var +
".label.str\", \"StructuredCommentSuffix\", true)";
1822 stringconstraint_field = macro::CMacroFunction_StructCommFieldname::GetFuncName() +
"()";
1824TConstraints::iterator it = constraints.begin();
1825 while(it != constraints.end()) {
1828 if(func.find(
"WHERE") ==
NPOS) {
1835it = constraints.erase(it);
1849descr =
"(no separator)";
1852descr =
"separated by "+ del;
1863 const string& existing_text = arg_list[
kExistingText].GetValue();
1864 const string& del = arg_list[
kDelimiter].GetValue();
1866 stringdescr =
" (";
1868descr +=
"overwrite existing text";
1871descr +=
"ignore new text when existing text is present";
1874descr +=
"add new qualifier";
1876descr += existing_text;
1886 if(
"replace"==
type)
1888 if(
"add_new_qual"==
type)
1891 static constTBimapStrings::relation existing_text_bm[] = {
1892{
"overwrite",
"eReplace"},
1893{
"append",
"eAppend"},
1894{
"prefix",
"ePrepend"},
1895{
"ignore new value",
"eLeaveOld"},
1896{
"add new qualifier",
"eAddQual"} };
1904 static constTBimapStrings::relation delimiter_bm[] = {
1905{
"semicolon",
";"},
1909{
"no separation",
""} };
1922 return(
str==
"true") ?
"Erase existing value":
1931 stringdescr =
"structured comment ";
1932 const string& field = arg_list[
kField].GetValue();
1935descr +=
"field '"+ arg_list[
kStrCommField].GetValue() +
"'";
1939descr +=
"database name";
1942descr +=
"field names";
1950 stringnew_constraint = macro::CMacroFunction_ChoiceType::GetFuncName();
1952constraints.insert(constraints.begin(), make_pair(
"", new_constraint));
1956 size_tpos = path.find(
".keyword");
1958path = path.substr(0, pos);
1961 stringnew_constraint = macro::CMacroFunction_ChoiceType::GetFuncName();
1962new_constraint +=
"() = \""+ path +
"\"";
1963constraints.insert(constraints.begin(), make_pair(
"", new_constraint));
1969 CTempStringtarget = macro::CMacroBioData::sm_Seqdesc;
1971target = macro::CMacroBioData::sm_UserObject;
1978 CTempStringtarget = macro::CMacroBioData::sm_MolInfo;
1982target = macro::CMacroBioData::sm_Seq;
1989 CTempStringtarget = macro::CMacroBioData::sm_RNA;
1991target = macro::CMacroBioData::sm_mRNA;
1994target = macro::CMacroBioData::sm_rRNA;
1997target = macro::CMacroBioData::sm_miscRNA;
2004 CTempStringtarget = macro::CMacroBioData::sm_RNA;
2007target = macro::CMacroBioData::sm_Gene;
2017 if(feature ==
"All") {
2019 returnmacro::CMacroBioData::sm_TSEntry;
2022 returnmacro::CMacroBioData::sm_SeqFeat;
2032 CTempStringtarget = macro::CMacroBioData::sm_SeqFeat;
2035target = macro::CMacroBioData::sm_RNA;
2038target = macro::CMacroBioData::sm_ImpFeat;
2043target = macro::CMacroBioData::sm_Gene;
2046 if(qualifier ==
"product"||
2048qualifier ==
"activity") {
2049target = macro::CMacroBioData::sm_Protein;
2052target = macro::CMacroBioData::sm_CdRegion;
2056target = macro::CMacroBioData::sm_Protein;
2059target = macro::CMacroBioData::sm_ImpFeat;
2062target = macro::CMacroBioData::sm_mRNA;
2065target = macro::CMacroBioData::sm_rRNA;
2068target = macro::CMacroBioData::sm_miscRNA;
2071target = macro::CMacroBioData::sm_Miscfeat;
2088 CTempStringtarget = macro::CMacroBioData::sm_SeqFeat;
2091target = macro::CMacroBioData::sm_RNA;
2094target = macro::CMacroBioData::sm_ImpFeat;
2099target = macro::CMacroBioData::sm_Gene;
2102 if(from_field ==
"product"||
2103from_field ==
"name"||
2104from_field ==
"activity"||
2106target = macro::CMacroBioData::sm_Protein;
2109target = macro::CMacroBioData::sm_Gene;
2111target = macro::CMacroBioData::sm_CdRegion;
2115target = macro::CMacroBioData::sm_Protein;
2118target = macro::CMacroBioData::sm_ImpFeat;
2121target = macro::CMacroBioData::sm_mRNA;
2124target = macro::CMacroBioData::sm_rRNA;
2127target = macro::CMacroBioData::sm_miscRNA;
2130target = macro::CMacroBioData::sm_Miscfeat;
2141 CTempStringtarget = macro::CMacroBioData::sm_Protein;
2144target = macro::CMacroBioData::sm_CdRegion;
2147target = macro::CMacroBioData::sm_Gene;
2150target = macro::CMacroBioData::sm_mRNA;
2153target = macro::CMacroBioData::sm_SeqFeat;
2161 const string& rna_type = arg_list[
kRNAType].GetValue();
2163 if(rna_type ==
"ncRNA"&& arg_list[
kncRNAClass].GetEnabled()) {
2171vector<string> new_constraints;
2173 if(rna_type ==
"ncRNA") {
2174new_constraints.push_back(
"data.rna.type = \"ncRNA\"");
2175 if(ncRNA_class !=
"any"&& !ncRNA_class.empty()) {
2176new_constraints.push_back(
"data.rna.ext.gen.class = \""+ ncRNA_class +
"\"");
2179 else if(rna_type ==
"preRNA") {
2180new_constraints.push_back(
"data.rna.type = \"premsg\"");
2182 else if(rna_type ==
"tRNA") {
2183new_constraints.push_back(
"data.rna.type = \"tRNA\"");
2185 else if(rna_type ==
"tmRNA") {
2186new_constraints.push_back(
"data.rna.type = \"tmRNA\"");
2189 for(
autoit = new_constraints.rbegin(); it != new_constraints.rend(); ++it) {
2190constraints.insert(constraints.begin(), make_pair(
kEmptyStr, *it));
2197 if(rna_type ==
"premsg")
2199 else if(rna_type ==
"tRNA"|| rna_type ==
"tmRNA"|| rna_type ==
"ncRNA"||
2200rna_type ==
"scRNA"|| rna_type ==
"snRNA") {
2203 else if(rna_type ==
"snoRNA")
2215vector<string> new_constraints;
2216 stringsel_feature = feature;
2218new_constraints.push_back(
"data.imp.key = \""+ feature +
"\"");
2221 if(sel_feature ==
"preRNA"|| sel_feature ==
"precursor_RNA") {
2222new_constraints.push_back(
"data.rna.type = \"premsg\"");
2223}
else if(sel_feature ==
"ncRNA"||
2224sel_feature ==
"tRNA"||
2225sel_feature ==
"tmRNA") {
2226new_constraints.push_back(
"data.rna.type = \""+ sel_feature +
"\"");
2228 else if(sel_feature ==
"scRNA"||
2229sel_feature ==
"snRNA"||
2230sel_feature ==
"snoRNA"||
2231sel_feature ==
"sno_RNA") {
2233new_constraints.push_back(
"data.rna.type = \"ncRNA\"");
2234new_constraints.push_back(
"data.rna.ext.gen.class = \""+ sel_feature +
"\"");
2238new_constraints.push_back(macro::CMacroFunction_ChoiceType::GetFuncName() +
"(\"data\") = \"prot\"");
2240 if(sel_feature ==
"ProProtein") {
2241prot_type =
"preprotein";
2244prot_type =
"mature";
2247prot_type =
"signal-peptide";
2250prot_type =
"transit-peptide";
2253prot_type =
"propeptide";
2256 if(!prot_type.empty()) {
2257new_constraints.push_back(
"data.prot.processed = \""+ prot_type +
"\"");
2278new_constraints.push_back(macro::CMacroFunction_ChoiceType::GetFuncName()
2282 for(
autoit = new_constraints.rbegin(); it != new_constraints.rend(); ++it) {
2283constraints.insert(constraints.begin(), make_pair(
kEmptyStr, *it));
2290 stringnew_constraint =
"data.prot.processed = \"mature\"";
2291constraints.insert(constraints.begin(), make_pair(
kEmptyStr, new_constraint));
2292new_constraint = macro::CMacroFunction_ChoiceType::GetFuncName() +
"(\"data\") = \"prot\"";
2293constraints.insert(constraints.begin(), make_pair(
kEmptyStr, new_constraint));
2301 stringcorrected_field = field;
2302vector<string> tokens;
2303 if(field.find(
',') !=
NPOS) {
2307corrected_field = tokens[0] +
", "+ tokens[1];
2313 stringtarget_constr;
2314 if(!target.empty()) {
2315target_constr = macro::CMacroFunction_RelatedFeatures::GetFuncName();
2316target_constr +=
"(\""+ target +
"\", "+ corrected_field +
")";
2319 stringnew_constraint =
string(
"NOT ") + macro::CMacroFunction_IsPresent::GetFuncName();
2320 if(!target_constr.empty()) {
2321new_constraint +=
"("+ target_constr +
")";
2324new_constraint +=
"("+ corrected_field +
")";
2327constraints.insert(constraints.begin(), make_pair(
kEmptyStr, new_constraint));
2339 return ", update mRNA product to match protein name";
2353 function+=
"\n"+ macro::CMacroFunction_UpdatemRNAProduct::GetFuncName() +
"();";
2361 const string& existing_text = arg.
GetValue();
2380 boolenable =
false;
2382 const string& feature = arg.
GetValue();
2384 if(list[
kFeatQual].GetValue() ==
"product"|| list[
kFeatQual].GetValue() ==
"name") {
2430 boolenable =
false;
2433 const string& to_field = list[
kToField].GetValue();
2434 const string& from_field = list[
kFromField].GetValue();
2435 if(to_field ==
"product"|| to_field ==
"name"||
2436from_field ==
"product"|| from_field ==
"name") {
2467 const string& rna_name = arg.
GetValue();
2469list[
"miscRNA_comment1"].SetShown() =
true;
2470list[
"miscRNA_comment2"].SetShown() =
true;
2473list[
"miscRNA_comment1"].SetShown() =
false;
2474list[
"miscRNA_comment2"].SetShown() =
false;
2481list[
"gene_symbol"].SetShown() =
true;
2482list[
"gene_descr"].SetShown() =
true;
2483list[
"gene_symbol_static"].SetShown() =
true;
2484list[
"gene_descr_static"].SetShown() =
true;
2487list[
"gene_symbol"].SetShown() =
false;
2488list[
"gene_descr"].SetShown() =
false;
2489list[
"gene_symbol_static"].SetShown() =
false;
2490list[
"gene_descr_static"].SetShown() =
false;
2516list[
kRmvLeft].SetEnabled() =
false;
2517list[
kRmvRight].SetEnabled() =
false;
2640list[
kSelText].SetShown() = show_choices;
2641list[
kChoices].SetShown() = show_choices;
2661list[
kNewValue].SetEnabled() = !checked;
2674 boolenable =
true;
2744 else if(arg_list[
kBsrcTax].IsTrue()) {
2747 else if(arg_list[
kBsrcLoc].IsTrue()) {
2765 if(dir ==
eFrom) {
2773 else if(dir ==
eTo) {
2794cap_change =
"none";
2796 else if(arg_list[
kToUpper].IsTrue()) {
2797cap_change =
"toupper";
2799 else if(arg_list[
kToLower].IsTrue()) {
2800cap_change =
"tolower";
2803cap_change =
"firstcap-restnochange";
2806cap_change =
"cap-word-space";
2809cap_change =
"firstcap";
2812cap_change =
"firstlower-restnochange";
2815cap_change =
"cap-word-space-punct";
2822 _ASSERT(!cap_change.empty());
2823 if(cap_change.empty()) {
2831 static constTBimapStrings::relation cap_bm[] = {
2847 static constTBimapStrings::relation cap_gui_bm[] = {
2848{
"No change",
"none"},
2849{
"To upper",
"toupper"},
2850{
"To lower",
"tolower"},
2851{
"First cap, rest no change",
"firstcap-restnochange"},
2852{
"First cap, rest lower",
"firstcap"},
2853{
"First lower, rest no change",
"firstlower-restnochange"},
2854{
"Cap words, start at spaces",
"cap-word-space"},
2855{
"Cap words, start at spaces or punct.",
"cap-word-space-punct"} };
2870 else if(field ==
"cds inference") {
2871field =
"inference";
2873 else if(field ==
"protein name") {
2879field =
"EC-number";
2882field =
"ncRNA-class";
bool SetData(const vector< CFuncWithArgs > &func_info)
virtual bool SetData(const vector< CFuncWithArgs > &func_info)
const TArguments & GetArguments() const
TArguments & SetArguments()
size_t count(const string &arg_name) const
const TStdStringPublisher & GetValue() const
const string & GetName() const
const TBoolPublisher & GetEnabled() const
const CTempString & GetTarget() const
EMActionType GetActionType() const
unordered_map< EMActionType, CMacroPanelItemData * > m_ActionMap
EMActionType GetMActionType(const macro::CMacroRep ¯o_rep, const vector< EMActionType > &types, CMacroInterpreter ¯o_interpret) const
wxTreeItemData * GetTreeItemData(const CMActionNode &node) const
EMacroFieldType m_FieldType
for actions such as appply/edit/etc.
vector< string > x_GetPubFunctions() const
virtual const vector< string > & GetKeywords() const
virtual void x_AddParamPanel(wxWindow *parent)
static bool s_IsGeneQualifier(const string &field)
boost::bimap< boost::bimaps::set_of< string, PNocase >, boost::bimaps::set_of< string, PNocase > > TBimapStrings
vector< string > GetRNATypes() const
pair< int, int > GetFeatureType(const string &name) const
string GetAsnPathToFieldName(const string &field, EMacroFieldType type, const string &target=kEmptyStr)
const vector< string > & GetKeywords(EMacroFieldType type) const
static CMacroEditorContext & GetInstance()
string GetAsnPathToAuthorFieldName(const string &author_name)
static string FindInBimapOrEmpty(const string &type, const TBimapStrings &str_bimap)
vector< string > GetFieldNames(EMacroFieldType type) const
bool PostProcess(EMActionType action_type)
void NormalizeFieldForFeatPanel()
bool ActionHasCdsGeneProtQuals()
vector< CFuncWithArgs > & SetInterpretedFunctions()
static bool s_IsTablePanel(ECustomPanelType &type)
static bool IsValidSubtypeName(const string &str, EVocabulary vocabulary=eVocabulary_raw)
@ ePubFieldType_AuthorLastName
@ ePubFieldType_AuthorFirstName
@ ePubFieldType_AuthorConsortium
@ ePubFieldType_AuthorMiddleInitial
@ ePubFieldType_AuthorSuffix
static EQualifier GetQualifierType(CTempString qual)
convert qual string to enumerated value
static bool IsValidSubtypeName(const string &str, EVocabulary vocabulary=eVocabulary_raw)
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
bool SetData(const vector< CFuncWithArgs > &func_info)
bool SetData(const vector< CFuncWithArgs > &func_info)
ECustomPanelType GetCustomPanelType() const
virtual void x_AddParamPanel(wxWindow *parent)=0
string x_GetVariables(const vector< CTempString > &args) const
void x_LoadPanel(wxWindow *parent, const string &panel_name, const TArgumentsVector &arguments)
unique_ptr< CMacroPanelLoader > m_Panel
constructed panel for specifying function arguments
bool TransferDataToPanel(const vector< CFuncWithArgs > &func_info)
void CreateParamPanel(wxStaticBoxSizer &action_sizer, wxPanel *parent)
bool TransferDataFromPanel()
const char * kGenomeProjectID
const char * kSubSourceNote
const char * kGenProjIDUserType
static const char * str(char *buf, int n)
static const struct type types[]
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
void Error(CExceptionArgs_Base &args)
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
virtual const char * what(void) const noexcept
Standard report (includes full backlog).
void Info(CExceptionArgs_Base &args)
bool StringsAreEquivalent(const string &name1, const string &name2)
const char * kMobileElementTType
const char * kSatelliteType
const char * kSatelliteName
bool IsSatelliteSubfield(const string &field)
bool IsMobileElementTSubfield(const string &field)
const char * kMobileElementTQual
const char * kMobileElementTName
EDialogReturnValue NcbiMessageBox(const string &message, TDialogType type=eDialog_Ok, EDialogIcon icon=eIcon_Exclamation, const string &title="Error", EDialogTextMode text_mode=eRaw)
CTempString GetSub(CTempString str, size_t idx=0) const
Get pattern/subpattern from previous GetMatch().
CTempString GetMatch(CTempString str, size_t offset=0, size_t idx=0, TMatch flags=fMatch_default, bool noreturn=false)
Get matching pattern and subpatterns.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
NCBI_NS_STD::string::size_type SIZE_TYPE
vector< pair< string, string > > TStringPairsVector
static list< string > & Split(const CTempString str, const CTempString delim, list< string > &arr, TSplitFlags flags=0, vector< SIZE_TYPE > *token_pos=NULL)
Split a string using specified delimiters.
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.
static bool EndsWith(const CTempString str, const CTempString end, ECase use_case=eCase)
Check if a string ends with a specified suffix value.
static const string BoolToString(bool value)
Convert bool to string.
static void TruncateSpacesInPlace(string &str, ETrunc where=eTrunc_Both)
Truncate whitespace in a string (in-place)
static SIZE_TYPE Find(const CTempString str, const CTempString pattern, ECase use_case=eCase, EDirection direction=eForwardSearch, SIZE_TYPE occurrence=0)
Find the pattern in the 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 bool EqualNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive equality of a substring with another string.
static string & ReplaceInPlace(string &src, const string &search, const string &replace, SIZE_TYPE start_pos=0, SIZE_TYPE max_replace=0, SIZE_TYPE *num_replace=0)
Replace occurrences of a substring within a string.
static string & ToLower(string &str)
Convert string to lower case â string& version.
@ eNocase
Case insensitive compare.
E_Choice
Choice variants.
static string SelectionName(E_Choice index)
Retrieve selection name (for diagnostic purposes).
@ e_Het
cofactor, prosthetic grp, etc, bound to seq
@ e_Region
named region (globin locus)
@ e_Seq
to annotate origin from another seq
@ e_Txinit
transcription initiation
@ e_Num
a numbering system
@ e_Pub
publication applies to this seq
@ e_User
user defined structure
@ e_Rsite
restriction site (for maps really)
@ e_Comment
just a comment
@ e_Non_std_residue
non-standard residue here in seq
@ eTrimStopsFromCompleteCDS
@ eApplyCDSGeneProtQualTable
@ eAdjustConsensusSpliceSite
@ eSynchronizeCDSPartials
vector< macro::SArgMetaData > TArgumentsVector
Functions used in the DO/DONE section affecting the top seq-entry.
@ eAddGapFeaturesByNPanel
static bool s_AreGoodPair(const vector< CFuncWithArgs > &func_info)
vector< string > GetDoFunctions(const macro::CMacroRep ¯o_rep)
Returns the list of do-functions present in the DO clause of the macro - includes multiples.
pair< string, string > GetResolveFuncForDestCdsGeneProtQuals(const string &fieldname, const string &rt_var, TConstraints &constraints, bool remove_constraint)
void UpdateConstraintsForDualCdsGeneProt(TConstraints &constraints, const string &src_feat)
string GetResolveFuncForPubQualConst(const string &field, const string &rt_var, TConstraints &constraints, EMacroFieldType field_type)
IMacroScriptElements::TConstraints TConstraints
CTempString UpdateTargetForFeatures(const string &feature, const string &qualifier, bool for_removal=false)
string GetResolveFuncForDBLink(const string &field, string &rt_var, TConstraints &constraints, bool &found_constraint)
void OnRemoveFromParsedField(CArgumentList &list, CArgument &arg)
string GetResolveFuncForDbXref(const string &path, const string &rt_var, TConstraints &constraints)
void OnRightDigitsLettersInParsePanels(CArgumentList &list, CArgument &arg)
void OnLeftDigitsLettersInParsePanels(CArgumentList &list, CArgument &arg)
void OnStructCommFieldDblChanged(CArgumentList &list, CArgument &arg)
void OnIllegalDbXrefSelected(CArgumentList &list, CArgument &arg)
void OnStructCommFieldChanged(CArgumentList &list, CArgument &arg)
bool MultipleValuesAllowed(const string &field)
void UpdateConstraintsForFeatures(TConstraints &constraints, const string &feature)
EMacroFieldType GetSourceTypeInDoublePanel(const CArgumentList &arg_list, EDirType dir)
string GetStructCommQualDescr(const CArgumentList &arg_list)
string GetResolveFuncForSVPart(const string &field, const string &rt_var, TConstraints &constraints, bool &found_constraint)
CTempString UpdateTargetForMisc(const string &fieldname)
string GetResolveFuncForMultiValuedQual(const string &field, const string &rt_var, TConstraints &constraints, bool remove_constraint)
pair< string, string > GetResolveFuncForRNAQuals(const string &fieldname, const string &rt_var, TConstraints &constraints, bool remove_constraint)
void OnConvertFeatFromCDS(CArgumentList &list, CArgument &arg)
string GetResolveFuncForQual(const string &container, const string &field, const string &rt_var, TConstraints &constraints, bool remove_constraint=true)
Generates the definition of rt_var based on input "field".
string GetUpdatemRNADescription(const CArgument &arg)
void GetMemberNames(const string &container, const string &field, string &member_type, string &member_name, string &main_qual_name)
void OnDOILookupModeChanged(CArgumentList &list, CArgument &arg)
string GetFuncFromTable_Depr(const string &rt_var, const string &filename, const string &col, TConstraints &constraints, string &warning)
pair< string, string > GetResolveFuncForMultiValuedQuals(EMacroFieldType type, const string &fieldname, const string &rt_var, TConstraints &constraints, bool remove_constraint)
void CheckTableNameAndColumns(const string &filename, const TStringPairsVector &values, TConstraints &constraints, string &warning)
void AddConstraintIgnoreNewText(const string &field, TConstraints &constraints, const CArgumentList &arg_list, const string &target=kEmptyStr)
void OnProteinNameSingle(CArgumentList &list, CArgument &arg)
string GetCapitalizationType(const string &cap_change)
CTempString UpdateTargetForMolinfo(const string &molinfo_type)
void GetRNASpecificFieldsForTableReader(const string &field_name, string &rna_type, string &ncRNA_type, string &rna_qual)
CTempString UpdateTargetForDualFeatures(const string &feature, const string &from_field)
bool IsGeneField(const string &field_name)
pair< string, string > GetResolveFuncForSrcCdsGeneProtQuals(const string &fieldname, const string &rt_var, TConstraints &constraints, bool remove_constraint)
string GetGUIRNAType(const string &rna_type)
string GetResolveFuncForGeneQuals(const string &container, const string &field, const string &rt_var, TConstraints &constraints, bool remove_constraint=true)
void OnAfterCheck(CArgumentList &list, CArgument &arg)
string GetDelimiterDescr(const string &del)
void GetRNASpecificFields(const string &field_name, string &rna_type, string &ncRNA_type, string &rna_qual)
CTempString UpdateTargetForRnas(const string &rna_type)
string GetResolveFuncForApplyAuthors(CPubFieldType::EPubFieldType type, const string &rt_var, TConstraints &constraints)
void WrapInQuotes(string &str)
string GetEditableFieldForPair(const string &field, const string &rt_var, bool is_feature)
void OnProteinNameDouble(CArgumentList &list, CArgument &arg)
string GetResolveFuncForStrCommQual(const string &field, const string &field_name, const string &rt_var, TConstraints &constraints)
string GetCapitalizationTypeFromChoice(const string &cap_change)
CTempString UpdateTargetForDualRnas(const string &rna_type, const string &from_field)
pair< string, string > GetResolveFuncForSwapFeatQuals(const string &feature, const string &field, const string &rt_var, TConstraints &constraints, bool remove_constraint, bool &is_gbqual)
pair< string, string > GetResolveFuncForDestFeatQuals(const string &feature, const string &field, const string &rt_var, TConstraints &constraints, bool remove_constraint)
CMacroEditorContext::TBimapStrings TBimapStrings
void OnControlsAddRNAPanelSelected(CArgumentList &list, CArgument &arg)
pair< string, string > GetResolveFuncForSrcFeatQuals(const string &feature, const string &field, const string &rt_var, TConstraints &constraints, bool remove_constraint)
void OnAutodefCompleteSelected(CArgumentList &list, CArgument &arg)
void OnExistingTextChanged(CArgumentList &list, CArgument &arg)
pair< string, string > GetResolveFuncForSwapQuals(EMacroFieldType fieldtype, const string &fieldname, const string &rt_var, TConstraints &constraints, bool remove_constraint, bool &is_gbqual)
void NormalizeFieldForFeatPanel(string &field)
string GetHandleOldValue(const string &type)
string GetFuncFromTable(const string &rt_var, const string &col)
EMacroFieldType GetSourceTypeInSinglePanel(const CArgumentList &arg_list)
void OnRnaTypeChanged(CArgumentList &list, CArgument &arg)
void UpdateConstraintsForRnas(TConstraints &constraints, const CArgumentList &arg_list)
string GetBlankGUIText(const string &str)
void UpdateConstraintsForMisc(TConstraints &constraints, const string &fieldname, const string &target)
void OnSelectFeature(CArgumentList &list, CArgument &arg)
string GetDelimiterChar(const string &del)
void OnBeforeCheck(CArgumentList &list, CArgument &arg)
void OnSelectTable(CArgumentList &list, CArgument &arg)
void UpdateFeatureType(string &feature, const string &field)
void OnConvertFeatToChanged(CArgumentList &list, CArgument &arg)
CTempString UpdateTargetForCdsGeneProt(const string &fieldname)
string GetSelectedCapType(const CArgumentList &arg_list)
string GetRNAFieldname(const string &rna_type, const string &ncRNA_type, const string &rna_qual)
void OnProductDouble(CArgumentList &list, CArgument &arg)
string GetResolveFuncForPubQual(const string &field, string &rt_var, TConstraints &constraints)
void AppendUpdatemRNAFnc(bool update_mrna, string &function)
void OnMiscFeatRuleSelected(CArgumentList &list, CArgument &arg)
void GetFeatureAndField(const string &field_name, string &feature, string &field)
string GetHandleBlank(const string &str)
string GetPropertyFromInfo(const string &info, const string &property)
string GetExistingTextDescr(const CArgumentList &arg_list)
string GetUpdatemRNAVar(const CArgumentList &arg_list)
const string kCapAtSpaces
const string kMiscFeatCheck
const string kDigitsRight
const string kMiscFeatRule
const string kCapAtSpacesPunct
const string kLetterRight
const string kListFeatRule
const string kAutodefCompl
const string kRmvOverlapGene
const string kFlowerNochange
const string kCreateOnProtein
const string kExistingText
const string kCapNochange
const string kRemTranscriptid
const string kIllegalDbxref
const string kTableEnable
const string kStrCommField
const string kBsrcTaxFrom
const string kBsrcTextFrom
constexpr auto sort(_Init &&init)
const GenericPointer< typename T::ValueType > T2 value
C++ wrappers for the Perl-compatible regular expression (PCRE) library.
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