58 #include <common/ncbi_revision.h>
60 #ifndef NCBI_SC_VERSION
61 # define THIS_IS_TRUNK_BUILD
62 #elif (NCBI_SC_VERSION == 0)
63 # define THIS_IS_TRUNK_BUILD
161 arg_desc->SetUsageContext(
"",
"Perform ExtendedCleanup on an ASN.1 Seq-entry into a flat report");
166 arg_desc->AddOptionalKey(
"i",
"InputFile",
170 arg_desc->AddOptionalKey(
"serial",
"SerialFormat",
"Obsolete; Input file format is now autodetected",
174 arg_desc->AddOptionalKey(
"outformat",
"OutputSerialFormat",
"Output file format",
177 "text",
"binary",
"XML",
"JSON"));
180 arg_desc->AddOptionalKey(
"id",
"ID",
184 arg_desc->AddOptionalKey(
"type",
"AsnType",
"Obsolete; ASN.1 object type is now autodetected",
199 arg_desc->AddFlag(
"batch",
"Process NCBI release file (Deprecated)",
205 arg_desc->AddFlag(
"bigfile",
"Process big files containing many bioseqs");
211 arg_desc->AddOptionalKey(
"o",
"OutputFile",
217 arg_desc->AddOptionalKey(
"K",
"Cleanup",
"Systemic Cleaning Options\n"
220 "\tn Normalize Descriptor Order\n"
221 "\tu Remove Cleanup User-object\n",
227 arg_desc->AddOptionalKey(
"F",
"Feature",
"Feature Cleaning Options\n"
228 "\tr Remove Redundant Gene xref\n"
229 "\ta Adjust for Missing Stop Codon\n"
230 "\tp Clear internal partials\n"
231 "\tz Delete or Update EC Numbers\n"
232 "\td Remove duplicate features\n",
235 arg_desc->AddOptionalKey(
"X",
"Miscellaneous",
"Other Cleaning Options\n"
236 "\td Automatic Definition Line\n"
237 "\tw GFF/WGS Genome Cleanup\n"
238 "\tr Regenerate Definition Lines\n"
239 "\tb Batch Cleanup of Multireader Output\n"
240 "\ta Remove Assembly Gaps\n"
241 "\ti Make Influenza Small Genome Sets\n"
242 "\tf Make IRD misc_feats\n",
245 arg_desc->AddFlag(
"T",
"TaxonomyLookup");
251 arg_desc->AddFlag(
"nocleanup",
252 "Do not perform extended data cleanup prior to formatting");
253 arg_desc->AddFlag(
"basic",
254 "Perform basic data cleanup prior to formatting");
255 arg_desc->AddFlag(
"noobj",
256 "Do not create Ncbi_cleanup object");
259 arg_desc->AddFlag(
"showprogress",
260 "List ID for which cleanup is occuring");
261 arg_desc->AddFlag(
"debug",
"Save before.sqn");
264 arg_desc->AddFlag(
"huge",
265 "Process file in huge files mode");
266 arg_desc->AddFlag(
"disable-huge",
267 "Explicitly disable huge files mode");
268 arg_desc->SetDependency(
"disable-huge",
288 if (c !=
'r' && c !=
'a' && c !=
'p' && c !=
'z' && c !=
'd') {
293 if (! unrecognized.empty()) {
307 if (c !=
'b' && c !=
's' && c !=
'u' && c !=
'n') {
312 if (! unrecognized.empty()) {
326 if (c !=
'w' && c !=
'r' && c !=
'b' && c !=
'a' &&
327 c !=
'i' && c !=
'f' && c !=
'd') {
332 if (! unrecognized.empty()) {
341 if (asn_type == CSeq_entry::GetTypeInfo()) {
343 }
else if (asn_type == CBioseq_set::GetTypeInfo()) {
345 }
else if (asn_type == CSeq_submit::GetTypeInfo()) {
370 if (args[
"disable-huge"])
374 return cfg.
GetBool(
"asn_cleanup",
"UseHugeFiles",
false);
388 cerr <<
"Warning: -type argument should not be used; ASN.1 object type is now autodetected." << endl;
390 if (args[
"serial"]) {
391 cerr <<
"Warning: -serial argument should not be used; Input file format is now autodetected." << endl;
402 if (args[
"X"] && (
NStr::Find(args[
"X"].AsString(),
"i") !=
NPOS)) {
407 huge_process.OpenFile(filename);
409 TTypeInfo asn_type = huge_process.GetFile().m_content;
411 string msg =
"Unable to open input file " + filename +
". Content not recognized.";
416 bool opened_output =
false;
418 if (! args[
"o"] && args[
"outdir"]) {
420 opened_output =
true;
425 if (asn_type == CBioseq::GetTypeInfo()) {
430 }
else if (args[
"batch"]) {
432 }
else if (args[
"bigfile"]) {
437 huge_process.OpenReader();
440 huge_process.OpenReader();
443 unique_ptr<CObjectIStream> is = huge_process.GetFile().MakeObjStream(0);
458 size_t num_cleaned = 0;
459 auto reader = process.GetReader();
482 auto anytop = reader.ReadAny();
489 if (anytop->GetThisTypeInfo() == CSeq_entry::GetTypeInfo()) {
492 topobject = topentry;
493 }
else if (anytop->GetThisTypeInfo() == CSeq_submit::GetTypeInfo()) {
495 if (submit->IsEntrys()) {
496 topentry = submit->SetData().SetEntrys().front();
497 if (submit->IsSetSub()) {
500 submit->SetData().SetEntrys().clear();
502 submit->SetData().SetEntrys().push_back(topentry);
505 }
else if (anytop->GetThisTypeInfo() == CBioseq_set::GetTypeInfo()) {
508 topentry->
SetSet(*bioset);
511 if (topentry->
IsSet())
515 }
else if (anytop->GetThisTypeInfo() == CBioseq::GetTypeInfo()) {
518 topentry->
SetSeq(*bioseq);
521 if (topentry->
IsSet())
545 if (reader.GetTopEntry()) {
546 topentry->
Assign(*reader.GetTopEntry());
553 if (reader.GetSubmitBlock()) {
555 submit->
SetSub().Assign(*reader.GetSubmitBlock());
556 submit->
SetData().SetEntrys().clear();
557 submit->
SetData().SetEntrys().push_back(topentry);
564 topobject = topentry;
568 bool proceed = process.ForEachEntry(
571 HandleSeqEntry(seh.GetEditHandle());
572 writer.PushNextEntry(seh.GetCompleteSeq_entry());
585 return process.ForEachBlob([
this](edit::CHugeFileProcess& p_process) ->
bool {
588 bool proceed = x_ProcessHugeFileBlob(p_process);
592 auto topobject = x_ProcessTraditionally(p_process.GetReader());
593 m_Out->ResetLocalHooks();
594 *m_Out << *topobject;
606 size_t num_files = 0;
616 if (num_files == 0) {
639 if (args[
"batch"] && args[
"bigfile"]) {
640 NCBI_THROW(
CArgException, eInvalidArg,
"\"batch\" and \"bigfile\" arguments are incompatible. Only one of them may be used.");
642 if (args[
"X"] && args[
"bigfile"]) {
643 NCBI_THROW(
CArgException, eInvalidArg,
"\"X\" and \"bigfile\" arguments are incompatible. Only one of them may be used.");
647 if (
NStr::Find(args[
"K"].AsString(),
"b") != string::npos) {
650 if (
NStr::Find(args[
"K"].AsString(),
"s") != string::npos) {
654 }
else if (args[
"X"]) {
656 if (
NStr::Find(args[
"X"].AsString(),
"w") != string::npos) {
660 }
else if (args[
"F"]) {
666 if (! args[
"nocleanup"]) {
682 bool opened_output =
false;
686 string fname = args[
"i"].AsString();
691 ERR_POST(
"Input and output files should be different");
696 args[
"outdir"] ? args[
"outdir"].AsString() :
kEmptyStr,
698 opened_output =
true;
699 }
else if (! args[
"outdir"] || args[
"id"]) {
701 opened_output =
true;
705 string seqID = args[
"id"].AsString();
707 }
else if (args[
"i"]) {
708 string fname = args[
"i"].AsString();
713 }
else if (args[
"outdir"]) {
716 cerr <<
"Error: stdin is no longer supported; please use -i" << endl;
729 #ifdef THIS_IS_TRUNK_BUILD
746 ERR_FATAL(
"The ID " << seq_id <<
" is not a valid seq ID.");
750 ERR_FATAL(
"Sequence for " << seq_id <<
" cannot be retrieved.");
767 bool any_changes =
false;
788 bool any_change =
false;
790 if (deleted_feats.
empty()) {
794 for (
auto df : deleted_feats) {
799 for (
auto orph : orphans) {
811 bool any_changes =
false;
817 if (change_defline) {
861 cout << e.
what() << endl;
864 cout << e.
what() << endl;
883 bool any_changes =
false;
890 bool feat_change =
false;
946 auto changes =
cleanup.BasicCleanup(seh, options);
947 any_changes |= (! changes.Empty());
948 changes =
cleanup.ExtendedCleanup(seh, options);
949 any_changes |= (! changes.Empty());
950 any_changes |=
x_FixCDS(seh, 0,
"unnamed protein product");
962 bool any_changes =
false;
975 auto changes = *
cleanup.BasicCleanup(entry, options);
977 any_changes = ! changes.
Empty();
986 auto changes = *
cleanup.ExtendedCleanup(entry, options);
988 any_changes = ! changes.
Empty();
1000 bool any_changes =
false;
1002 auto changes = *
cleanup.BasicCleanup(block);
1003 any_changes =
x_ReportChanges(
"BasicCleanup of SubmitBlock", changes);
1018 if (args[
"showprogress"]) {
1022 if (args[
"debug"]) {
1031 bool any_changes =
false;
1034 validator::CTaxValidationAndCleanup tval(
m_remote_updater->GetUpdateFunc());
1035 any_changes |= tval.DoTaxonomyUpdate(entry,
true);
1038 if (args[
"K"] &&
NStr::Find(args[
"K"].AsString(),
"u") != string::npos) {
1044 if (args[
"noobj"]) {
1073 if (! entryHandle) {
1078 if (entryHandle.GetCompleteSeq_entry().GetPointer() != se.
GetPointer()) {
1079 se->
Assign(*entryHandle.GetCompleteSeq_entry());
1093 if (args[
"outformat"]) {
1094 if (args[
"outformat"].AsString() ==
"binary") {
1096 }
else if (args[
"outformat"].AsString() ==
"XML") {
1098 }
else if (args[
"outformat"].AsString() ==
"JSON") {
1106 string base = filename;
1107 if (remove_orig_dir) {
1110 if (pos != string::npos) {
1111 base = base.substr(pos + 1);
1141 bool any_changes =
false;
1143 if (changes_str.empty()) {
1147 for (
auto it : changes_str) {
1164 int main(
int argc,
const char** argv)
1167 for (
int i = 1;
i < argc; ++
i) {
1171 string param = argv[
i+1];
1172 if (!param.empty() && param[0] !=
'-') {
1173 argv[
i] =
"-outdir";
1175 cerr <<
"Warning: deprecated use of -r argument. Please use -outdir instead." << endl;
1178 }
else if (
a ==
"-p") {
1180 cerr <<
"Warning: argument -p is deprecated. Please use -indir instead." << endl;
1181 }
else if (
a ==
"-R") {
1183 cerr <<
"Warning: argument -R is deprecated. Please use -r instead." << endl;
1184 }
else if (
a ==
"-gbload") {
1185 argv[
i] =
"-genbank";
1186 cerr <<
"Warning: argument -gbload is deprecated. Please use -genbank instead." << endl;
1191 list<string> split_args;
1192 vector<const char*> new_argv;
1194 if (argc==2 && argv && argv[1] && strchr(argv[1],
' ')) {
1197 auto it = split_args.begin();
1198 while (it != split_args.end()) {
1200 if (
next != split_args.end() &&
1201 ((it->front() ==
'"' && it->back() !=
'"') ||
1202 (it->front() ==
'\'' && it->back() !=
'\'')))
1204 it->append(
" "); it->append(*
next);
1209 for (
auto& rec: split_args) {
1210 if (rec.front()==
'\'' && rec.back()==
'\'')
1211 rec=rec.substr(1, rec.length()-2);
1213 argc = 1 +
int(split_args.size());
1214 new_argv.reserve(argc);
1215 new_argv.push_back(argv[0]);
1216 for (
const string& s : split_args) {
1217 new_argv.push_back(s.c_str());
1218 std::cerr << s.c_str() <<
" ";
1222 argv = new_argv.data();
int main(int argc, const char **argv)
static bool s_IsHugeMode(const CArgs &args, const CNcbiRegistry &cfg)
static const CDataLoadersUtil::TLoaders default_loaders
bool ProcessBigFile(CObjectIStream &in, CObjectOStream &out, IProcessorCallback &callback, EBigFileContentType content_type)
static bool RegenerateDefLines(CSeq_entry_Handle se)
bool HandleSeqID(const string &seqID)
unique_ptr< edit::CRemoteUpdater > m_remote_updater
void x_FeatureOptionsValid(const string &opt)
const Uint4 kGFF3CDSFixOptions
void x_ProcessOneDirectory(const string &dirname, const string &suffix)
unique_ptr< CObjectOStream > m_Out
bool x_ProcessHugeFile(edit::CHugeFileProcess &process)
bool HandleSubmitBlock(CSubmit_block &block) override
user code for handling a Submit-block goes here.
bool x_ProcessFeatureOptions(const string &opt, CSeq_entry_Handle seh)
bool x_RemoveDuplicateFeatures(CSeq_entry_Handle seh)
int Run() override
Run the application.
bool x_ReportChanges(const string_view prefix, CCleanupChangeCore changes)
void x_OpenOStream(const string &filename, const string &dir=kEmptyStr, bool remove_orig_dir=true)
bool x_ProcessXOptions(const string &opt, CSeq_entry_Handle seh, Uint4 options)
void Process(CRef< CSerialObject > &obj) override
void x_KOptionsValid(const string &opt)
bool x_BasicAndExtended(CSeq_entry_Handle entry, const string &label, Uint4 options=0)
bool x_FixCDS(CSeq_entry_Handle seh, Uint4 options, const string &missing_prot_name)
bool x_ProcessHugeFileBlob(edit::CHugeFileProcess &process)
void x_XOptionsValid(const string &opt)
void Init() override
Initialize the application.
bool x_BatchExtendCDS(CSeq_feat &, CBioseq_Handle)
bool x_GFF3Batch(CSeq_entry_Handle seh)
bool x_ProcessBigFile(unique_ptr< CObjectIStream > &is, TTypeInfo asn_type)
void x_ProcessOneFile(unique_ptr< CObjectIStream > &is, EProcessingMode mode, TTypeInfo asn_type)
CRef< CObjectManager > m_Objmgr
bool HandleSeqEntry(CRef< CSeq_entry > &se) override
user code for handling a Seq-entry goes here.
CConstRef< CSerialObject > x_ProcessTraditionally(edit::CHugeAsnReader &reader)
All the changes made during cleanup.
vector< string_view > GetDescriptions() const
static bool ConvertDeltaSeqToRaw(CSeq_entry_Handle seh, CSeq_inst::EMol filter=CSeq_inst::eMol_not_set)
static bool RenormalizeNucProtSets(CSeq_entry_Handle seh)
Convert nuc-prot sets with just one sequence to just the sequence can't be done during the explore ph...
static void SetProteinName(CProt_ref &prot, const string &protein_name, bool append)
static bool FixECNumbers(CSeq_entry_Handle entry)
Fix EC numbers.
static size_t MakeSmallGenomeSet(CSeq_entry_Handle entry)
static bool RemoveNcbiCleanupObject(CSeq_entry &seq_entry)
Removes NcbiCleanup User Objects in the Seq-entry.
static bool ClearInternalPartials(CSeq_loc &loc, bool is_first=true, bool is_last=true)
Clear internal partials.
static bool ExtendStopPosition(CSeq_feat &f, const CSeq_feat *cdregion, size_t extension=0)
@ eClean_KeepSingleSeqSet
@ eClean_NoNcbiUserObjects
static bool ExtendToStopCodon(CSeq_feat &f, CBioseq_Handle bsh, size_t limit)
Extends a feature up to limit nt to a stop codon, or to the end of the sequence if limit == 0 (partia...
static const string & GetProteinName(const CProt_ref &prot)
static bool SetFrameFromLoc(CCdregion &cdregion, const CSeq_loc &loc, CScope &scope)
Chooses best frame based on location 1.
static bool NormalizeDescriptorOrder(CSeq_descr &descr)
Normalize Descriptor Order on a specific Seq-entry.
static bool WGSCleanup(CSeq_entry_Handle entry, bool instantiate_missing_proteins=true, Uint4 options=0, bool run_extended_cleanup=true)
Performs WGS specific cleanup.
static bool LocationMayBeExtendedToMatch(const CSeq_loc &orig, const CSeq_loc &improved)
Checks whether it is possible to extend the original location up to improved one.
static bool SetGeneticCodes(CBioseq_Handle bsh)
Sets genetic codes for coding regions on Bioseq-Handle.
static bool RemoveUnnecessaryGeneXrefs(CSeq_feat &f, CScope &scope)
Removes unnecessary Gene-xrefs.
static bool MakeIRDFeatsFromSourceXrefs(CSeq_entry_Handle entry)
From SQD-4329 For each sequence with a source that has an IRD db_xref, create a misc_feature across t...
static void AutodefId(CSeq_entry_Handle seh)
static void SetupObjectManager(const CArgs &args, objects::CObjectManager &obj_mgr, TLoaders loaders=fDefault)
Set up the standard object manager data loaders according to the arguments provided above.
static void AddArgumentDescriptions(CArgDescriptions &arg_desc, TLoaders loaders=fDefault)
Add a standard set of arguments used to configure the object manager.
Interface for handling Seq-entry objects.
CGBReleaseFile is a utility class to ease the processing of Genbank release files one Seq-entry at a ...
void StartWriter(CConstRef< CSerialObject > topobject)
SeqMap related exceptions.
SeqVector related exceptions.
void GetLabel(string *label, ELabelType type) const
namespace ncbi::objects::
CTypeInfo class contains all information about C++ types (both basic and classes): members and layout...
set< CBioseq_Handle > ListOrphanProteins(CSeq_entry_Handle seh, bool force_refseq=false)
set< CSeq_feat_Handle > GetDuplicateFeaturesForRemoval(CSeq_entry_Handle seh)
static void cleanup(void)
static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
const CNcbiRegistry & GetConfig(void) const
Get the application's cached configuration parameters (read-only).
virtual const CArgs & GetArgs(void) const
Get parsed command line arguments.
int AppMain(int argc, const char *const *argv, const char *const *envp=0, EAppDiagStream diag=eDS_Default, const char *conf=NcbiEmptyCStr, const string &name=NcbiEmptyString)
Main function (entry point) for the NCBI application.
virtual void SetupArgDescriptions(CArgDescriptions *arg_desc)
Setup the command line argument descriptions.
void SetVersion(const CVersionInfo &version)
Set the version number for the program.
@ fHidden
Hide it in Usage.
@ eExcludes
One argument excludes another.
@ eInputFile
Name of file (must exist and be readable)
@ eString
An arbitrary string.
@ eOutputFile
Name of file (must be writable)
@ eDirectory
Name of file directory.
#define ERR_FATAL(message)
Posting fatal error and abort.
#define ERR_POST(message)
Error posting with file, line number information but without error codes.
#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.
const string & GetMsg(void) const
Get message string.
virtual const char * what(void) const noexcept
Standard report (includes full backlog).
TEntries GetEntries(const string &mask=kEmptyStr, TGetEntriesFlags flags=0) const
Get directory entries based on the specified "mask".
static string CreateAbsolutePath(const string &path, ERelativeToWhat rtw=eRelativeToCwd)
Get an absolute path from some, possibly relative, path.
static string MakePath(const string &dir=kEmptyStr, const string &base=kEmptyStr, const string &ext=kEmptyStr)
Assemble a path from basic components.
static char GetPathSeparator(void)
Get path separator symbol specific for the current platform.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
virtual const CTypeInfo * GetThisTypeInfo(void) const =0
ESerialDataFormat
Data file format.
@ eSerial_AsnText
ASN.1 text.
@ eSerial_AsnBinary
ASN.1 binary.
static CObjectOStream * Open(ESerialDataFormat format, CNcbiOstream &outStream, bool deleteOutStream)
Create serial object writer and attach it to an output stream.
bool RetranslateCDS(const CSeq_feat &cds, CScope &scope)
RetranslateCDS A function to replace the protein Bioseq pointed to by cds.product with the current tr...
bool IsPseudo(const CSeq_feat &feat, CScope &scope)
Determines whether given feature is pseudo, using gene associated with feature if necessary Checks to...
CConstRef< CSeq_feat > GetGeneForFeature(const CSeq_feat &feat, CScope &scope)
Finds gene for feature, but obeys SeqFeatXref directives.
CConstRef< CSeq_feat > GetmRNAforCDS(const CSeq_feat &cds, CScope &scope)
GetmRNAforCDS A function to find a CSeq_feat representing the appropriate mRNA for a given CDS.
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.
static CRef< CObjectManager > GetInstance(void)
Return the existing object manager or create one.
CSeq_entry_Handle AddTopLevelSeqEntry(CSeq_entry &top_entry, TPriority pri=kPriority_Default, EExist action=eExist_Default)
Add seq_entry, default priority is higher than for defaults or loaders Add object to the score with p...
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
void AddDefaults(TPriority pri=kPriority_Default)
Add default data loaders from object manager.
CSeq_feat_Handle GetSeq_featHandle(const CSeq_feat &feat, EMissing action=eMissing_Default)
void RemoveTopLevelSeqEntry(const CTSE_Handle &entry)
Revoke TSE previously added using AddTopLevelSeqEntry() or AddBioseq().
CSeq_entry_Handle GetSeq_entry_Handle(void) const
Get parent Seq-entry handle.
void Remove(void) const
Remove the feature from Seq-annot.
void Remove(ERemoveMode mode=eRemoveSeq_entry) const
CConstRef< CSeq_entry > GetCompleteSeq_entry(void) const
Complete and get const reference to the seq-entry.
CScope & GetScope(void) const
Get scope this handle belongs to.
void Replace(const CSeq_feat &new_feat) const
Replace the feature with new Seq-feat object.
TObjectType * GetPointer(void) const THROWS_NONE
Get pointer,.
CRef< C > Ref(C *object)
Helper functions to get CRef<> and CConstRef<> objects.
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
void Reset(void)
Reset reference object.
void Reset(void)
Reset reference object.
uint32_t Uint4
4-byte (32-bit) unsigned integer
virtual bool GetBool(const string §ion, const string &name, bool default_value, TFlags flags=0, EErrAction err_action=eThrow) const
Get boolean value of specified parameter name.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
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 bool EndsWith(const CTempString str, const CTempString end, ECase use_case=eCase)
Check if a string ends with a specified suffix value.
static bool IsBlank(const CTempString str, SIZE_TYPE pos=0)
Check if a string is blank (has no text).
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.
@ eReverseSearch
Search in a backward direction.
@ eCase
Case sensitive compare.
void CONNECT_Init(const IRWRegistry *reg=0, CRWLock *lock=0, TConnectInitFlags flag=eConnectInit_OwnNothing, FSSLSetup ssl=0)
Init [X]CONNECT library with the specified "reg" and "lock" (ownership for either or both can be deta...
static const char label[]
bool IsCdregion(void) const
Check if variant Cdregion is selected.
const TLocation & GetLocation(void) const
Get the Location member data.
const TData & GetData(void) const
Get the Data member data.
void SetData(TData &value)
Assign a value to Data data member.
const TSeq & GetSeq(void) const
Get the variant data.
TSet & SetSet(void)
Select the variant.
TClass GetClass(void) const
Get the Class member data.
const TSet & GetSet(void) const
Get the variant data.
bool IsSet(void) const
Check if variant Set is selected.
void SetClass(TClass value)
Assign a value to Class data member.
virtual void Reset(void)
Reset the whole object.
TSeq & SetSeq(void)
Select the variant.
TSeq_set & SetSeq_set(void)
Assign a value to Seq_set data member.
@ eClass_genbank
converted genbank
virtual void Reset(void)
Reset the whole object.
@ eMol_na
just a nucleic acid
void SetSub(TSub &value)
Assign a value to Sub data member.
void SetData(TData &value)
Assign a value to Data data member.
unsigned int
A callback function used to compare two keys in a database.
where boath are integers</td > n< td ></td > n</tr > n< tr > n< td > tse</td > n< td > optional</td > n< td > String</td > n< td class=\"description\"> TSE option controls what blob is orig
#define NCBI_SC_VERSION_PROXY
#define NCBI_TEAMCITY_BUILD_NUMBER_PROXY
Defines the CNcbiApplication and CAppException classes for creating NCBI applications.
std::istream & in(std::istream &in_, double &x_)
double df(double x_, const double &y_)
static const char * suffix[]
static const char * prefix[]
CCleanupChangeCore m_changes