OpenStructure
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
stage
include
ost
mol
impl
chain_impl.hh
Go to the documentation of this file.
1
//------------------------------------------------------------------------------
2
// This file is part of the OpenStructure project <www.openstructure.org>
3
//
4
// Copyright (C) 2008-2011 by the OpenStructure authors
5
//
6
// This library is free software; you can redistribute it and/or modify it under
7
// the terms of the GNU Lesser General Public License as published by the Free
8
// Software Foundation; either version 3.0 of the License, or (at your option)
9
// any later version.
10
// This library is distributed in the hope that it will be useful, but WITHOUT
11
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
13
// details.
14
//
15
// You should have received a copy of the GNU Lesser General Public License
16
// along with this library; if not, write to the Free Software Foundation, Inc.,
17
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
//------------------------------------------------------------------------------
19
#ifndef OST_CHAIN_IMPL_HH
20
#define OST_CHAIN_IMPL_HH
21
22
#include <boost/enable_shared_from_this.hpp>
23
24
#include <
ost/mol/module_config.hh
>
25
#include <
ost/geom/geom.hh
>
26
27
#include <
ost/mol/residue_prop.hh
>
28
#include <
ost/mol/chain_type.hh
>
29
#include <
ost/mol/impl/chain_impl_fw.hh
>
30
#include <
ost/mol/impl/residue_impl_fw.hh
>
31
#include <
ost/mol/impl/entity_impl_fw.hh
>
32
#include <
ost/mol/entity_visitor_fw.hh
>
33
#include <
ost/mol/impl/atom_impl_fw.hh
>
34
35
#include <
ost/generic_property.hh
>
36
37
#include <
ost/mol/sec_structure.hh
>
38
39
namespace
ost {
namespace
mol {
namespace
impl {
40
42
class
ChainImpl
:
public
GenericPropContainerImpl
,
43
public
boost::enable_shared_from_this<ChainImpl>
44
{
45
public
:
46
ChainImpl
(
const
EntityImplPtr
& e,
const
String
& name);
47
48
void
SetName
(
const
String
& new_name);
49
String
GetName
()
const
;
50
54
void
SetType
(
const
ChainType
type)
55
{
56
type_ = type;
57
}
58
62
ChainType
GetType
()
const
63
{
64
return
type_;
65
}
66
68
bool
IsPolymer
()
const
69
{
70
return
type_==
CHAINTYPE_POLY
|| this->
IsPolypeptide
() ||
71
this->
IsPolynucleotide
() || this->
IsPolysaccharide
();
72
}
74
bool
IsPolysaccharide
()
const
75
{
76
return
type_==
CHAINTYPE_POLY_SAC_D
|| type_==
CHAINTYPE_POLY_SAC_L
;
77
}
79
bool
IsPolypeptide
()
const
80
{
81
return
type_==
CHAINTYPE_POLY_PEPTIDE_D
|| type_==
CHAINTYPE_POLY_PEPTIDE_L
;
82
}
84
bool
IsPolynucleotide
()
const
85
{
86
return
type_==
CHAINTYPE_POLY_DN
|| type_==
CHAINTYPE_POLY_RN
||
87
type_==
CHAINTYPE_POLY_DN_RN
;
88
}
89
93
void
SetDescription
(
const
String
desc)
94
{
95
description_ = desc;
96
}
97
101
String
GetDescription
()
const
102
{
103
return
description_;
104
}
105
108
ResidueImplPtr
AppendResidue
(
const
ResidueImplPtr
& res);
109
110
ResidueImplPtr
InsertResidueBefore
(
int
index,
const
ResNum
& n,
111
const
ResidueKey
& k);
112
ResidueImplPtr
InsertResidueAfter
(
int
index,
const
ResNum
& n,
113
const
ResidueKey
& k);
118
ResidueImplPtr
AppendResidue
(
const
ResidueKey
& k);
119
121
ResidueImplPtr
AppendResidue
(
const
ResidueKey
& k,
const
ResNum
& n);
122
123
// next residue, not necessarily in sequence
124
ResidueImplPtr
GetPrev
(
const
ResidueImplPtr
& r)
const
;
125
127
ResidueImplPtr
GetNext
(
const
ResidueImplPtr
& r)
const
;
128
129
const
ResidueImplList
&
GetResidueList
()
const
;
131
bool
InSequence
()
const
;
132
133
ResidueImplList
&
GetResidueList
() {
134
return
residue_list_;
135
}
136
137
Real
GetMass
()
const
;
138
geom::Vec3
GetCenterOfMass
()
const
;
139
geom::Vec3
GetCenterOfAtoms
()
const
;
140
142
geom::AlignedCuboid
GetBounds
()
const
;
143
144
147
ResidueImplPtr
FindResidue
(
const
ResNum
& number)
const
;
148
149
AtomImplPtr
FindAtom
(
const
ResNum
& number,
150
const
String
& atom_name)
const
;
151
153
int
GetResidueCount
()
const
;
154
156
int
GetAtomCount
()
const
;
157
159
int
GetBondCount
()
const
;
160
161
void
Apply
(
EntityVisitor
& v);
162
163
EntityImplPtr
GetEntity
()
const
;
164
165
void
DeleteResidue
(
const
ResNum
& number);
166
167
void
DeleteResidue
(
const
ResidueImplPtr
& residue);
168
169
void
DeleteAllResidues
();
170
171
void
ReorderResidues
();
172
173
void
RenumberAllResidues
(
int
start,
bool
keep_spacing);
174
175
int
GetIndex
(
const
ResidueImplPtr
& res)
const
;
176
void
AssignSecondaryStructure
(
SecStructure
ss,
177
const
ResNum
& start,
178
const
ResNum
&
end
);
179
int
GetIndexForResNum
(
const
ResNum
& number)
const
;
182
void
SetInSequence
(
int
index);
183
184
private
:
185
int
GetIndexForResNumInSequence(
const
ResNum
& number)
const
;
186
void
UpdateShifts();
187
typedef
struct
{
188
int
start;
189
int
shift;
190
}
Shift
;
191
std::list<Shift> shifts_;
192
EntityImplW
ent_;
193
String
name_;
194
ResidueImplList
residue_list_;
197
bool
in_sequence_;
198
ChainType
type_;
199
String
description_;
200
};
201
202
}}}
// ns
203
204
#endif
205
Generated on Mon Nov 5 2012 13:31:05 for OpenStructure by
1.8.1.1