CSeq_loc& loc = *visitor;
131 auto& bioseqAnnots = bioseq.
SetAnnot();
132 autoit = find_if(bioseqAnnots.begin(),
136return (pAnnot && pAnnot->IsFtable());
138 if(it != bioseqAnnots.end()) {
145 voids_AddAnnotsToBioseq(
151 for(
autopAnnot : annots) {
152objects::edit::CFeatTableEdit featEdit(*pBioseqAnnot);
153featEdit.MergeFeatures(pAnnot->SetData().SetFtable());
158pBioseqAnnot = s_GetBioseqAnnot(bioseq);
161pBioseqAnnot = annots.front();
162bioseq.
SetAnnot().push_back(pBioseqAnnot);
163 autoit =
next(annots.begin());
164 while(it != annots.end()) {
165objects::edit::CFeatTableEdit featEdit(*pBioseqAnnot);
166featEdit.MergeFeatures((*it)->SetData().SetFtable());
171 for(
autopAnnot : annots) {
172objects::edit::CFeatTableEdit featEdit(*pBioseqAnnot);
173featEdit.MergeFeatures(pAnnot->SetData().SetFtable());
181CBioseq_set::GetTypeInfo(),
182CBioseq::GetTypeInfo(),
183CSeq_entry::GetTypeInfo(),
184CSeq_submit::GetTypeInfo(),
185CSeq_annot::GetTypeInfo(),
191 if(content_type ==
"Bioseq-set") {
193 auto& bioseq_set = obj->SetSet();
198 if(content_type ==
"Seq-submit") {
204 if(content_type ==
"Seq-entry") {
210 if(content_type ==
"Bioseq") {
234 if(sType == CBioseq_set::GetTypeInfo()->GetName()) {
237}
else if(sType == CSeq_submit::GetTypeInfo()->GetName()) {
246entry = *submit->
SetData().SetEntrys().begin();
247}
else if(sType == CSeq_entry::GetTypeInfo()->GetName()) {
250}
else if(sType == CSeq_annot::GetTypeInfo()->GetName()) {
262}
while(sType == CSeq_annot::GetTypeInfo()->GetName());
277 if(submit.
Empty())
289reader.
SetAllGap(args[
"aln-gapchar"].AsString());
290reader.
SetMissing(args[
"aln-gapchar"].AsString());
291 if(args[
"aln-alphabet"].AsString() ==
"nuc") {
303 if(pSeqEntry && args[
"a"]) {
314 autoit = s_StringToClass.
find(args[
"a"].AsString());
315 if(it != s_StringToClass.
end()) {
316pSeqEntry->SetSet().SetClass(it->second);
355 "File format not supported", 0);
365pReader->SetGapLinkageEvidence(
380 if(
result.NotEmpty()) {
408 if(! content_info) {
419 auto*
in=
file.m_stream.get();
430 #ifdef FLATFILE_PARSER_ENABLED 439 switch(
file.m_format)
465mAtSequenceData(
false)
481 const stringsType = pObjIstrm->ReadFileHeader();
482 if(sType == CSeq_descr::GetTypeInfo()->GetName()) {
486out_desc->
Set().insert(out_desc->
Set().end(), descr->
Get().begin(), descr->
Get().end());
487}
else if(sType == CSeqdesc::GetTypeInfo()->GetName()) {
491out_desc->
Set().push_back(desc);
492}
else if(sType == CPubdesc::GetTypeInfo()->GetName()) {
496out_desc->
Set().push_back(desc);
498 throwruntime_error(
"Descriptor file must contain " 499 "either Seq_descr or Seqdesc elements");
503 throwruntime_error(
"Unable to read descriptor from file:"+ ex.
GetMsg());
515 stringsType = pObjIstrm->ReadFileHeader();
518 if(sType == CSeq_entry::GetTypeInfo()->GetName()) {
521}
else if(sType == CBioseq::GetTypeInfo()->GetName()) {
526}
else if(sType == CSeq_submit::GetTypeInfo()->GetName()) {
531 throwruntime_error(
"Seq-submit template must contain " 532 "exactly one Seq-entry");
534}
else if(sType == CSubmit_block::GetTypeInfo()->GetName()) {
548}
else if(sType == CSeqdesc::GetTypeInfo()->GetName()) {
552 "Submit-block. Object seems to be of type: "<< sType);
566 if(ent_iter->IsSetDescr()) {
567descr = &ent_iter->GetDescr();
571 tmp->SetSeq().SetInst();
575 switch((*desc_iter)->Which()) {
583desc->
Assign(**desc_iter);
584 tmp->SetSeq().SetDescr().Set().push_back(desc);
590 if(
tmp->IsSetDescr() && !
tmp->GetDescr().Get().empty())
595 if(!pObjIstrm->EndOfData()) {
596 if(sType != CSeqdesc::GetTypeInfo()->GetName())
597sType = pObjIstrm->ReadFileHeader();
599 while(sType == CSeqdesc::GetTypeInfo()->GetName()) {
617 if(pObjIstrm->EndOfData())
621sType = pObjIstrm->ReadFileHeader();
640 throwruntime_error(
"The Seq-entry must be a Bioseq not a Bioseq-set.");
652 if(args[
"output-type"].AsString() ==
"Seq-entry") {
661 classAllowedDuplicates :
public set<CSeqdesc_Base::E_Choice>
669AllowedDuplicates m_allowed_duplicates;
671 template<
typename_which>
673 typename_which::E_Choice compare_to;
674 booloperator()(_which
l)
const 676 return l.Which() == compare_to;
680 return l->Which() == compare_to;
695 boolduplicates = (m_allowed_duplicates.find(
source.Which()) != m_allowed_duplicates.end());
698desc.Set(duplicates).Assign(
source);
732 boolpost_process =
false;
736 "Specified GFF3 file does not include any sequence data", 0);
743 const string& objectType,
744unique_ptr<istream>& pIstr,
765 if(! pInputObject) {
767 "File format not recognized", 0);
811istream.
get().open(filename);
816 if(input_sequence.
Empty())
818 "File format not recognized", 0);
821input_sequence =
xApplyTemplate(input_sequence, merge_template_descriptors);
830entry = submit->
SetData().SetEntrys().front();
845 if(submit.
Empty())
846 if(entry->
IsSet() &&
852CopyDescr(*seq, *entry);
853CopyAnnot(*seq, *entry);
859 if(merge_template_descriptors) {
864 "Template file descriptors are ignored if input is ASN.1");
866*unique_ptr<CLineError>(
873 if(submit.
Empty())
910 for(
const auto&
msg: readerListener) {
924 for(
autopFeat :
ftable) {
925 if(pFeat->IsSetDbxref()) {
926 auto& dbxrefs = pFeat->SetDbxref();
927 autoit =
remove_if(dbxrefs.begin(), dbxrefs.end(),
929return(pDbtag && pDbtag->IsSetDb() &&
930NStr::EqualNocase(pDbtag->GetDb(),
"GenBank"));
932dbxrefs.erase(it, dbxrefs.end());
933 if(dbxrefs.empty()) {
934pFeat->ResetDbxref();
948 if(
autoorig_protein_id = seqfeat.
GetNamedQual(
"orig_protein_id");
949!orig_protein_id.empty()) {
955 if(
autoorig_transcript_id = seqfeat.
GetNamedQual(
"orig_transcript_id");
956!orig_transcript_id.empty()) {
965 for(
autopFeat :
ftable) {
976 unsigned intstartingLocusTagNumber = 1;
977 unsigned intstartingFeatureId = 1;
978 for(
autoit = annots.begin(); it != annots.end(); ++it) {
982 if(!
data.IsFtable() ||
data.GetFtable().empty()) {
992edit::CFeatTableEdit fte(
999 "GFF annotation requires locus tags, which are missing from one or more genes, so the command line argument -locus-tag-prefix is needed");
1001fte.GenerateLocusTags();
1003fte.GenerateProteinAndTranscriptIds();
1005fte.ProcessCodonRecognized();
1006fte.EliminateBadQualifiers();
1007fte.SubmitFixProducts();
1009startingLocusTagNumber = fte.PendingLocusTagNumber();
1010startingFeatureId = fte.PendingFeatureId();
1017unique_ptr<istream> instream(
new CNcbiIfstream(filename));
1042 "Descriptor file seems to be in an unsupported format: " 1050unique_ptr<CObjectIStream> pObjIstrm(
1062unique_ptr<IIndexedFeatureReader> reader;
1064 autohugefile = std::make_unique<objects::edit::CHugeFile>();
1065hugefile->OpenPlain(filename);
1074 if(ext ==
".gff"|| ext ==
".gff3")
1076 else if(ext ==
".gtf")
1078 else if(ext ==
".tbl")
1080 else if(ext ==
".asn"|| ext ==
".sqn"|| ext ==
".sap")
1097 auto*
in= hugefile->m_stream.get();
1099 boolhasAnnots{
false};
1102 autoreader5col = std::make_unique<CFast5colReader>();
1110reader5col->Open(std::move(hugefile));
1111hasAnnots = (reader5col->size()>0);
1112reader = std::move(reader5col);
1115 autoobj_stream = hugefile->MakeObjStream(0);
1131 #ifdef FLATFILE_PARSER_ENABLED 1136 if(pEntry && pEntry->IsSetAnnot()) {
1137annots = pEntry->GetAnnot();
1144 "Annotation file format not recognized. Run format validator on your annotation file", 1);
1148 if(!reader.get() && !annots.empty()) {
1149 autowhole_file = std::make_unique<CWholeFileAnnotation>();
1151whole_file->AddAnnots(annots);
1152reader = std::move(whole_file);
1158 "Unable to load annotations from "+ filename, 0);
1171std::vector<CRef<CSeq_id>> ids(bioseq.
GetId().begin(), bioseq.
GetId().end());
1174return CSeq_id::Score(l) < CSeq_id::Score(r);
1178 for(
autopSeqId : ids) {
1181 if(annots.empty()) {
1188 for(
autopAnnot : annots) {
1195s_ModifySeqIds(*pAnnot, *pAnnotId, matching_id);
1198s_AddAnnotsToBioseq(annots, bioseq, pBioseqAnnot);
1223 #ifdef FLATFILE_PARSER_ENABLED 1226unique_ptr<Parser> pp(
new Parser);
1247 "This flat file format is not supported: "+ filename, 0);
1254 autoobj = ffparser.
Parse(*pp, instream);
1255 if(obj.NotEmpty()) {
1256 if(obj->GetThisTypeInfo() == CBioseq_set::GetTypeInfo()) {
1260 auto& annot = entry->SetAnnot();
1261 for(
auto& bioseq : bioseq_set->SetSeq_set()) {
1263annot.splice(annot.end(), bioseq->
SetAnnot());
1265 if(entry->IsSetAnnot())
1275 autoindexed_annots = std::make_unique<CWholeFileAnnotation>();
1277indexed_annots->AddAnnots(annots);
1278reader = std::move(indexed_annots);
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.
void g_LogGeneralParsingError(EDiagSev sev, const string &idString, const string &msg, objects::ILineErrorListener &listener)
void remove_if(Container &c, Predicate *__pred)
class CAlnReader supports importing a large variety of text-based alignment formats into standard dat...
void Read(bool guess, bool generate_local_ids=false, objects::ILineErrorListener *pErrorListener=nullptr)
void SetAlphabet(const string &value)
CRef< objects::CSeq_entry > GetSeqEntry(TFastaFlags fasta_flags=objects::CFastaReader::fAddMods, objects::ILineErrorListener *pErrorListener=nullptr)
void SetMissing(const string &value)
void SetAllGap(const string &value)
Convenience function for setting beginning, middle, and end gap to the same thing.
Modification of the CFastaReader class that allows for reading a single sequence as a degenarate mult...
@ fAllIdsAsLocal
= 0x100 (Do not attempt to parse accessions)
@ fLeaveProteinIds
= 0x80 (Leave all protein_id as a qualifiers)
@ fCreateGenesFromCDSs
= 0x10 (If a CDS has a gene xref, create a gene with the same intervals if one doesn't already exist....
@ fPreferGenbankId
= 0x200 (Prefer Genbank accession ids)
CRef< CSerialObject > Parse(Parser &parseInfo)
Wraps CFormatGuess, and if CFormatGuess's result is Unknown, it tries every file reader until one wor...
CFormatGuess::EFormat GuessFormatAndContent(CFileContentInfo &contentInfo)
CFormatGuess::CFormatHints & GetFormatHints(void)
Get format hints.
void SetRecognizedGenbankTypes(const set< TTypeInfo > &recognizedGenbankTypes)
CFormatGuess::EFormat GuessFormat()
CFormatHints & AddPreferredFormat(TFormat fmt)
Mark the format as preferred.
CFormatHints & DisableAllNonpreferred(void)
Disable all formats not marked as preferred.
Class implements different ad-hoc unreliable file format identifications.
CFormatHints & GetFormatHints(void)
Get format hints.
EFormat
The formats are checked in the same order as declared here.
@ eFiveColFeatureTable
Five-column feature table.
@ eBinaryASN
Binary ASN.1.
@ eGtf
New GTF, CGtfReader.
@ eGff3
GFF3, CGff3Reader.
@ eFasta
FASTA format sequence record, CFastaReader.
@ eUnknown
unknown format
@ eGffAugustus
GFFish output of Augustus Gene Prediction.
EFormat GuessFormat(EMode)
static const char * GetFormatName(EFormat format)
void ConvertNs2Gaps(CSeq_entry &entry)
bool AtSequenceData() const
void ReadSeqAnnots(TAnnotList &, CNcbiIstream &, ILineErrorListener *=nullptr) override
Read all objects from given insput stream, returning them as a vector of Seq-annots.
shared_ptr< CGff3LocationMerger > GetLocationMerger()
static CLineError * Create(EProblem eProblem, EDiagSev eSeverity, const std::string &strSeqId, unsigned int uLine, const std::string &strFeatureName=string(""), const std::string &strQualifierName=string(""), const std::string &strQualifierValue=string(""), const std::string &strErrorMessage=string(""), const TVecOfLines &vecOfOtherLines=TVecOfLines())
Use this because the constructor is protected.
CFormatGuess::EFormat OpenFile(const string &filename, CRef< CSerialObject > &input_sequence, TAnnots &annots)
void LoadGFF3Fasta(istream &in, TAnnots &annots)
static void GetSeqEntry(CRef< objects::CSeq_entry > &entry, CRef< objects::CSeq_submit > &submit, CRef< CSerialObject > obj)
TAnnots xReadGFF3(CNcbiIstream &instream, bool post_process)
void MergeDescriptors(objects::CSeq_descr &dest, const objects::CSeq_descr &source) const
CMultiReader(CTable2AsnContext &context)
list< CRef< objects::CSeq_annot > > TAnnots
unique_ptr< CObjectIStream > xCreateASNStream(const string &filename) const
void AddAnnots(IIndexedFeatureReader *reader, CBioseq &bioseq) const
CTable2AsnContext & m_context
CRef< CSerialObject > ReadNextEntry()
void xAnnotGetFormat(objects::edit::CHugeFile &file) const
static const set< TTypeInfo > kSupportedTypes
TAnnots xReadGTF(CNcbiIstream &instream) const
shared_ptr< objects::CGff3LocationMerger > m_gff3_merger
CRef< CSerialObject > xReadASN1Binary(CObjectIStream &pObjIstrm, const string &content_type) const
bool AtSeqenceData() const
std::unique_ptr< IIndexedFeatureReader > LoadIndexedAnnot(const string &filename)
void x_PostProcessAnnots(TAnnots &annots, CFormatGuess::EFormat format=CFormatGuess::eUnknown) const
void WriteObject(const CSerialObject &, ostream &)
void LoadDescriptors(const string &ifname, CRef< objects::CSeq_descr > &out_desc) const
void ApplyDescriptors(objects::CSeq_entry &obj, const objects::CSeq_descr &source) const
CRef< CSerialObject > xApplyTemplate(CRef< CSerialObject > obj, bool merge_template_descriptors) const
CRef< objects::CSeq_entry > xReadFasta(CNcbiIstream &instream)
CRef< CSerialObject > FetchEntry(const CFormatGuess::EFormat &format, const string &objectType, unique_ptr< CNcbiIstream > &pIstr, TAnnots &annots)
CRef< objects::CSeq_entry > ReadAlignment(CNcbiIstream &instream, const CArgs &args)
void LoadTemplate(const string &ifname)
void GetIndexedAnnot(std::unique_ptr< IIndexedFeatureReader > &reader, TAnnots &annots)
CFormatGuess::EFormat xInputGetFormat(CNcbiIstream &, CFileContentInfo *=nullptr) const
unique_ptr< CObjectIStream > m_obj_stream
CRef< objects::CSeq_entry > xReadFlatfile(CFormatGuess::EFormat format, const string &filename, CNcbiIstream &instream)
CRef< CSerialObject > xReadASN1Text(CObjectIStream &pObjIstrm) const
static CRef< CSeq_id > AsSeqId(const string &rawId, long flags=0, bool localInts=true)
Convert a raw ID string to a Seq-id, based in given customization flags.
@ fAllIdsAsLocal
all identifiers are local IDs
@Seq_descr.hpp User-defined methods of the data storage class.
const TAnnot & GetAnnot(void) const
const CSeq_descr & GetDescr(void) const
bool IsSetAnnot(void) const
void ResetParentEntry(void)
void SetDescr(CSeq_descr &value)
bool IsSetDescr(void) const
namespace ncbi::objects::
const string & GetNamedQual(const CTempString &qual_name) const
Return a named qualifier.
void AddOrReplaceQualifier(const string &qual_name, const string &qual_val)
Add a qualifier to this feature, or replace the value for the first one if it already exists.
void RemoveQualifier(const string &qual_name)
Remove all qualifiers with the given name; do nothing if no such qualifier exists.
Base class for all serializable objects.
Simple implementation of ILineReader for i(o)streams.
string m_genome_center_id
bool m_binary_asn1_output
objects::ILineErrorListener * m_logger
TSeqPos m_gap_Unknown_length
objects::CGapsEditor::TEvidenceSet m_DefaultEvidence
CRef< objects::CSeq_entry > m_entry_template
CRef< objects::CSeq_submit > m_submit_template
void MergeWithTemplate(objects::CSeq_entry &entry) const
string m_locus_tag_prefix
objects::CGapsEditor::TCountToEvidenceMap m_GapsizeToEvidence
objects::CBioseq_set::TClass m_ClassValue
void MakeGenomeCenterId(objects::CSeq_entry &entry) const
Template class for iteration on objects of class C.
virtual std::list< CRef< objects::CSeq_annot > > GetAndUseAnnot(CRef< objects::CSeq_id > seqid)=0
static CRef< objects::CSeq_id > GetAnnotId(const objects::CSeq_annot &annot)
const_iterator end() const
const_iterator find(const key_type &key) const
static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
@ eTakeOwnership
An object can take ownership of another.
@ eDiag_Info
Informational message.
@ eDiag_Warning
Warning message.
#define NCBI_USER_THROW_FMT(message)
Throw a "user exception" with message processed as output to ostream.
#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.
#define NCBI_THROW2(exception_class, err_code, message, extra)
Throw exception with extra parameter.
static void SplitPath(const string &path, string *dir=0, string *base=0, string *ext=0)
Split a path string into its basic components.
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.
@ fHyphensIgnoreAndWarn
When a hyphen is encountered in seq data, ignore it but warn.
@ fLetterGaps
Parse runs of Ns when splitting data.
@ fIgnoreMods
Ignore mods entirely. Incompatible with fAddMods.
@ fNoUserObjs
Don't save raw deflines in User-objects.
@ fForceType
Force specified type regardless of accession.
@ fParseRawID
Try to identify raw accessions.
@ fNoSplit
Don't split out ambiguous sequence regions.
@ fAssumeNuc
Assume nucs unless accns indicate otherwise.
@ fParseGaps
Make a delta sequence if gaps found.
@ fValidate
Check (alphabetic) residue validity.
@ fDisableParseRange
No ranges in seq-ids. Ranges part of seq-id instead.
@ e_YES
SeqIds compared, but are different.
void Read(const CObjectInfo &object)
Read object of know type.
pair< TObjectPtr, TTypeInfo > ObjectInfo(C &obj)
virtual string ReadFileHeader(void)
Read file header.
static CObjectIStream * Open(ESerialDataFormat format, CNcbiIstream &inStream, bool deleteInStream)
Create serial object reader and attach it to an input stream.
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.
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.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
IO_PREFIX::istream CNcbiIstream
Portable alias for istream.
IO_PREFIX::ifstream CNcbiIfstream
Portable alias for ifstream.
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 & ToLower(string &str)
Convert string to lower case â string& version.
@ eCurrent
Use current time. See also CCurrentTime.
TData & SetData(void)
Assign a value to Data data member.
TSub & SetSub(void)
Select the variant.
bool IsSetQual(void) const
qualifiers Check if a value has been assigned to Qual data member.
const TQual & GetQual(void) const
Get the Qual member data.
TSet & SetSet(void)
Select the variant.
const TSet & GetSet(void) const
Get the variant data.
bool IsSet(void) const
Check if variant Set is selected.
const TSeq_set & GetSeq_set(void) const
Get the Seq_set member data.
TSeq & SetSeq(void)
Select the variant.
TSeq_set & SetSeq_set(void)
Assign a value to Seq_set data member.
@ eClass_pop_set
population study
@ eClass_phy_set
phylogenetic study
@ eClass_mut_set
set of mutations
@ eClass_eco_set
ecological sample study
@ eClass_genbank
converted genbank
@ eClass_small_genome_set
viral segments or mitochondrial minicircles
void SetData(TData &value)
Assign a value to Data data member.
list< CRef< CSeqdesc > > Tdata
TId & SetId(void)
Assign a value to Id data member.
const TUser & GetUser(void) const
Get the variant data.
void SetPub(TPub &value)
Assign a value to Pub data member.
TPub & SetPub(void)
Select the variant.
bool IsSetAnnot(void) const
Check if a value has been assigned to Annot data member.
TAnnot & SetAnnot(void)
Assign a value to Annot data member.
const TId & GetId(void) const
Get the Id member data.
const Tdata & Get(void) const
Get the member data.
void SetInst(TInst &value)
Assign a value to Inst data member.
TUser & SetUser(void)
Select the variant.
Tdata & Set(void)
Assign a value to data member.
bool IsUser(void) const
Check if variant User is selected.
@ eRepr_raw
continuous sequence
@ e_User
user defined object
@ e_Pub
a reference to the publication
@ e_Source
source of materials, includes Org-ref
const TEntrys & GetEntrys(void) const
Get the variant data.
const TData & GetData(void) const
Get the Data member data.
void SetData(TData &value)
Assign a value to Data data member.
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
static const CS_INT unused
constexpr auto sort(_Init &&init)
const CharType(& source)[N]
NCBI C++ stream class wrappers for triggering between "new" and "old" C++ stream libraries.
std::istream & in(std::istream &in_, double &x_)
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
static int match(PCRE2_SPTR start_eptr, PCRE2_SPTR start_ecode, uint16_t top_bracket, PCRE2_SIZE frame_size, pcre2_match_data *match_data, match_block *mb)
static SLJIT_INLINE sljit_ins l(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins msg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins lr(sljit_gpr dst, sljit_gpr src)
static void s_RemoveGenBankDbxrefs(list< CRef< CSeq_feat >> &ftable)
static void s_UpdateProteinAndTranscriptIds(CSeq_feat &seqfeat)
void g_LogDiagMessage(ILineErrorListener *logger, EDiagSev sev, const string &msg)
CFileContentInfoGenbank mInfoGenbank
static CS_CONTEXT * context
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