ccp4srs  Version 1.0.0
ccp4srs_atom.h
Go to the documentation of this file.
1 // $Id: ccp4srs_atom.h $
2 // =================================================================
3 //
4 // CCP4 SRS Library: Storage, Retrieval and Search support for
5 // CCP4 ligand data.
6 //
7 // Copyright (C) Eugene Krissinel 2010-2013.
8 //
9 // This library is free software: you can redistribute it and/or
10 // modify it under the terms of the GNU Lesser General Public
11 // License version 3, modified in accordance with the provisions
12 // of the license to address the requirements of UK law.
13 //
14 // You should have received a copy of the modified GNU Lesser
15 // General Public License along with this library. If not, copies
16 // may be downloaded from http://www.ccp4.ac.uk/ccp4license.php
17 //
18 // This program is distributed in the hope that it will be useful,
19 // but WITHOUT ANY WARRANTY; without even the implied warranty of
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 // GNU Lesser General Public License for more details.
22 //
23 // =================================================================
24 //
25 // 03.02.14 <-- Date of Last Modification.
26 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27 // -----------------------------------------------------------------
28 //
29 // **** Module : ccp4srs_atom <interface>
30 // ~~~~~~~~~
31 // **** Classes : ccp4srs::Atom - atom description class
32 // ~~~~~~~~~
33 //
34 // (C) E. Krissinel 2010-2014
35 //
36 // =================================================================
37 //
38 
39 #ifndef CCP4SRS_ATOM_H
40 #define CCP4SRS_ATOM_H
41 
42 #include "ccp4srs_container.h"
43 #include "memio_.h"
44 
45 #include "mmdb2/mmdb_atom.h"
46 #include "mmdb2/mmdb_mmcif_.h"
47 #include "mmdb2/mmdb_defs.h"
48 
49 namespace ccp4srs {
50 
51  DefineClass(Atom);
52 
53  class Atom {
54 
55  public:
56  Atom();
57  virtual ~Atom();
58 
59  // function for searches in containers
60  inline mmdb::cpstr id () { return atomName; }
61 
62  inline mmdb::cpstr name () { return atomName; }
63  inline mmdb::cpstr rcsb_name () { return rcsbAtomName; }
64  inline mmdb::cpstr old_name () { return oldAtomName; }
65  inline mmdb::cpstr element () { return chemElement; }
66  inline mmdb::cpstr energy_type () { return energyType; }
67  mmdb::realtype x();
68  mmdb::realtype y();
69  mmdb::realtype z();
70  inline mmdb::realtype x_rcsb_cartn() { return rcsb_cartn_x; }
71  inline mmdb::realtype y_rcsb_cartn() { return rcsb_cartn_y; }
72  inline mmdb::realtype z_rcsb_cartn() { return rcsb_cartn_z; }
73  inline mmdb::realtype x_rcsb_ideal() { return rcsb_ideal_x; }
74  inline mmdb::realtype y_rcsb_ideal() { return rcsb_ideal_y; }
75  inline mmdb::realtype z_rcsb_ideal() { return rcsb_ideal_z; }
76  inline mmdb::realtype x_ccp4_mlib () { return ccp4_mlib_x; }
77  inline mmdb::realtype y_ccp4_mlib () { return ccp4_mlib_y; }
78  inline mmdb::realtype z_ccp4_mlib () { return ccp4_mlib_z; }
79  inline mmdb::realtype charge () { return atomCharge; }
80  inline mmdb::realtype weight () { return atomWeight; }
81  inline mmdb::realtype vdw_radius () { return vdwRadius; }
82  inline mmdb::realtype vdwh_radius () { return vdwhRadius; }
83  inline mmdb::realtype ion_radius () { return ionRadius; }
84  inline int valency () { return atomValency; }
85  inline int sp () { return atomSP; }
86 
87  inline char rcsb_chirality() const { return property[0]; }
88  inline char ccp4_chirality() const { return property[1]; }
89  char chirality() const; // ccp4's; if not set then rcsb's
90  inline char leaving () const { return property[2]; }
91  inline bool isLeaving () const { return (property[2]=='Y'); }
92  inline char hb_type () const { return property[3]; }
93  inline bool ccp4_coordinates() const { return (property[4]=='Y'); }
94 
95 
96  mmdb::cpstr name_pdb ( mmdb::pstr aname ); // with significant spacing
97  mmdb::cpstr rcsb_name_pdb ( mmdb::pstr aname ); // with significant spacing
98  mmdb::cpstr old_name_pdb ( mmdb::pstr aname ); // with significant spacing
99  mmdb::cpstr element_pdb ( mmdb::pstr elem ); // with significant spacing
100 
101  void set_energy_type ( mmdb::cpstr etype );
102  void set_old_name ( mmdb::cpstr name );
103  inline void set_rcsb_chirality ( char c ) { property[0] = c; }
104  inline void set_chirality ( char c ) { property[1] = c; }
105  inline void set_hb_type ( char h ) { property[3] = h; }
106  void set_ccp4_coordinates ( bool on );
107 
108  inline void set_vdw_radius ( mmdb::realtype r ) { vdwRadius = r; }
109  inline void set_vdwh_radius ( mmdb::realtype r ) { vdwhRadius = r; }
110  inline void set_ion_radius ( mmdb::realtype r ) { ionRadius = r; }
111  inline void set_valency ( int v ) { atomValency = v; }
112  inline void set_sp ( int s ) { atomSP = s; }
113 
114  void makeAtom ( mmdb::RPAtom a );
115  mmdb::PAtom makeAtom();
116 
117  static void makeCIFTags ( mmdb::mmcif::PLoop mmCIFLoop );
118  int readFromCIF_ccp4 ( mmdb::mmcif::PLoop mmCIFLoop, int atomNo );
119  int readFromCIF_rcsb ( mmdb::mmcif::PLoop mmCIFLoop, int atomNo );
120  int readFromCIF ( mmdb::mmcif::PStruct mmCIFStruct );
121  void writeToCIF ( mmdb::mmcif::PLoop mmCIFLoop, mmdb::cpstr monID );
122 
123  void copy ( PAtom atom );
124  void merge ( PAtom atom );
125 
126  void write_mem ( PMemIO memIO, int version );
127  bool read_mem ( PMemIO memIO, int version, bool * Ok = NULL );
128 
129  protected:
130  mmdb::AtomName atomName;
131  mmdb::AtomName rcsbAtomName;
132  mmdb::AtomName oldAtomName;
133  mmdb::Element chemElement;
134  mmdb::EnergyType energyType;
135  mmdb::realtype ccp4_mlib_x ;
136  mmdb::realtype ccp4_mlib_y ;
137  mmdb::realtype ccp4_mlib_z ;
138  mmdb::realtype rcsb_cartn_x;
139  mmdb::realtype rcsb_cartn_y;
140  mmdb::realtype rcsb_cartn_z;
141  mmdb::realtype rcsb_ideal_x;
142  mmdb::realtype rcsb_ideal_y;
143  mmdb::realtype rcsb_ideal_z;
144  mmdb::realtype atomCharge;
145  mmdb::realtype atomWeight;
146  mmdb::realtype vdwRadius;
147  mmdb::realtype vdwhRadius;
148  mmdb::realtype ionRadius;
150  int atomSP;
151  char property[5];
152 
165  void Init();
166 
167  };
168 
169  extern void get_atom_from_cif ( int & index, mmdb::mmcif::PLoop loop,
170  mmdb::cpstr Tag, int row,
171  Container<Atom> & atoms,
172  int & rc );
173 
174  extern void get_atom_from_cif ( int & index, mmdb::mmcif::PStruct mmCIFStruct,
175  mmdb::cpstr Tag,
176  Container<Atom> & atoms,
177  int & rc );
178 
179  extern void add_atom_to_cif ( mmdb::mmcif::PLoop loop, int atom_no,
180  Container<Atom> & atoms );
181 
182 } // namespace ccp4srs
183 
184 
185 #endif // CCP4SRS_ATOM_H
mmdb::realtype atomCharge
coordinates
Definition: ccp4srs_atom.h:144
mmdb::realtype ccp4_mlib_x
ccp4 monomer library
Definition: ccp4srs_atom.h:135
void set_vdwh_radius(mmdb::realtype r)
Definition: ccp4srs_atom.h:109
mmdb::realtype y_rcsb_cartn()
Definition: ccp4srs_atom.h:71
DefineClass(Angle)
mmdb::realtype rcsb_cartn_y
Definition: ccp4srs_atom.h:139
bool isLeaving() const
Definition: ccp4srs_atom.h:91
mmdb::realtype vdw_radius()
Definition: ccp4srs_atom.h:81
static void makeCIFTags(mmdb::mmcif::PLoop mmCIFLoop)
Definition: ccp4srs_atom.cpp:222
bool ccp4_coordinates() const
Definition: ccp4srs_atom.h:93
char hb_type() const
Definition: ccp4srs_atom.h:92
int readFromCIF_rcsb(mmdb::mmcif::PLoop mmCIFLoop, int atomNo)
Definition: ccp4srs_atom.cpp:262
mmdb::realtype weight()
Definition: ccp4srs_atom.h:80
void set_valency(int v)
Definition: ccp4srs_atom.h:111
mmdb::realtype rcsb_cartn_x
coordinates
Definition: ccp4srs_atom.h:138
mmdb::realtype x()
Definition: ccp4srs_atom.cpp:175
char chirality() const
Definition: ccp4srs_atom.cpp:191
void set_ion_radius(mmdb::realtype r)
Definition: ccp4srs_atom.h:110
mmdb::cpstr rcsb_name_pdb(mmdb::pstr aname)
Definition: ccp4srs_atom.cpp:110
void get_atom_from_cif(int &index, mmdb::mmcif::PLoop loop, mmdb::cpstr Tag, int row, Container< Atom > &atoms, int &rc)
Definition: ccp4srs_atom.cpp:507
Definition: ccp4srs_atom.h:53
mmdb::PAtom makeAtom()
Definition: ccp4srs_atom.cpp:208
void copy(PAtom atom)
Definition: ccp4srs_atom.cpp:371
mmdb::cpstr old_name_pdb(mmdb::pstr aname)
Definition: ccp4srs_atom.cpp:127
int atomSP
sp-hybridization
Definition: ccp4srs_atom.h:150
mmdb::realtype atomWeight
atomic weight (in a.u.)
Definition: ccp4srs_atom.h:145
void set_sp(int s)
Definition: ccp4srs_atom.h:112
mmdb::cpstr energy_type()
Definition: ccp4srs_atom.h:66
mmdb::cpstr rcsb_name()
Definition: ccp4srs_atom.h:63
mmdb::realtype vdwhRadius
Van-Der-Waals radius with hydrogen.
Definition: ccp4srs_atom.h:147
void set_rcsb_chirality(char c)
Definition: ccp4srs_atom.h:103
void set_chirality(char c)
Definition: ccp4srs_atom.h:104
mmdb::realtype rcsb_ideal_z
idealised
Definition: ccp4srs_atom.h:143
void set_ccp4_coordinates(bool on)
Definition: ccp4srs_atom.cpp:170
int readFromCIF_ccp4(mmdb::mmcif::PLoop mmCIFLoop, int atomNo)
Definition: ccp4srs_atom.cpp:233
bool read_mem(PMemIO memIO, int version, bool *Ok=NULL)
Definition: ccp4srs_atom.cpp:471
void add_atom_to_cif(mmdb::mmcif::PLoop loop, int atom_no, Container< Atom > &atoms)
Definition: ccp4srs_atom.cpp:529
void set_old_name(mmdb::cpstr name)
Definition: ccp4srs_atom.cpp:166
void merge(PAtom atom)
Definition: ccp4srs_atom.cpp:404
mmdb::realtype z_rcsb_cartn()
Definition: ccp4srs_atom.h:72
int valency()
Definition: ccp4srs_atom.h:84
mmdb::Element chemElement
chemical element name
Definition: ccp4srs_atom.h:133
mmdb::realtype y_rcsb_ideal()
Definition: ccp4srs_atom.h:74
mmdb::realtype z()
Definition: ccp4srs_atom.cpp:185
mmdb::realtype z_rcsb_ideal()
Definition: ccp4srs_atom.h:75
mmdb::realtype y_ccp4_mlib()
Definition: ccp4srs_atom.h:77
void write_mem(PMemIO memIO, int version)
Definition: ccp4srs_atom.cpp:445
mmdb::cpstr old_name()
Definition: ccp4srs_atom.h:64
char leaving() const
Definition: ccp4srs_atom.h:90
mmdb::realtype rcsb_cartn_z
cartesian coordinates
Definition: ccp4srs_atom.h:140
mmdb::realtype charge()
Definition: ccp4srs_atom.h:79
mmdb::realtype x_rcsb_ideal()
Definition: ccp4srs_atom.h:73
Definition: ccp4srs_angle.cpp:42
mmdb::realtype ion_radius()
Definition: ccp4srs_atom.h:83
void writeToCIF(mmdb::mmcif::PLoop mmCIFLoop, mmdb::cpstr monID)
Definition: ccp4srs_atom.cpp:337
mmdb::cpstr element()
Definition: ccp4srs_atom.h:65
mmdb::realtype x_ccp4_mlib()
Definition: ccp4srs_atom.h:76
Definition: ccp4srs_container.h:48
int atomValency
valency
Definition: ccp4srs_atom.h:149
mmdb::AtomName atomName
atom name
Definition: ccp4srs_atom.h:130
mmdb::realtype ionRadius
ion radius
Definition: ccp4srs_atom.h:148
mmdb::realtype vdwh_radius()
Definition: ccp4srs_atom.h:82
int readFromCIF(mmdb::mmcif::PStruct mmCIFStruct)
Definition: ccp4srs_atom.cpp:300
int sp()
Definition: ccp4srs_atom.h:85
mmdb::realtype ccp4_mlib_y
Definition: ccp4srs_atom.h:136
char rcsb_chirality() const
Definition: ccp4srs_atom.h:87
mmdb::realtype z_ccp4_mlib()
Definition: ccp4srs_atom.h:78
mmdb::cpstr name_pdb(mmdb::pstr aname)
Definition: ccp4srs_atom.cpp:93
void Init()
Definition: ccp4srs_atom.cpp:54
mmdb::realtype rcsb_ideal_x
coordinates
Definition: ccp4srs_atom.h:141
mmdb::cpstr name()
Definition: ccp4srs_atom.h:62
mmdb::cpstr id()
Definition: ccp4srs_atom.h:60
char property[5]
Definition: ccp4srs_atom.h:151
void set_energy_type(mmdb::cpstr etype)
Definition: ccp4srs_atom.cpp:162
void set_hb_type(char h)
Definition: ccp4srs_atom.h:105
char ccp4_chirality() const
Definition: ccp4srs_atom.h:88
mmdb::realtype x_rcsb_cartn()
Definition: ccp4srs_atom.h:70
mmdb::cpstr element_pdb(mmdb::pstr elem)
Definition: ccp4srs_atom.cpp:144
mmdb::realtype ccp4_mlib_z
cartesian
Definition: ccp4srs_atom.h:137
mmdb::AtomName oldAtomName
old atom name
Definition: ccp4srs_atom.h:132
Atom()
Definition: ccp4srs_atom.cpp:48
mmdb::AtomName rcsbAtomName
alternative atom name
Definition: ccp4srs_atom.h:131
mmdb::realtype rcsb_ideal_y
Definition: ccp4srs_atom.h:142
mmdb::EnergyType energyType
energy type
Definition: ccp4srs_atom.h:134
void set_vdw_radius(mmdb::realtype r)
Definition: ccp4srs_atom.h:108
mmdb::realtype y()
Definition: ccp4srs_atom.cpp:180
virtual ~Atom()
Definition: ccp4srs_atom.cpp:52
mmdb::realtype vdwRadius
Van-Der-Waals radius.
Definition: ccp4srs_atom.h:146