validator.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:46k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: validator.cpp,v $
  4.  * PRODUCTION Revision 1000.3  2004/06/01 19:47:36  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.44
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: validator.cpp,v 1000.3 2004/06/01 19:47:36 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Author:  Jonathan Kans, Clifford Clausen, Aaron Ucko.......
  35.  *
  36.  * File Description:
  37.  *   Validates CSeq_entries and CSeq_submits
  38.  *
  39.  */
  40. #include <ncbi_pch.hpp>
  41. #include <corelib/ncbistd.hpp>
  42. #include <serial/serialbase.hpp>
  43. #include <objmgr/object_manager.hpp>
  44. #include <objtools/validator/validator.hpp>
  45. #include "validatorp.hpp"
  46. BEGIN_NCBI_SCOPE
  47. BEGIN_SCOPE(objects)
  48. BEGIN_SCOPE(validator)
  49. // *********************** CValidator implementation **********************
  50. CValidator::CValidator(CObjectManager& objmgr) :
  51.     m_ObjMgr(&objmgr),
  52.     m_PrgCallback(0),
  53.     m_UserData(0)
  54. {
  55. }
  56. CValidator::~CValidator(void)
  57. {
  58. }
  59. CConstRef<CValidError> CValidator::Validate
  60. (const CSeq_entry& se,
  61.  CScope* scope,
  62.  Uint4 options)
  63. {
  64.     CRef<CValidError> errors(new CValidError());
  65.     CValidError_imp imp(*m_ObjMgr, &(*errors), options);
  66.     imp.SetProgressCallback(m_PrgCallback, m_UserData);
  67.     if ( !imp.Validate(se, 0, scope) ) {
  68.         errors.Reset();
  69.     }
  70.     return errors;
  71. }
  72. CConstRef<CValidError> CValidator::Validate
  73. (const CSeq_submit& ss,
  74.  CScope* scope,
  75.  Uint4 options)
  76. {
  77.     CRef<CValidError> errors(new CValidError());
  78.     CValidError_imp imp(*m_ObjMgr, &(*errors), options);
  79.     imp.Validate(ss, scope);
  80.     return errors;
  81. }
  82. CConstRef<CValidError> CValidator::Validate
  83. (const CSeq_annot& sa,
  84.  CScope* scope,
  85.  Uint4 options)
  86. {
  87.     CRef<CValidError> errors(new CValidError());
  88.     CValidError_imp imp(*m_ObjMgr, &(*errors), options);
  89.     imp.Validate(sa, scope);
  90.     return errors;
  91. }
  92. void CValidator::SetProgressCallback(TProgressCallback callback, void* user_data)
  93. {
  94.     m_PrgCallback = callback;
  95.     m_UserData = user_data;
  96. }
  97. // *********************** CValidError implementation **********************
  98. CValidError::CValidError(void)
  99. {
  100. }
  101. void CValidError::AddValidErrItem(const CValidErrItem* item)
  102. {
  103.     m_ErrItems.push_back(CConstRef<CValidErrItem>(item));
  104.     m_Stats[item->GetSeverity()]++;
  105. }
  106. CValidError::~CValidError()
  107. {
  108. }
  109. // *********************** CValidErrItem implementation ********************
  110. CValidErrItem::CValidErrItem
  111. (EDiagSev sev,
  112.  unsigned int         ei,
  113.  const string&        msg,
  114.  const CSerialObject& obj)
  115.   : m_Severity (sev),
  116.     m_ErrIndex (ei),
  117.     m_Message (msg),
  118.     m_Object (&obj, obj.GetThisTypeInfo())
  119. {
  120. }
  121. CValidErrItem::~CValidErrItem(void)
  122. {
  123. }
  124. EDiagSev CValidErrItem::GetSeverity(void) const
  125. {
  126.     return m_Severity;
  127. }
  128. const string& CValidErrItem::GetSevAsStr(void) const
  129. {
  130.     static const string str_sev[] = {
  131.         "Info",
  132.         "Warning",
  133.         "Error",
  134.         "Critical",
  135.         "Fatal",
  136.         "Trace"
  137.     };
  138.     return str_sev[GetSeverity()];
  139. }
  140. const string& CValidErrItem::GetErrCode(void) const
  141. {
  142.     if (m_ErrIndex <= eErr_UNKNOWN) {
  143.         return sm_Terse [m_ErrIndex];
  144.     }
  145.     return sm_Terse [eErr_UNKNOWN];
  146. }
  147. const string& CValidErrItem::GetMsg(void) const
  148. {
  149.     return m_Message;
  150. }
  151. const string& CValidErrItem::GetVerbose(void) const
  152. {
  153.     if (m_ErrIndex <= eErr_UNKNOWN) {
  154.         return sm_Verbose [m_ErrIndex];
  155.     }
  156.     return sm_Verbose [eErr_UNKNOWN];
  157. }
  158. const CConstObjectInfo& CValidErrItem::GetObject(void) const
  159. {
  160.     return m_Object;
  161. }
  162. // ************************ CValidError_CI implementation **************
  163. CValidError_CI::CValidError_CI(void) :
  164.     m_Validator(0),
  165.     m_ErrCodeFilter(kEmptyStr), // eErr_UNKNOWN
  166.     m_MinSeverity(eDiagSevMin),
  167.     m_MaxSeverity(eDiagSevMax)
  168. {
  169. }
  170. CValidError_CI::CValidError_CI
  171. (const CValidError& ve,
  172.  const string& errcode,
  173.  EDiagSev           minsev,
  174.  EDiagSev           maxsev) :
  175.     m_Validator(&ve),
  176.     m_Current(ve.m_ErrItems.begin()),
  177.     m_ErrCodeFilter(errcode),
  178.     m_MinSeverity(minsev),
  179.     m_MaxSeverity(maxsev)
  180. {
  181.     if ( !Filter(**m_Current) ) {
  182.         Next();
  183.     }
  184. }
  185. CValidError_CI::CValidError_CI(const CValidError_CI& other)
  186. {
  187.     if ( this != &other ) {
  188.         *this = other;
  189.     }
  190. }
  191. CValidError_CI::~CValidError_CI(void)
  192. {
  193. }
  194. CValidError_CI& CValidError_CI::operator=(const CValidError_CI& iter)
  195. {
  196.     if (this == &iter) {
  197.         return *this;
  198.     }
  199.     m_Validator = iter.m_Validator;
  200.     m_Current = iter.m_Current;
  201.     m_ErrCodeFilter = iter.m_ErrCodeFilter;
  202.     m_MinSeverity = iter.m_MinSeverity;
  203.     m_MaxSeverity = iter.m_MaxSeverity;
  204.     return *this;
  205. }
  206. CValidError_CI& CValidError_CI::operator++(void)
  207. {
  208.     Next();
  209.     return *this;
  210. }
  211. CValidError_CI::operator bool (void) const
  212. {
  213.     return m_Current != m_Validator->m_ErrItems.end();
  214. }
  215. const CValidErrItem& CValidError_CI::operator*(void) const
  216. {
  217.     return **m_Current;
  218. }
  219. const CValidErrItem* CValidError_CI::operator->(void) const
  220. {
  221.     return &(**m_Current);
  222. }
  223. bool CValidError_CI::Filter(const CValidErrItem& item) const
  224. {
  225.     EDiagSev item_sev = (*m_Current)->GetSeverity();
  226.     if ( (m_ErrCodeFilter.empty()  ||  
  227.           NStr::StartsWith(item.GetErrCode(), m_ErrCodeFilter))  &&
  228.          ((item_sev >= m_MinSeverity)  &&  (item_sev <= m_MaxSeverity)) ) {
  229.         return true;;
  230.     }
  231.     return false;
  232. }
  233. void CValidError_CI::Next(void)
  234. {
  235.     if ( AtEnd() ) {
  236.         return;
  237.     }
  238.     do {
  239.         ++m_Current;
  240.     } while ( !AtEnd()  &&  !Filter(**m_Current) );
  241. }
  242. bool CValidError_CI::AtEnd(void) const
  243. {
  244.     return m_Current == m_Validator->m_ErrItems.end();
  245. }
  246. // External terse error type explanation
  247. const string CValidErrItem::sm_Terse [] = {
  248.     "UNKNOWN",
  249.     "SEQ_INST_ExtNotAllowed",
  250.     "SEQ_INST_ExtBadOrMissing",
  251.     "SEQ_INST_SeqDataNotFound",
  252.     "SEQ_INST_SeqDataNotAllowed",
  253.     "SEQ_INST_ReprInvalid",
  254.     "SEQ_INST_CircularProtein",
  255.     "SEQ_INST_DSProtein",
  256.     "SEQ_INST_MolNotSet",
  257.     "SEQ_INST_MolOther",
  258.     "SEQ_INST_FuzzyLen",
  259.     "SEQ_INST_InvalidLen",
  260.     "SEQ_INST_InvalidAlphabet",
  261.     "SEQ_INST_SeqDataLenWrong",
  262.     "SEQ_INST_SeqPortFail",
  263.     "SEQ_INST_InvalidResidue",
  264.     "SEQ_INST_StopInProtein",
  265.     "SEQ_INST_PartialInconsistent",
  266.     "SEQ_INST_ShortSeq",
  267.     "SEQ_INST_NoIdOnBioseq",
  268.     "SEQ_INST_BadDeltaSeq",
  269.     "SEQ_INST_LongHtgsSequence",
  270.     "SEQ_INST_LongLiteralSequence",
  271.     "SEQ_INST_SequenceExceeds350kbp",
  272.     "SEQ_INST_ConflictingIdsOnBioseq",
  273.     "SEQ_INST_MolNuclAcid",
  274.     "SEQ_INST_ConflictingBiomolTech",
  275.     "SEQ_INST_SeqIdNameHasSpace",
  276.     "SEQ_INST_IdOnMultipleBioseqs",
  277.     "SEQ_INST_DuplicateSegmentReferences",
  278.     "SEQ_INST_TrailingX",
  279.     "SEQ_INST_BadSeqIdFormat",
  280.     "SEQ_INST_PartsOutOfOrder",
  281.     "SEQ_INST_BadSecondaryAccn",
  282.     "SEQ_INST_ZeroGiNumber",
  283.     "SEQ_INST_RnaDnaConflict",
  284.     "SEQ_INST_HistoryGiCollision",
  285.     "SEQ_INST_GiWithoutAccession",
  286.     "SEQ_INST_MultipleAccessions",
  287.     "SEQ_INST_HistAssemblyMissing",
  288.     "SEQ_INST_TerminalNs",
  289.     "SEQ_INST_UnexpectedIdentifierChange",
  290.     "SEQ_INST_InternalNsInSeqLit",
  291.     "SEQ_INST_SeqLitGapLength0",
  292.     "SEQ_INST_TpaAssmeblyProblem",
  293.     "SEQ_INST_SeqLocLength",
  294.     "SEQ_DESCR_BioSourceMissing",
  295.     "SEQ_DESCR_InvalidForType",
  296.     "SEQ_DESCR_FileOpenCollision",
  297.     "SEQ_DESCR_Unknown",
  298.     "SEQ_DESCR_NoPubFound",
  299.     "SEQ_DESCR_NoOrgFound",
  300.     "SEQ_DESCR_MultipleBioSources",
  301.     "SEQ_DESCR_NoMolInfoFound",
  302.     "SEQ_DESCR_BadCountryCode",
  303.     "SEQ_DESCR_NoTaxonID",
  304.     "SEQ_DESCR_InconsistentBioSources",
  305.     "SEQ_DESCR_MissingLineage",
  306.     "SEQ_DESCR_SerialInComment",
  307.     "SEQ_DESCR_BioSourceNeedsFocus",
  308.     "SEQ_DESCR_BadOrganelle",
  309.     "SEQ_DESCR_MultipleChromosomes",
  310.     "SEQ_DESCR_BadSubSource",
  311.     "SEQ_DESCR_BadOrgMod",
  312.     "SEQ_DESCR_InconsistentProteinTitle",
  313.     "SEQ_DESCR_Inconsistent",
  314.     "SEQ_DESCR_ObsoleteSourceLocation",
  315.     "SEQ_DESCR_ObsoleteSourceQual",
  316.     "SEQ_DESCR_StructuredSourceNote",
  317.     "SEQ_DESCR_MultipleTitles",
  318.     "SEQ_DESCR_Obsolete",
  319.     "SEQ_DESCR_UnnecessaryBioSourceFocus",
  320.     "SEQ_DESCR_RefGeneTrackingWithoutStatus",
  321.     "SEQ_DESCR_UnwantedCompleteFlag",
  322.     "GENERIC_NonAsciiAsn",
  323.     "GENERIC_Spell",
  324.     "GENERIC_AuthorListHasEtAl",
  325.     "GENERIC_MissingPubInfo",
  326.     "GENERIC_UnnecessaryPubEquiv",
  327.     "GENERIC_BadPageNumbering",
  328.     "SEQ_PKG_NoCdRegionPtr",
  329.     "SEQ_PKG_NucProtProblem",
  330.     "SEQ_PKG_SegSetProblem",
  331.     "SEQ_PKG_EmptySet",
  332.     "SEQ_PKG_NucProtNotSegSet",
  333.     "SEQ_PKG_SegSetNotParts",
  334.     "SEQ_PKG_SegSetMixedBioseqs",
  335.     "SEQ_PKG_PartsSetMixedBioseqs",
  336.     "SEQ_PKG_PartsSetHasSets",
  337.     "SEQ_PKG_FeaturePackagingProblem",
  338.     "SEQ_PKG_GenomicProductPackagingProblem",
  339.     "SEQ_PKG_InconsistentMolInfoBiomols",
  340.     "SEQ_PKG_GraphPackagingProblem",
  341.     "SEQ_FEAT_InvalidForType",
  342.     "SEQ_FEAT_PartialProblem",
  343.     "SEQ_FEAT_PartialsInconsistent",
  344.     "SEQ_FEAT_InvalidType",
  345.     "SEQ_FEAT_Range",
  346.     "SEQ_FEAT_MixedStrand",
  347.     "SEQ_FEAT_SeqLocOrder",
  348.     "SEQ_FEAT_CdTransFail",
  349.     "SEQ_FEAT_StartCodon",
  350.     "SEQ_FEAT_InternalStop",
  351.     "SEQ_FEAT_NoProtein",
  352.     "SEQ_FEAT_MisMatchAA",
  353.     "SEQ_FEAT_TransLen",
  354.     "SEQ_FEAT_NoStop",
  355.     "SEQ_FEAT_TranslExcept",
  356.     "SEQ_FEAT_NoProtRefFound",
  357.     "SEQ_FEAT_NotSpliceConsensus",
  358.     "SEQ_FEAT_OrfCdsHasProduct",
  359.     "SEQ_FEAT_GeneRefHasNoData",
  360.     "SEQ_FEAT_ExceptInconsistent",
  361.     "SEQ_FEAT_ProtRefHasNoData",
  362.     "SEQ_FEAT_GenCodeMismatch",
  363.     "SEQ_FEAT_RNAtype0",
  364.     "SEQ_FEAT_UnknownImpFeatKey",
  365.     "SEQ_FEAT_UnknownImpFeatQual",
  366.     "SEQ_FEAT_WrongQualOnImpFeat",
  367.     "SEQ_FEAT_MissingQualOnImpFeat",
  368.     "SEQ_FEAT_PsuedoCdsHasProduct",
  369.     "SEQ_FEAT_IllegalDbXref",
  370.     "SEQ_FEAT_FarLocation",
  371.     "SEQ_FEAT_DuplicateFeat",
  372.     "SEQ_FEAT_UnnecessaryGeneXref",
  373.     "SEQ_FEAT_TranslExceptPhase",
  374.     "SEQ_FEAT_TrnaCodonWrong",
  375.     "SEQ_FEAT_BadTrnaAA",
  376.     "SEQ_FEAT_BothStrands",
  377.     "SEQ_FEAT_CDSgeneRange",
  378.     "SEQ_FEAT_CDSmRNArange",
  379.     "SEQ_FEAT_OverlappingPeptideFeat",
  380.     "SEQ_FEAT_SerialInComment",
  381.     "SEQ_FEAT_MultipleCDSproducts",
  382.     "SEQ_FEAT_FocusOnBioSourceFeature",
  383.     "SEQ_FEAT_PeptideFeatOutOfFrame",
  384.     "SEQ_FEAT_InvalidQualifierValue",
  385.     "SEQ_FEAT_MultipleMRNAproducts",
  386.     "SEQ_FEAT_mRNAgeneRange",
  387.     "SEQ_FEAT_TranscriptLen",
  388.     "SEQ_FEAT_TranscriptMismatches",
  389.     "SEQ_FEAT_CDSproductPackagingProblem",
  390.     "SEQ_FEAT_DuplicateInterval",
  391.     "SEQ_FEAT_PolyAsiteNotPoint",
  392.     "SEQ_FEAT_ImpFeatBadLoc",
  393.     "SEQ_FEAT_LocOnSegmentedBioseq",
  394.     "SEQ_FEAT_UnnecessaryCitPubEquiv",
  395.     "SEQ_FEAT_ImpCDShasTranslation",
  396.     "SEQ_FEAT_ImpCDSnotPseudo",
  397.     "SEQ_FEAT_MissingMRNAproduct",
  398.     "SEQ_FEAT_AbuttingIntervals",
  399.     "SEQ_FEAT_CollidingGeneNames",
  400.     "SEQ_FEAT_CollidingLocusTags",
  401.     "SEQ_FEAT_MultiIntervalGene",
  402.     "SEQ_FEAT_FeatContentDup",
  403.     "SEQ_FEAT_BadProductSeqId",
  404.     "SEQ_FEAT_RnaProductMismatch",
  405.     "SEQ_FEAT_DifferntIdTypesInSeqLoc",
  406.     "SEQ_FEAT_MissingCDSproduct",
  407.     "SEQ_FEAT_MissingLocation",
  408.     "SEQ_FEAT_OnlyGeneXrefs",
  409.     "SEQ_FEAT_UTRdoesNotAbutCDS",
  410.     "SEQ_FEAT_MultipleCdsOnMrna",
  411.     "SEQ_FEAT_BadConflictFlag",
  412.     "SEQ_FEAT_ConflictFlagSet",
  413.     "SEQ_FEAT_LocusTagProblem",
  414.     "SEQ_FEAT_AltStartCodon",
  415.     "SEQ_FEAT_GenesInconsistent",
  416.     "SEQ_ALIGN_SeqIdProblem",
  417.     "SEQ_ALIGN_StrandRev",
  418.     "SEQ_ALIGN_DensegLenStart",
  419.     "SEQ_ALIGN_StartMorethanBiolen",
  420.     "SEQ_ALIGN_EndMorethanBiolen",
  421.     "SEQ_ALIGN_LenMorethanBiolen",
  422.     "SEQ_ALIGN_SumLenStart",
  423.     "SEQ_ALIGN_SegsDimMismatch",
  424.     "SEQ_ALIGN_SegsNumsegMismatch",
  425.     "SEQ_ALIGN_SegsStartsMismatch",
  426.     "SEQ_ALIGN_SegsPresentMismatch",
  427.     "SEQ_ALIGN_SegsPresentStartsMismatch",
  428.     "SEQ_ALIGN_SegsPresentStrandsMismatch",
  429.     "SEQ_ALIGN_FastaLike",
  430.     "SEQ_ALIGN_SegmentGap",
  431.     "SEQ_ALIGN_SegsInvalidDim",
  432.     "SEQ_ALIGN_Segtype",
  433.     "SEQ_ALIGN_BlastAligns",
  434.     "SEQ_GRAPH_GraphMin",
  435.     "SEQ_GRAPH_GraphMax",
  436.     "SEQ_GRAPH_GraphBelow",
  437.     "SEQ_GRAPH_GraphAbove",
  438.     "SEQ_GRAPH_GraphByteLen",
  439.     "SEQ_GRAPH_GraphOutOfOrder",
  440.     "SEQ_GRAPH_GraphBioseqLen",
  441.     "SEQ_GRAPH_GraphSeqLitLen",
  442.     "SEQ_GRAPH_GraphSeqLocLen",
  443.     "SEQ_GRAPH_GraphStartPhase",
  444.     "SEQ_GRAPH_GraphStopPhase",
  445.     "SEQ_GRAPH_GraphDiffNumber",
  446.     "SEQ_GRAPH_GraphACGTScore",
  447.     "SEQ_GRAPH_GraphNScore",
  448.     "SEQ_GRAPH_GraphGapScore",
  449.     "SEQ_GRAPH_GraphOverlap",
  450.     "Internal_Exception",
  451.     "UNKONWN"
  452. };
  453. // External verbose error type explanation
  454. const string CValidErrItem::sm_Verbose [] = {
  455. "UNKNOWN",
  456. /* SEQ_INST */
  457. //  SEQ_INST_ExtNotAllowed
  458. "A Bioseq 'extension' is used for special classes of Bioseq. This class 
  459. of Bioseq should not have one but it does. This is probably a software 
  460. error.",
  461. //  SEQ_INST_ExtBadOrMissing
  462. "This class of Bioseq requires an 'extension' but it is missing or of 
  463. the wrong type. This is probably a software error.",
  464. //  SEQ_INST_SeqDataNotFound
  465. "No actual sequence data was found on this Bioseq. This is probably a 
  466. software problem.",
  467. //  SEQ_INST_SeqDataNotAllowed
  468. "The wrong type of sequence data was found on this Bioseq. This is 
  469. probably a software problem.",
  470. //  SEQ_INST_ReprInvalid
  471. "This Bioseq has an invalid representation class. This is probably a 
  472. software error.",
  473. //  SEQ_INST_CircularProtein
  474. "This protein Bioseq is represented as circular. Circular topology is 
  475. normally used only for certain DNA molecules, for example, plasmids.",
  476. //  SEQ_INST_DSProtein
  477. "This protein Bioseq has strandedness indicated. Strandedness is 
  478. normally a property only of DNA sequences. Please unset the 
  479. strandedness.",
  480. //  SEQ_INST_MolNotSet
  481. "It is not clear whether this sequence is nucleic acid or protein. 
  482. Please set the appropriate molecule type (Bioseq.mol).",
  483. //  SEQ_INST_MolOther
  484. "Most sequences are either nucleic acid or protein. However, the 
  485. molecule type (Bioseq.mol) is set to 'other'. It should probably be set 
  486. to nucleic acid or a protein.",
  487. //  SEQ_INST_FuzzyLen
  488. "This sequence is marked as having an uncertain length, but the length 
  489. is known exactly.",
  490. //  SEQ_INST_InvalidLen
  491. "The length indicated for this sequence is invalid. This is probably a 
  492. software error.",
  493. //  SEQ_INST_InvalidAlphabet
  494. "This Bioseq has an invalid alphabet (e.g. protein codes on a nucleic 
  495. acid or vice versa). This is probably a software error.",
  496. //  SEQ_INST_SeqDataLenWrong
  497. "The length of this Bioseq does not agree with the length of the actual 
  498. data. This is probably a software error.",
  499. //  SEQ_INST_SeqPortFail
  500. "Something is very wrong with this entry. The validator cannot open a 
  501. SeqPort on the Bioseq. Further testing cannot be done.",
  502. //  SEQ_INST_InvalidResidue
  503. "Invalid residue codes were found in this Bioseq.",
  504. //  SEQ_INST_StopInProtein
  505. "Stop codon symbols were found in this protein Bioseq.",
  506. //  SEQ_INST_PartialInconsistent
  507. "This segmented sequence is described as complete or incomplete in 
  508. several places, but these settings are inconsistent.",
  509. //  SEQ_INST_ShortSeq
  510. "This Bioseq is unusually short (less than 4 amino acids or less than 11 
  511. nucleic acids). GenBank does not usually accept such short sequences.",
  512. //  SEQ_INST_NoIdOnBioseq
  513. "No SeqIds were found on this Bioseq. This is probably a software 
  514. error.",
  515. //  SEQ_INST_BadDeltaSeq
  516. "Delta sequences should only be HTGS-1 or HTGS-2.",
  517. //  SEQ_INST_LongHtgsSequence
  518. "HTGS-1 or HTGS-2 sequences must be < 350 KB in length.",
  519. //  SEQ_INST_LongLiteralSequence
  520. "Delta literals must be < 350 KB in length.",
  521. //  SEQ_INST_SequenceExceeds350kbp
  522. "Individual sequences must be < 350 KB in length, unless they represent 
  523. a single gene.",
  524. //  SEQ_INST_ConflictingIdsOnBioseq
  525. "Two SeqIds of the same class was found on this Bioseq. This is probably 
  526. a software error.",
  527. //  SEQ_INST_MolNuclAcid
  528. "The specific type of this nucleic acid (DNA or RNA) is not set.",
  529. //  SEQ_INST_ConflictingBiomolTech
  530. "HTGS/STS/GSS records should be genomic DNA. There is a conflict between 
  531. the technique and expected molecule type.",
  532. //  SEQ_INST_SeqIdNameHasSpace
  533. "The Seq-id.name field should be a single word without any whitespace. 
  534. This should be fixed by the database staff.",
  535. //  SEQ_INST_IdOnMultipleBioseqs
  536. "There are multiple occurrences of the same Seq-id in this record. 
  537. Sequence identifiers must be unique within a record.",
  538. //  SEQ_INST_DuplicateSegmentReferences
  539. "The segmented sequence refers multiple times to the same Seq-id. This 
  540. may be due to a software error. Please consult with the database staff 
  541. to fix this record.",
  542. //  SEQ_INST_TrailingX
  543. "The protein sequence ends with one or more X (unknown) amino acids.",
  544. //  SEQ_INST_BadSeqIdFormat
  545. "A nucleotide sequence identifier should be 1 letter plus 5 digits or 2 
  546. letters plus 6 digits, and a protein sequence identifer should be 3 
  547. letters plus 5 digits.",
  548. //  SEQ_INST_PartsOutOfOrder
  549. "The parts inside a segmented set should correspond to the seq_ext of 
  550. the segmented bioseq. A difference will affect how the flatfile is 
  551. displayed.",
  552. //  SEQ_INST_BadSecondaryAccn
  553. "A secondary accession usually indicates a record replaced or subsumed 
  554. by the current record. In this case, the current accession and 
  555. secondary are the same.",
  556. //  SEQ_INST_ZeroGiNumber
  557. "GI numbers are assigned to sequences by NCBI's sequence tracking 
  558. database. 0 is not a legal value for a gi number.",
  559. //  SEQ_INST_RnaDnaConflict
  560. "The MolInfo biomol field is inconsistent with the Bioseq molecule type 
  561. field.",
  562. //  SEQ_INST_HistoryGiCollision
  563. "The Bioseq history gi refers to this Bioseq, not to its predecessor or 
  564. successor.",
  565. //  SEQ_INST_GiWithoutAccession
  566. "The Bioseq has a gi identifier but no GenBank/EMBL/DDBJ accession 
  567. identifier.",
  568. //  SEQ_INST_MultipleAccessions
  569. "The Bioseq has a gi identifier and more than one GenBank/EMBL/DDBJ 
  570. accession identifier.",
  571. //  SEQ_INST_HistAssemblyMissing
  572. "The Bioseq has a TPA identifier but does not have a Seq-hist.assembly alignment. 
  573. This should be annotated or calculated by the database, resulting in a PRIMARY 
  574. block visible in the flatfile.",
  575. //  SEQ_INST_TerminalNs
  576. "The Bioseq has one or more N bases at the end.",
  577. //  SEQ_INST_UnexpectedIdentifierChange
  578. "The set of sequence identifiers on a Bioseq are not consistent with the 
  579. previous version of the record in the database.",
  580. //  SEQ_INST_InternalNsInSeqLit
  581. "There are runs of many Ns inside the SeqLit component of a delta Bioseq.",
  582. //  SEQ_INST_SeqLitGapLength0
  583. "A SeqLit component of a delta Bioseq can specify a gap, but it should 
  584. not be a gap of 0 length.",
  585. //  SEQ_INST_TpaAssmeblyProblem
  586. "Third party annotation records should have a TpaAssembly user object and a 
  587. Seq-hist.assembly alignment for the PRIMARY block.",
  588. //  SEQ_INST_SeqLocLength
  589. "A SeqLoc component of a delta Bioseq is suspiciously small.",
  590. /* SEQ_DESCR */
  591. //  SEQ_DESCR_BioSourceMissing
  592. "The biological source of this sequence has not been described 
  593. correctly. A Bioseq must have a BioSource descriptor that covers the 
  594. entire molecule. Additional BioSource features may also be added to 
  595. recombinant molecules, natural or otherwise, to designate the parts of 
  596. the molecule. Please add the source information.",
  597. //  SEQ_DESCR_InvalidForType
  598. "This descriptor cannot be used with this Bioseq. A descriptor placed at 
  599. the BioseqSet level applies to all of the Bioseqs in the set. Please 
  600. make sure the descriptor is consistent with every sequence to which it 
  601. applies.",
  602. //  SEQ_DESCR_FileOpenCollision
  603. "FileOpen is unable to find a local file. This is normal, and can be 
  604. ignored.",
  605. //  SEQ_DESCR_Unknown
  606. "An unknown or 'other' modifier was used.",
  607. //  SEQ_DESCR_NoPubFound
  608. "No publications were found in this entry which refer to this Bioseq. If 
  609. a publication descriptor is added to a BioseqSet, it will apply to all 
  610. of the Bioseqs in the set. A publication feature should be used if the 
  611. publication applies only to a subregion of a sequence.",
  612. //  SEQ_DESCR_NoOrgFound
  613. "This entry does not specify the organism that was the source of the 
  614. sequence. Please name the organism.",
  615. //  SEQ_DESCR_MultipleBioSources
  616. "There are multiple BioSource or OrgRef descriptors in the same chain 
  617. with the same taxonomic name. Their information should be combined into 
  618. a single BioSource descriptor.",
  619. //  SEQ_DESCR_NoMolInfoFound
  620. "This sequence does not have a Mol-info descriptor applying to it. This 
  621. indicates genomic vs. message, sequencing technique, and whether the 
  622. sequence is incomplete.",
  623. //  SEQ_DESCR_BadCountryCode
  624. "The country code (up to the first colon) is not on the approved list of 
  625. countries.",
  626. //  SEQ_DESCR_NoTaxonID
  627. "The BioSource is missing a taxonID database identifier. This will be 
  628. inserted by the automated taxonomy lookup called by Clean Up Record.",
  629. //  SEQ_DESCR_InconsistentBioSources
  630. "This population study has BioSource descriptors with different 
  631. taxonomic names. All members of a population study should be from the 
  632. same organism.",
  633. //  SEQ_DESCR_MissingLineage
  634. "A BioSource should have a taxonomic lineage, which can be obtained from 
  635. the taxonomy network server.",
  636. //  SEQ_DESCR_SerialInComment
  637. "Comments that refer to the conclusions of a specific reference should 
  638. not be cited by a serial number inside brackets (e.g., [3]), but should 
  639. instead be attached as a REMARK on the reference itself.",
  640. //  SEQ_DESCR_BioSourceNeedsFocus
  641. "Focus must be set on a BioSource descriptor in records where there is a 
  642. BioSource feature with a different organism name.",
  643. //  SEQ_DESCR_BadOrganelle
  644. "Note that only Kinetoplastida have kinetoplasts, and that only 
  645. Chlorarchniophyta and Cryptophyta have nucleomorphs.",
  646. //  SEQ_DESCR_MultipleChromosomes
  647. "There are multiple chromosome qualifiers on this Bioseq. With the 
  648. exception of some pseudoautosomal genes, this is likely to be a 
  649. biological annotation error.",
  650. //  SEQ_DESCR_BadSubSource
  651. "Unassigned SubSource subtype.",
  652. //  SEQ_DESCR_BadOrgMod
  653. "Unassigned OrgMod subtype.",
  654. //  SEQ_DESCR_InconsistentProteinTitle
  655. "An instantiated protein title descriptor should normally be the same as 
  656. the automatically generated title. This may be a curated exception, or 
  657. it may be out of synch with the current annotation.",
  658. //  SEQ_DESCR_Inconsistent
  659. "There are two descriptors of the same type which are inconsistent with 
  660. each other. Please make them consistent.",
  661. //  SEQ_DESCR_ObsoleteSourceLocation
  662. "There is a source location that is no longer legal for use in GenBank 
  663. records.",
  664. //  SEQ_DESCR_ObsoleteSourceQual
  665. "There is a source qualifier that is no longer legal for use in GenBank 
  666. records.",
  667. //  SEQ_DESCR_StructuredSourceNote
  668. "The name of a structured source field is present as text in a note. 
  669. The data should probably be put into the appropriate field instead.",
  670. //  SEQ_DESCR_MultipleTitles
  671. "There are multiple title descriptors in the same chain.",
  672. //  SEQ_DESCR_Obsolete
  673. "Obsolete descriptor type.",
  674. //  SEQ_DESCR_UnnecessaryBioSourceFocus
  675. "Focus should not be set on a BioSource descriptor in records where there is no 
  676. BioSource feature.",
  677. //  SEQ_DESCR_RefGeneTrackingWithoutStatus
  678. "The RefGeneTracking user object does not have the required Status field set.",
  679. //  SEQ_DESCR_UnwantedCompleteFlag
  680. "The Mol-info.completeness flag should not be set on a genomic sequence unless 
  681. the title also says it is a complete sequence or complete genome.",
  682. /* SEQ_GENERIC */
  683. //  GENERIC_NonAsciiAsn
  684. "There is a non-ASCII type character in this entry.",
  685. //  GENERIC_Spell
  686. "There is a potentially misspelled word in this entry.",
  687. //  GENERIC_AuthorListHasEtAl
  688. "The author list contains et al, which should be replaced with the 
  689. remaining author names.",
  690. //  GENERIC_MissingPubInfo
  691. "The publication is missing essential information, such as title or 
  692. authors.",
  693. //  GENERIC_UnnecessaryPubEquiv
  694. "A nested Pub-equiv is not normally expected in a publication. This may 
  695. prevent proper display of all publication information.",
  696. //  GENERIC_BadPageNumbering
  697. "The publication page numbering is suspect.",
  698. /* SEQ_PKG */
  699. //  SEQ_PKG_NoCdRegionPtr
  700. "A protein is found in this entry, but the coding region has not been 
  701. described. Please add a CdRegion feature to the nucleotide Bioseq.",
  702. //  SEQ_PKG_NucProtProblem
  703. "Both DNA and protein sequences were expected, but one of the two seems 
  704. to be missing. Perhaps this is the wrong package to use.",
  705. //  SEQ_PKG_SegSetProblem
  706. "A segmented sequence was expected, but it was not found. Perhaps this 
  707. is the wrong package to use.",
  708. //  SEQ_PKG_EmptySet
  709. "No Bioseqs were found in this BioseqSet. Is that what was intended?",
  710. //  SEQ_PKG_NucProtNotSegSet
  711. "A nuc-prot set should not contain any other BioseqSet except segset.",
  712. //  SEQ_PKG_SegSetNotParts
  713. "A segset should not contain any other BioseqSet except parts.",
  714. //  SEQ_PKG_SegSetMixedBioseqs
  715. "A segset should not contain both nucleotide and protein Bioseqs.",
  716. //  SEQ_PKG_PartsSetMixedBioseqs
  717. "A parts set should not contain both nucleotide and protein Bioseqs.",
  718. //  SEQ_PKG_PartsSetHasSets
  719. "A parts set should not contain BioseqSets.",
  720. //  SEQ_PKG_FeaturePackagingProblem
  721. "A feature should be packaged on its bioseq, or on a set containing the 
  722. Bioseq.",
  723. //  SEQ_PKG_GenomicProductPackagingProblem
  724. "The product of an mRNA feature in a genomic product set should point to 
  725. a cDNA Bioseq packaged in the set, perhaps within a nuc-prot set. 
  726. RefSeq records may however be referenced remotely.",
  727. //  SEQ_PKG_InconsistentMolInfoBiomols
  728. "Mol-info.biomol is inconsistent within a segset or parts set.",
  729. //  SEQ_PKG_GraphPackagingProblem
  730. "A graph should be packaged on its bioseq, or on a set containing the Bioseq.",
  731. /* SEQ_FEAT */
  732. //  SEQ_FEAT_InvalidForType
  733. "This feature type is illegal on this type of Bioseq.",
  734. //  SEQ_FEAT_PartialProblem
  735. "There are several places in an entry where a sequence can be described 
  736. as either partial or complete. In this entry, these settings are 
  737. inconsistent. Make sure that the location and product Seq-locs, the 
  738. Bioseqs, and the SeqFeat partial flag all agree in describing this 
  739. SeqFeat as partial or complete.",
  740. // SEQ_FEAT_PartialsInconsistent
  741. "This segmented sequence is described as complete or incomplete in several 
  742. places, but these settings are inconsistent.",
  743. //  SEQ_FEAT_InvalidType
  744. "A feature with an invalid type has been detected. This is most likely a 
  745. software problem.",
  746. //  SEQ_FEAT_Range
  747. "The coordinates describing the location of a feature do not fall within 
  748. the sequence itself. A feature location or a product Seq-loc is out of 
  749. range of the Bioseq it points to.",
  750. //  SEQ_FEAT_MixedStrand
  751. "Mixed strands (plus and minus) have been found in the same location. 
  752. While this is biologically possible, it is very unusual. Please check 
  753. that this is really what you mean.",
  754. //  SEQ_FEAT_SeqLocOrder
  755. "This location has intervals that are out of order. While whis is 
  756. biologically possible, it is very unusual. Please check that this is 
  757. really what you mean.",
  758. //  SEQ_FEAT_CdTransFail
  759. "A fundamental error occurred in software while attempting to translate 
  760. this coding region. It is either a software problem or sever data 
  761. corruption.",
  762. //  SEQ_FEAT_StartCodon
  763. "An illegal start codon was used. Some possible explanations are: (1) 
  764. the wrong genetic code may have been selected; (2) the wrong reading 
  765. frame may be in use; or (3) the coding region may be incomplete at the 
  766. 5' end, in which case a partial location should be indicated.",
  767. //  SEQ_FEAT_InternalStop
  768. "Internal stop codons are found in the protein sequence. Some possible 
  769. explanations are: (1) the wrong genetic code may have been selected; (2) 
  770. the wrong reading frame may be in use; (3) the coding region may be 
  771. incomplete at the 5' end, in which case a partial location should be 
  772. indicated; or (4) the CdRegion feature location is incorrect.",
  773. //  SEQ_FEAT_NoProtein
  774. "Normally a protein sequence is supplied. This sequence can then be 
  775. compared with the translation of the coding region. In this entry, no 
  776. protein Bioseq was found, and the comparison could not be made.",
  777.  //  SEQ_FEAT_MisMatchAA
  778. "The protein sequence that was supplied is not identical to the 
  779. translation of the coding region. Mismatching amino acids are found 
  780. between these two sequences.",
  781. //  SEQ_FEAT_TransLen
  782. "The protein sequence that was supplied is not the same length as the 
  783. translation of the coding region. Please determine why they are 
  784. different.",
  785. //  SEQ_FEAT_NoStop
  786. "A coding region that is complete should have a stop codon at the 3'end. 
  787.  A stop codon was not found on this sequence, although one was 
  788. expected.",
  789. //  SEQ_FEAT_TranslExcept
  790. "An unparsed transl_except qualifier was found. This indicates a parser 
  791. problem.",
  792. //  SEQ_FEAT_NoProtRefFound
  793. "The name and description of the protein is missing from this entry. 
  794. Every protein Bioseq must have one full-length Prot-ref feature to 
  795. provide this information.",
  796. //  SEQ_FEAT_NotSpliceConsensus
  797. "Splice junctions typically have GT as the first two bases of the intron 
  798. (splice donor) and AG as the last two bases of the intron (splice 
  799. acceptor). This intron does not conform to that pattern.",
  800. //  SEQ_FEAT_OrfCdsHasProduct
  801. "A coding region flagged as orf has a protein product. There should be 
  802. no protein product bioseq on an orf.",
  803. //  SEQ_FEAT_GeneRefHasNoData
  804. "A gene feature exists with no locus name or other fields filled in.",
  805. //  SEQ_FEAT_ExceptInconsistent
  806. "A coding region has an exception gbqual but the excpt flag is not 
  807. set.",
  808. //  SEQ_FEAT_ProtRefHasNoData
  809. "A protein feature exists with no name or other fields filled in.",
  810. //  SEQ_FEAT_GenCodeMismatch
  811. "The genetic code stored in the BioSource is different than that for 
  812. this CDS.",
  813. //  SEQ_FEAT_RNAtype0
  814. "RNA type 0 (unknown RNA) should be type 255 (other).",
  815. //  SEQ_FEAT_UnknownImpFeatKey
  816. "An import feature has an unrecognized key.",
  817. //  SEQ_FEAT_UnknownImpFeatQual
  818. "An import feature has an unrecognized qualifier.",
  819. //  SEQ_FEAT_WrongQualOnImpFeat
  820. "This qualifier is not legal for this feature.",
  821. //  SEQ_FEAT_MissingQualOnImpFeat
  822. "An essential qualifier for this feature is missing.",
  823. //  SEQ_FEAT_PsuedoCdsHasProduct
  824. "A coding region flagged as pseudo has a protein product. There should 
  825. be no protein product bioseq on a pseudo CDS.",
  826. //  SEQ_FEAT_IllegalDbXref
  827. "The database in a cross-reference is not on the list of officially 
  828. recognized database abbreviations.",
  829. //  SEQ_FEAT_FarLocation
  830. "The location has a reference to a bioseq that is not packaged in this 
  831. record.",
  832. //  SEQ_FEAT_DuplicateFeat
  833. "The intervals on this feature are identical to another feature of the 
  834. same type, but the label or comment are different.",
  835. //  SEQ_FEAT_UnnecessaryGeneXref
  836. "This feature has a gene xref that is identical to the overlapping gene. 
  837. This is redundant, and probably should be removed.",
  838. //  SEQ_FEAT_TranslExceptPhase
  839. "A /transl_except qualifier was not on a codon boundary.",
  840. //  SEQ_FEAT_TrnaCodonWrong
  841. "The tRNA codon recognized does not code for the indicated amino acid 
  842. using the specified genetic code.",
  843. //  SEQ_FEAT_BadTrnaAA
  844. "The tRNA encoded amino acid is an illegal value.",
  845. //  SEQ_FEAT_BothStrands
  846. "Feature location indicates that it is on both strands. This is not 
  847. biologically possible for this kind of feature. Please indicate the 
  848. correct strand (plus or minus) for this feature.",
  849. //  SEQ_FEAT_CDSgeneRange
  850. "A CDS is overlapped by a gene feature, but is not completely contained 
  851. by it. This may be an annotation error.",
  852. //  SEQ_FEAT_CDSmRNArange
  853. "A CDS is overlapped by an mRNA feature, but the mRNA does not cover all 
  854. intervals (i.e., exons) on the CDS. This may be an annotation error.",
  855. //  SEQ_FEAT_OverlappingPeptideFeat
  856. "The intervals on this processed protein feature overlap another protein 
  857. feature. This may be caused by errors in originally annotating these 
  858. features on DNA coordinates, where start or stop positions do not occur 
  859. in between codon boundaries. These then appear as errors when the 
  860. features are converted to protein coordinates by mapping through the 
  861. CDS.",
  862. //  SEQ_FEAT_SerialInComment
  863. "Comments that refer to the conclusions of a specific reference should 
  864. not be cited by a serial number inside brackets (e.g., [3]), but should 
  865. instead be attached as a REMARK on the reference itself.",
  866. //  SEQ_FEAT_MultipleCDSproducts
  867. "More than one CDS feature points to the same protein product. This can 
  868. happen with viral long terminal repeats (LTRs), but GenBank policy is to 
  869. have each equivalent CDS point to a separately accessioned protein 
  870. Bioseq.",
  871. //  SEQ_FEAT_FocusOnBioSourceFeature
  872. "The /focus flag is only appropriate on BioSource descriptors, not 
  873. BioSource features.",
  874. //  SEQ_FEAT_PeptideFeatOutOfFrame
  875. "The start or stop positions of this processed peptide feature do not 
  876. occur in between codon boundaries. This may incorrectly overlap other 
  877. peptides when the features are converted to protein coordinates by 
  878. mapping through the CDS.",
  879. //  SEQ_FEAT_InvalidQualifierValue
  880. "The value of this qualifier is constrained to a particular vocabulary 
  881. of style. This value does not conform to those constraints. Please see 
  882. the feature table documentation for more information.",
  883. //  SEQ_FEAT_MultipleMRNAproducts
  884. "More than one mRNA feature points to the same cDNA product. This is an 
  885. error in the genomic product set. Each mRNA feature should have a 
  886. unique product Bioseq.",
  887. //  SEQ_FEAT_mRNAgeneRange
  888. "An mRNA is overlapped by a gene feature, but is not completely 
  889. contained by it. This may be an annotation error.",
  890. //  SEQ_FEAT_TranscriptLen
  891. "The mRNA sequence that was supplied is not the same length as the 
  892. transcription of the mRNA feature. Please determine why they are 
  893. different.",
  894. //  SEQ_FEAT_TranscriptMismatches
  895. "The mRNA sequence and the transcription of the mRNA feature are 
  896. different. If the number is large, it may indicate incorrect intron/exon 
  897. boundaries.",
  898. //  SEQ_FEAT_CDSproductPackagingProblem
  899. "The nucleotide location and protein product of the CDS are not packaged 
  900. together in the same nuc-prot set. This may be an error in the software 
  901. used to create the record.",
  902. //  SEQ_FEAT_DuplicateInterval
  903. "The location has identical adjacent intervals, e.g., a duplicate exon 
  904. reference.",
  905. //  SEQ_FEAT_PolyAsiteNotPoint
  906. "A polyA_site should be at a single nucleotide position.",
  907. //  SEQ_FEAT_ImpFeatBadLoc
  908. "An import feature loc field does not equal the feature location. This 
  909. should be corrected, and then the loc field should be cleared.",
  910. //  SEQ_FEAT_LocOnSegmentedBioseq
  911. "Feature locations traditionally go on the individual parts of a 
  912. segmented bioseq, not on the segmented sequence itself. These features 
  913. are invisible in asn2ff reports, and are now being flagged for 
  914. correction.",
  915. //  SEQ_FEAT_UnnecessaryCitPubEquiv
  916. "A set of citations on a feature should not normally have a nested 
  917. Pub-equiv construct. This may prevent proper matching to the correct 
  918. publication.",
  919. //  SEQ_FEAT_ImpCDShasTranslation
  920. "A CDS that has known translation errors cannot have a /translation 
  921. qualifier.",
  922. //  SEQ_FEAT_ImpCDSnotPseudo
  923. "A CDS that has known translation errors must be marked as pseudo to 
  924. suppress the translation.",
  925. //  SEQ_FEAT_MissingMRNAproduct
  926. "The mRNA feature points to a cDNA product that is not packaged in the 
  927. record. This is an error in the genomic product set.",
  928. //  SEQ_FEAT_AbuttingIntervals
  929. "The start of one interval is next to the stop of another. A single 
  930. interval may be desirable in this case.",
  931. //  SEQ_FEAT_CollidingGeneNames
  932. "Two gene features should not have the same name.",
  933. //  SEQ_FEAT_CollidingLocusTags
  934. "Two gene features should not have the same locus_tag, which is supposed 
  935. to be a unique identifer.",
  936. //  SEQ_FEAT_MultiIntervalGene
  937. "A gene feature on a single Bioseq should have a single interval 
  938. spanning everything considered to be under that gene.",
  939. //  SEQ_FEAT_FeatContentDup
  940. "The intervals on this feature are identical to another feature of the 
  941. same type, and the label and comment are also identical. This is likely 
  942. to be an error in annotating the record. Note that GenBank format 
  943. suppresses duplicate features, so use of Graphic view is recommended.",
  944. //  SEQ_FEAT_BadProductSeqId
  945. "The feature product refers to a database ID that has a locus name 
  946. but no accession. This is probably an error in parsing of a submission.",
  947. //  SEQ_FEAT_RnaProductMismatch
  948. "The RNA feature product type does not correspond to the RNA feature type. 
  949. These need to be consistent.",
  950. //  SEQ_FEAT_DifferntIdTypesInSeqLoc
  951. "All ids in a single seq-loc which refer to the same bioseq should be of the 
  952. same id type",
  953. //  SEQ_FEAT_MissingCDSproduct
  954. "The CDS should have a product, but does not.  Pseudo or short CDSs (less than 6 
  955. amino acids), or those marked with a rearrangement required for product exception, 
  956. are exempt from needing a product.",
  957. //  SEQ_FEAT_MissingLocation
  958. "A feature must specify its location.",
  959. //  SEQ_FEAT_OnlyGeneXrefs
  960. "There are gene xrefs but no gene features.  Records should normally have  
  961. single-interval gene features covering other biological features.  Gene 
  962. xrefs are used only to override the inheritance by overlap.",
  963. //  SEQ_FEAT_UTRdoesNotAbutCDS
  964. "The 5'UTR and 3'UTR features should exactly abut the CDS feature.",
  965. //  SEQ_FEAT_MultipleCdsOnMrna
  966. "Only a single Cdregion feature should be annotated on mRNA bioseq.",
  967. //  SEQ_FEAT_BadConflictFlag
  968. "The coding region conflict flag is set, but the translated product is the 
  969. same as the instantiated product Bioseq.",
  970. //  SEQ_FEAT_ConflictFlagSet
  971. "The coding region conflict flag is appropriately set, but this record should 
  972. be brought to the attention of the source database for possible correction.",
  973. //  SEQ_FEAT_LocusTagProblem
  974. "A gene locus_tag should be a single token, with no spaces.",
  975. //  SEQ_FEAT_AltStartCodon
  976. "An alternative start codon was used. This is rare, and it is expected that 
  977. confirmatory evidence will be cited.",
  978. //  SEQ_FEAT_GenesInconsistent
  979. "The gene on the genomic sequence of a genomic product set should be the 
  980. same as the gene on the cDNA product of the mRNA feature.",
  981. /* SEQ_ALIGN */
  982. //  SEQ_ALIGN_SeqIdProblem
  983. "The seqence referenced by an alignment SeqID is not packaged in the record.",
  984. //  SEQ_ALIGN_StrandRev
  985. "Please contact the sequence database for further help with this error.",
  986. //  SEQ_ALIGN_DensegLenStart
  987. "Please contact the sequence database for further help with this error.",
  988. //  SEQ_ALIGN_StartMorethanBiolen
  989. "Please contact the sequence database for further help with this error.",
  990. //  SEQ_ALIGN_EndMorethanBiolen
  991. "Please contact the sequence database for further help with this error.",
  992. //  SEQ_ALIGN_LenMorethanBiolen
  993. "Please contact the sequence database for further help with this error.",
  994. //  SEQ_ALIGN_SumLenStart
  995. "Please contact the sequence database for further help with this error.",
  996. //  SEQ_ALIGN_SegsDimMismatch
  997. "Please contact the sequence database for further help with this error.",
  998. //  SEQ_ALIGN_SegsNumsegMismatch
  999. "Please contact the sequence database for further help with this error.",
  1000. //  SEQ_ALIGN_SegsStartsMismatch
  1001. "Please contact the sequence database for further help with this error.",
  1002. //  SEQ_ALIGN_SegsPresentMismatch
  1003. "Please contact the sequence database for further help with this error.",
  1004. //  SEQ_ALIGN_SegsPresentStartsMismatch
  1005. "Please contact the sequence database for further help with this error.",
  1006. //  SEQ_ALIGN_SegsPresentStrandsMismatch
  1007. "Please contact the sequence database for further help with this error.",
  1008. //  SEQ_ALIGN_FastaLike
  1009. "Please contact the sequence database for further help with this error.",
  1010. //  SEQ_ALIGN_SegmentGap
  1011. "Please contact the sequence database for further help with this error.",
  1012. //  SEQ_ALIGN_SegsInvalidDim
  1013. "Please contact the sequence database for further help with this error.",
  1014. //  SEQ_ALIGN_Segtype
  1015. "Please contact the sequence database for further help with this error.",
  1016. //  SEQ_ALIGN_BlastAligns
  1017. "BLAST alignments are not desired in records submitted to the sequence database.",
  1018. /* SEQ_GRAPH */
  1019. //  SEQ_GRAPH_GraphMin
  1020. "The graph minimum value is outside of the 0-100 range.",
  1021. //  SEQ_GRAPH_GraphMax
  1022. "The graph maximum value is outside of the 0-100 range.",
  1023. //  SEQ_GRAPH_GraphBelow
  1024. "Some quality scores are below the stated graph minimum value.",
  1025. //  SEQ_GRAPH_GraphAbove
  1026. "Some quality scores are above the stated graph maximum value.",
  1027. //  SEQ_GRAPH_GraphByteLen
  1028. "The number of bytes in the quality graph does not correspond to the 
  1029. stated length of the graph.",
  1030. //  SEQ_GRAPH_GraphOutOfOrder
  1031. "The quality graphs are not packaged in order - may be due to an old 
  1032. fa2htgs bug.",
  1033. //  SEQ_GRAPH_GraphBioseqLen
  1034. "The length of the quality graph does not correspond to the length of 
  1035. the Bioseq.",
  1036. //  SEQ_GRAPH_GraphSeqLitLen
  1037. "The length of the quality graph does not correspond to the length of 
  1038. the delta Bioseq literal component.",
  1039. //  SEQ_GRAPH_GraphSeqLocLen
  1040. "The length of the quality graph does not correspond to the length of 
  1041. the delta Bioseq location component.",
  1042. //  SEQ_GRAPH_GraphStartPhase
  1043. "The quality graph does not start or stop on a sequence segment 
  1044. boundary.",
  1045. //  SEQ_GRAPH_GraphStopPhase
  1046. "The quality graph does not start or stop on a sequence segment 
  1047. boundary.",
  1048. //  SEQ_GRAPH_GraphDiffNumber
  1049. "The number quality graph does not equal the number of sequence 
  1050. segments.",
  1051. //  SEQ_GRAPH_GraphACGTScore
  1052. "Quality score values for known bases should be above 0.",
  1053. //  SEQ_GRAPH_GraphNScore
  1054. "Quality score values for unknown bases should not be above 0.",
  1055. //  SEQ_GRAPH_GraphGapScore
  1056. "Gap positions should not have quality scores above 0.",
  1057. //  SEQ_GRAPH_GraphOverlap
  1058. "Quality graphs overlap - may be due to an old fa2htgs bug.",
  1059. //  Internal_Exception
  1060. "Exception was caught while performing validation. Vaidation terminated.",
  1061. "UNKNOWN"
  1062. };
  1063. END_SCOPE(validator)
  1064. END_SCOPE(objects)
  1065. END_NCBI_SCOPE
  1066.  
  1067. /*
  1068. * ===========================================================================
  1069. *
  1070. * $Log: validator.cpp,v $
  1071. * Revision 1000.3  2004/06/01 19:47:36  gouriano
  1072. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.44
  1073. *
  1074. * Revision 1.44  2004/05/21 21:42:56  gorelenk
  1075. * Added PCH ncbi_pch.hpp
  1076. *
  1077. * Revision 1.43  2004/03/25 18:31:41  shomrat
  1078. * + SEQ_FEAT_GenesInconsistent
  1079. *
  1080. * Revision 1.42  2004/03/19 14:47:56  shomrat
  1081. * + SEQ_FEAT_PartialsInconsistent
  1082. *
  1083. * Revision 1.41  2004/03/10 21:22:35  shomrat
  1084. * + SEQ_DESCR_UnwantedCompleteFlag
  1085. *
  1086. * Revision 1.40  2004/03/01 18:38:58  shomrat
  1087. * Added alternative start codon error
  1088. *
  1089. * Revision 1.39  2004/02/25 15:52:15  shomrat
  1090. * Added CollidingLocusTags error
  1091. *
  1092. * Revision 1.38  2004/01/16 20:08:35  shomrat
  1093. * Added LocusTagProblem error
  1094. *
  1095. * Revision 1.37  2003/12/17 19:13:58  shomrat
  1096. * Added SEQ_PKG_GraphPackagingProblem
  1097. *
  1098. * Revision 1.36  2003/12/16 17:34:23  shomrat
  1099. * Added SEQ_INST_SeqLocLength
  1100. *
  1101. * Revision 1.35  2003/12/16 16:17:43  shomrat
  1102. * Added SEQ_FEAT_BadConflictFlag and SEQ_FEAT_ConflictFlagSet
  1103. *
  1104. * Revision 1.34  2003/11/14 15:55:09  shomrat
  1105. * added SEQ_INST_TpaAssemblyProblem
  1106. *
  1107. * Revision 1.33  2003/11/12 20:30:24  shomrat
  1108. * added SEQ_FEAT_MultipleCdsOnMrna
  1109. *
  1110. * Revision 1.32  2003/10/27 14:54:11  shomrat
  1111. * added SEQ_FEAT_UTRdoesNotAbutCDS
  1112. *
  1113. * Revision 1.31  2003/10/27 14:14:41  shomrat
  1114. * added SEQ_INST_SeqLitGapLength0
  1115. *
  1116. * Revision 1.30  2003/10/20 16:07:07  shomrat
  1117. * Added SEQ_FEAT_OnlyGeneXrefs
  1118. *
  1119. * Revision 1.29  2003/10/13 18:45:23  shomrat
  1120. * Added SEQ_FEAT_BadTrnaAA
  1121. *
  1122. * Revision 1.28  2003/09/03 18:24:46  shomrat
  1123. * added SEQ_DESCR_RefGeneTrackingWithoutStatus
  1124. *
  1125. * Revision 1.27  2003/08/06 15:04:30  shomrat
  1126. * Added SEQ_INST_InternalNsInSeqLit
  1127. *
  1128. * Revision 1.26  2003/07/21 21:17:45  shomrat
  1129. * Added SEQ_FEAT_MissingLocation
  1130. *
  1131. * Revision 1.25  2003/06/02 16:06:43  dicuccio
  1132. * Rearranged src/objects/ subtree.  This includes the following shifts:
  1133. *     - src/objects/asn2asn --> arc/app/asn2asn
  1134. *     - src/objects/testmedline --> src/objects/ncbimime/test
  1135. *     - src/objects/objmgr --> src/objmgr
  1136. *     - src/objects/util --> src/objmgr/util
  1137. *     - src/objects/alnmgr --> src/objtools/alnmgr
  1138. *     - src/objects/flat --> src/objtools/flat
  1139. *     - src/objects/validator --> src/objtools/validator
  1140. *     - src/objects/cddalignview --> src/objtools/cddalignview
  1141. * In addition, libseq now includes six of the objects/seq... libs, and libmmdb
  1142. * replaces the three libmmdb? libs.
  1143. *
  1144. * Revision 1.24  2003/05/28 16:22:13  shomrat
  1145. * Added MissingCDSProduct error.
  1146. *
  1147. * Revision 1.23  2003/05/14 20:33:31  shomrat
  1148. * Using CRef instead of auto_ptr
  1149. *
  1150. * Revision 1.22  2003/05/05 15:32:16  shomrat
  1151. * Added SEQ_FEAT_MissingCDSproduct
  1152. *
  1153. * Revision 1.21  2003/04/29 14:56:08  shomrat
  1154. * Changes to SeqAlign related validation
  1155. *
  1156. * Revision 1.20  2003/04/15 14:55:37  shomrat
  1157. * Implemented a progress callback mechanism
  1158. *
  1159. * Revision 1.19  2003/04/07 14:55:17  shomrat
  1160. * Added SEQ_FEAT_DifferntIdTypesInSeqLoc
  1161. *
  1162. * Revision 1.18  2003/04/04 18:36:55  shomrat
  1163. * Added Internal_Exception error; Changed limits of min/max severity
  1164. *
  1165. * Revision 1.17  2003/03/31 14:41:07  shomrat
  1166. * $id: -> $id$
  1167. *
  1168. * Revision 1.16  2003/03/28 16:27:40  shomrat
  1169. * Added comments
  1170. *
  1171. * Revision 1.15  2003/03/21 21:10:26  shomrat
  1172. * Added SEQ_DESCR_UnnecessaryBioSourceFocus
  1173. *
  1174. * Revision 1.14  2003/03/21 16:20:33  shomrat
  1175. * Added error SEQ_INST_UnexpectedIdentifierChange
  1176. *
  1177. * Revision 1.13  2003/03/20 18:54:00  shomrat
  1178. * Added CValidator implementation
  1179. *
  1180. * Revision 1.12  2003/03/10 18:12:50  shomrat
  1181. * Record statistics information for each item
  1182. *
  1183. * Revision 1.11  2003/03/06 19:33:02  shomrat
  1184. * Bug fix and code cleanup in CVAlidError_CI
  1185. *
  1186. * Revision 1.10  2003/02/24 20:20:18  shomrat
  1187. * Pass the CValidError object to the implementation class instead of the internal TErrs vector
  1188. *
  1189. * Revision 1.9  2003/02/12 17:38:58  shomrat
  1190. * Added eErr_SEQ_DESCR_Obsolete
  1191. *
  1192. * Revision 1.8  2003/02/07 21:10:55  shomrat
  1193. * Added eErr_SEQ_INST_TerminalNs
  1194. *
  1195. * Revision 1.7  2003/01/24 21:17:19  shomrat
  1196. * Added missing verbose strings
  1197. *
  1198. * Revision 1.5  2003/01/07 20:00:57  shomrat
  1199. * Member function GetMessage() changed to GetMsg() due o conflict
  1200. *
  1201. * Revision 1.4  2002/12/26 16:34:43  shomrat
  1202. * Typo
  1203. *
  1204. * Revision 1.3  2002/12/24 16:51:41  shomrat
  1205. * Changes to include directives
  1206. *
  1207. * Revision 1.2  2002/12/23 20:19:22  shomrat
  1208. * Redundan character removed
  1209. *
  1210. *
  1211. * ===========================================================================
  1212. */