BALL  1.4.1
peptides.h
Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 
00005 #ifndef BALL_STRUCTURE_PEPTIDES_H
00006 #define BALL_STRUCTURE_PEPTIDES_H
00007 
00008 #ifndef BALL_COMMON_H
00009 # include <BALL/common.h>
00010 #endif
00011 
00012 #ifndef BALL_KERNEL_PROTEIN_H
00013 # include <BALL/KERNEL/protein.h>
00014 #endif
00015 
00016 #ifndef BALL_DATATYPE_OPTIONS_H
00017 # include <BALL/DATATYPE/options.h>
00018 #endif
00019 
00020 #ifndef BALL_CONCEPT_EMBEDDABLE_H
00021 # include <BALL/CONCEPT/embeddable.h>
00022 #endif
00023 
00024 namespace BALL 
00025 {
00026 
00027   namespace Peptides
00028   {
00033 
00035     typedef std::list<String> ThreeLetterAASequence;
00036 
00038     typedef String OneLetterAASequence;
00040 
00045 
00050     BALL_EXPORT char OneLetterCode(const String& aa);
00051 
00057     BALL_EXPORT String ThreeLetterCode(char aa);
00058 
00064     BALL_EXPORT bool IsOneLetterCode(char aa);
00065     
00071     BALL_EXPORT bool IsThreeLetterCode(const String& aa);
00072 
00076     BALL_EXPORT OneLetterAASequence ThreeLetterToOneLetter(const ThreeLetterAASequence& sequence);
00077   
00081     BALL_EXPORT ThreeLetterAASequence OneLetterToThreeLetter(const OneLetterAASequence& sequence);
00082 
00088     BALL_EXPORT OneLetterAASequence GetSequence(const Protein& protein);  
00089     
00095     BALL_EXPORT OneLetterAASequence GetSequence(const Chain& chain);
00096 
00102     BALL_EXPORT OneLetterAASequence GetSequence(ResidueConstIterator it);
00104    
00106 //
00108 
00150     class BALL_EXPORT NameConverter
00151       : public Embeddable
00152     {
00153       public:
00154         BALL_EMBEDDABLE(NameConverter, Embeddable)
00155 
00156         
00159         
00160         static const String VALUE_NA;
00161       
00163         struct BALL_EXPORT Option
00164         { 
00167           static const char* INIFile; 
00168           
00171           static const char* PSEUDO_ATOMS_INIFile;  
00172 
00173         };
00174 
00176         struct BALL_EXPORT Default
00177         {
00178           static const String INIFile;
00179           static const String PSEUDO_ATOMS_INIFile;
00180         };
00181     
00184         NameConverter();
00185       
00187         virtual ~NameConverter() {}
00188     
00191         void setDefaultOptions();
00192 
00198         bool supportsNamingScheme(const String& scheme_name) const;
00199 
00205         bool supportsPseudoAtomNamingScheme(const String& scheme_name) const;
00206   
00214         String convertName(const String& amino_acid, const String& old_atom_name,
00215                            const String& old_naming_scheme, const String& new_naming_scheme) const;
00216           
00226         bool matches(const String& amino_acid, const String& old_atom_name,
00227                      const String& old_naming_scheme, const String& new_atom_name,
00228                      const String& new_naming_scheme) const;
00229 
00241         std::vector<String> resolvePseudoAtoms(const String& amino_acid, const String& atom_name, 
00242                                                const String& old_naming_scheme, const String& new_naming_scheme) const;
00243 
00247 
00248         Options options;
00250 
00251       protected:  
00252         
00255         void readConversionTable_()
00256           throw (Exception::FileNotFound());
00257       
00260         void readPseudoAtomsConversionTable_()
00261           throw (Exception::FileNotFound());
00262 
00263         std::vector<String>                 conventions_;
00264         std::vector< std::vector <String> > conversion_table_;  
00265         
00266         std::vector<String>                 pseudo_conventions_;
00267         std::vector< std::vector <std::vector <String> > > pseudo_conversion_table_;
00268 
00269         //TODO: unse a StringHashMap of amino acid names to simplify the access
00270     };
00271 
00272   }  // namespace Peptides
00273 
00274 } // namespace BALL
00275 
00276 #endif // BALL_STRUCTURE_PEPTIDES_H_
00277 
00278 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines