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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: utilities.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 21:09:42  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.13
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: utilities.hpp,v 1000.0 2003/10/29 21:09:42 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:  Mati Shomrat
  35.  *
  36.  * File Description:
  37.  *      Definition for utility classes and functions.
  38.  */
  39. #ifndef VALIDATOR___UTILITIES__HPP
  40. #define VALIDATOR___UTILITIES__HPP
  41. #include <corelib/ncbistd.hpp>
  42. #include <corelib/ncbistr.hpp>
  43. #include <objects/seqfeat/Seq_feat.hpp>
  44. #include <objects/seqfeat/SeqFeatData.hpp>
  45. #include <objects/seqset/Bioseq_set.hpp>
  46. #include <objmgr/seq_vector.hpp>
  47. #include <serial/iterator.hpp>
  48. #include <vector>
  49. #include <list>
  50. BEGIN_NCBI_SCOPE
  51. BEGIN_SCOPE(objects)
  52. class CGb_qual;
  53. class CScope;
  54. class CSeq_entry;
  55. BEGIN_SCOPE(validator)
  56. // =============================================================================
  57. //                           Enumeration of GBQual types
  58. // =============================================================================
  59. class CGbqualType
  60. {
  61. public:
  62.     enum EType {
  63.         e_Bad = 0,
  64.         e_Allele,
  65.         e_Anticodon,
  66.         e_Bound_moiety,
  67.         e_Citation,
  68.         e_Clone,
  69.         e_Codon,
  70.         e_Codon_start,
  71.         e_Cons_splice,
  72.         e_Direction,
  73.         e_EC_number,
  74.         e_Evidence,
  75.         e_Exception,
  76.         e_Frequency,
  77.         e_Function,
  78.         e_Gene,
  79.         e_Insertion_seq,
  80.         e_Label,
  81.         e_Locus_tag,
  82.         e_Map,
  83.         e_Mod_base,
  84.         e_Note,
  85.         e_Number,
  86.         e_Organism,
  87.         e_Partial,
  88.         e_PCR_conditions,
  89.         e_Phenotype,
  90.         e_Product,
  91.         e_Replace,
  92.         e_Rpt_family,
  93.         e_Rpt_type,
  94.         e_Rpt_unit,
  95.         e_Site,
  96.         e_Site_type,
  97.         e_Standard_name,
  98.         e_Transl_except,
  99.         e_Transl_table,
  100.         e_Translation,
  101.         e_Transposon,
  102.         e_Usedin
  103.     };
  104.     // Conversions to enumerated type:
  105.     static EType GetType(const string& qual);
  106.     static EType GetType(const CGb_qual& qual);
  107.     
  108.     // Conversion from enumerated to string:
  109.     static const string& GetString(EType gbqual);
  110. private:
  111.     CGbqualType(void);
  112.     DECLARE_INTERNAL_ENUM_INFO(EType);
  113. };
  114. // =============================================================================
  115. //                        Associating Features and GBQuals
  116. // =============================================================================
  117. class CFeatQualAssoc
  118. {
  119. public:
  120.     typedef vector<CGbqualType::EType> TGBQualTypeVec;
  121.     typedef map<CSeqFeatData::ESubtype, TGBQualTypeVec > TFeatQualMap;
  122.     // Check to see is a certain gbqual is legal within the context of 
  123.     // the specified feature
  124.     static bool IsLegalGbqual(CSeqFeatData::ESubtype ftype,
  125.                               CGbqualType::EType gbqual);
  126.     // Retrieve the mandatory gbquals for a specific feature type.
  127.     static const TGBQualTypeVec& GetMandatoryGbquals(CSeqFeatData::ESubtype ftype);
  128. private:
  129.     CFeatQualAssoc(void);
  130.     void PoplulateLegalGbquals(void);
  131.     void Associate(CSeqFeatData::ESubtype, CGbqualType::EType);
  132.     void PopulateMandatoryGbquals(void);
  133.     bool IsLegal(CSeqFeatData::ESubtype ftype, CGbqualType::EType gbqual);
  134.     const TGBQualTypeVec& GetMandatoryQuals(CSeqFeatData::ESubtype ftype);
  135.     
  136.     static CFeatQualAssoc* Instance(void);
  137.     static auto_ptr<CFeatQualAssoc> sm_Instance;
  138.     // list of feature and their associated gbquals
  139.     TFeatQualMap                    m_LegalGbquals;
  140.     // list of features and their mandatory gbquals
  141.     TFeatQualMap                    m_MandatoryGbquals;
  142. };
  143. // =============================================================================
  144. //                                 Country Names
  145. // =============================================================================
  146. class CCountries
  147. {
  148. public:
  149.     static bool IsValid(const string& country);
  150. private:
  151.     static const string sm_Countries[];
  152. };
  153. // =============================================================================
  154. //                                 Functions
  155. // =============================================================================
  156. bool IsClassInEntry(const CSeq_entry& se, CBioseq_set::EClass clss);
  157. bool IsDeltaOrFarSeg(const CSeq_loc& loc, CScope* scope);
  158. bool IsBlankString(const string& str);
  159. bool IsBlankStringList(const list< string >& str_list);
  160. int GetGIForSeqId(const CSeq_id& id);
  161. list< CRef< CSeq_id > > GetSeqIdsForGI(int gi);
  162. CSeqVector GetSequenceFromLoc(const CSeq_loc& loc, CScope& scope,
  163.     CBioseq_Handle::EVectorCoding coding = CBioseq_Handle::eCoding_Iupac);
  164. CSeqVector GetSequenceFromFeature(const CSeq_feat& feat, CScope& scope,
  165.     CBioseq_Handle::EVectorCoding coding = CBioseq_Handle::eCoding_Iupac,
  166.     bool product = false);
  167. inline
  168. bool IsResidue(unsigned char residue) { return residue <= 250; }
  169. END_SCOPE(validator)
  170. END_SCOPE(objects)
  171. END_NCBI_SCOPE
  172. /*
  173. * ===========================================================================
  174. *
  175. * $Log: utilities.hpp,v $
  176. * Revision 1000.0  2003/10/29 21:09:42  gouriano
  177. * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.13
  178. *
  179. * Revision 1.13  2003/10/27 14:15:51  shomrat
  180. * added utility functions for retrieving sequence under Seq-loc or Seq-feat
  181. *
  182. * Revision 1.12  2003/06/16 16:17:30  shomrat
  183. * IsResidue added as an inline function
  184. *
  185. * Revision 1.11  2003/05/28 16:20:05  shomrat
  186. * Added gbqual insertion_seq
  187. *
  188. * Revision 1.10  2003/04/15 14:48:13  shomrat
  189. * Removed AnyObj and display_object
  190. *
  191. * Revision 1.9  2003/03/31 14:38:46  shomrat
  192. * $id: -> $id$
  193. *
  194. * Revision 1.8  2003/03/28 16:25:40  shomrat
  195. * Added IsResidue
  196. *
  197. * Revision 1.7  2003/03/21 16:19:01  shomrat
  198. * Added GetGiForSeqId and GetSeqIdsForGI
  199. *
  200. * Revision 1.6  2003/02/07 21:03:20  shomrat
  201. * Added transposo to gbqual types
  202. *
  203. * Revision 1.5  2003/01/21 19:45:35  shomrat
  204. * Added IsBlankString and IsBlankStringList
  205. *
  206. * Revision 1.4  2003/01/06 16:37:24  shomrat
  207. * Add private function Associate to CFeatQualAssoc
  208. *
  209. * Revision 1.3  2003/01/02 21:52:43  shomrat
  210. * Coding style changes
  211. *
  212. * Revision 1.2  2002/12/24 16:50:32  shomrat
  213. * Removal of redundant GBQual types
  214. *
  215. * Revision 1.1  2002/12/23 20:12:42  shomrat
  216. * Initial submission after splitting former implementation
  217. *
  218. *
  219. * ===========================================================================
  220. */
  221. #endif  /* VALIDATOR___UTILITIES__HPP */