Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
libcifpp
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open
libcifpp
Commits
1cda1486
Commit
1cda1486
authored
Apr 19, 2022
by
Maarten L. Hekkelman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More interface changes in mmcif::Structure
parent
2d2b26f7
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
25 additions
and
35 deletions
+25
-35
include/cif++/Structure.hpp
+22
-19
src/Structure.cpp
+3
-16
No files found.
include/cif++/Structure.hpp
View file @
1cda1486
...
@@ -513,7 +513,7 @@ class Branch : public std::vector<Sugar>
...
@@ -513,7 +513,7 @@ class Branch : public std::vector<Sugar>
std
::
string
name
()
const
;
std
::
string
name
()
const
;
float
weight
()
const
;
float
weight
()
const
;
std
::
string
asymID
()
const
{
return
mAsymID
;
}
std
::
string
asymID
()
const
{
return
mAsymID
;
}
Structure
&
structure
()
{
return
*
mStructure
;
}
Structure
&
structure
()
{
return
*
mStructure
;
}
const
Structure
&
structure
()
const
{
return
*
mStructure
;
}
const
Structure
&
structure
()
const
{
return
*
mStructure
;
}
...
@@ -603,17 +603,17 @@ class Structure
...
@@ -603,17 +603,17 @@ class Structure
const
Polymer
&
getPolymerByAsymID
(
const
std
::
string
&
asymID
)
const
const
Polymer
&
getPolymerByAsymID
(
const
std
::
string
&
asymID
)
const
{
{
return
const_cast
<
Structure
*>
(
this
)
->
getPolymerByAsymID
(
asymID
);
return
const_cast
<
Structure
*>
(
this
)
->
getPolymerByAsymID
(
asymID
);
}
}
const
std
::
list
<
Branch
>
&
branches
()
const
{
return
mBranches
;
}
const
std
::
list
<
Branch
>
&
branches
()
const
{
return
mBranches
;
}
std
::
list
<
Branch
>
&
branches
()
{
return
mBranches
;
}
std
::
list
<
Branch
>
&
branches
()
{
return
mBranches
;
}
Branch
&
getBranchByAsymID
(
const
std
::
string
&
asymID
);
Branch
&
getBranchByAsymID
(
const
std
::
string
&
asymID
);
const
Branch
&
getBranchByAsymID
(
const
std
::
string
&
asymID
)
const
;
const
Branch
&
getBranchByAsymID
(
const
std
::
string
&
asymID
)
const
;
const
std
::
vector
<
Residue
>
&
nonPolymers
()
const
{
return
mNonPolymers
;
}
const
std
::
vector
<
Residue
>
&
nonPolymers
()
const
{
return
mNonPolymers
;
}
Atom
getAtomByID
(
std
::
string
id
)
const
;
Atom
getAtomByID
(
std
::
string
id
)
const
;
// Atom getAtomByLocation(Point pt, float maxDistance) const;
// Atom getAtomByLocation(Point pt, float maxDistance) const;
...
@@ -626,13 +626,25 @@ class Structure
...
@@ -626,13 +626,25 @@ class Structure
/// \brief Return the atom closest to point \a p with atom type \a type in a residue of type \a res_type
/// \brief Return the atom closest to point \a p with atom type \a type in a residue of type \a res_type
Atom
getAtomByPositionAndType
(
Point
p
,
std
::
string_view
type
,
std
::
string_view
res_type
)
const
;
Atom
getAtomByPositionAndType
(
Point
p
,
std
::
string_view
type
,
std
::
string_view
res_type
)
const
;
/// \brief Get a non-poly residue for an asym with id \a asymID
Residue
&
getResidue
(
const
std
::
string
&
asymID
)
{
return
getResidue
(
asymID
,
0
,
""
);
}
/// \brief Get a non-poly residue for an asym with id \a asymID
const
Residue
&
getResidue
(
const
std
::
string
&
asymID
)
const
{
return
getResidue
(
asymID
,
0
,
""
);
}
/// \brief Get a residue for an asym with id \a asymID seq id \a seqID and authSeqID \a authSeqID
/// \brief Get a residue for an asym with id \a asymID seq id \a seqID and authSeqID \a authSeqID
Residue
&
getResidue
(
const
std
::
string
&
asymID
,
int
seqID
,
const
std
::
string
&
authSeqID
);
Residue
&
getResidue
(
const
std
::
string
&
asymID
,
int
seqID
,
const
std
::
string
&
authSeqID
);
/// \brief Get a the single residue for an asym with id \a asymID seq id \a seqID and authSeqID \a authSeqID
/// \brief Get a the single residue for an asym with id \a asymID seq id \a seqID and authSeqID \a authSeqID
const
Residue
&
getResidue
(
const
std
::
string
&
asymID
,
int
seqID
,
const
std
::
string
&
authSeqID
)
const
const
Residue
&
getResidue
(
const
std
::
string
&
asymID
,
int
seqID
,
const
std
::
string
&
authSeqID
)
const
{
{
return
const_cast
<
Structure
*>
(
this
)
->
getResidue
(
asymID
,
seqID
,
authSeqID
);
return
const_cast
<
Structure
*>
(
this
)
->
getResidue
(
asymID
,
seqID
,
authSeqID
);
}
}
/// \brief Get a residue for an asym with id \a asymID, compound id \a compID, seq id \a seqID and authSeqID \a authSeqID
/// \brief Get a residue for an asym with id \a asymID, compound id \a compID, seq id \a seqID and authSeqID \a authSeqID
...
@@ -641,16 +653,7 @@ class Structure
...
@@ -641,16 +653,7 @@ class Structure
/// \brief Get a residue for an asym with id \a asymID, compound id \a compID, seq id \a seqID and authSeqID \a authSeqID
/// \brief Get a residue for an asym with id \a asymID, compound id \a compID, seq id \a seqID and authSeqID \a authSeqID
const
Residue
&
getResidue
(
const
std
::
string
&
asymID
,
const
std
::
string
&
compID
,
int
seqID
,
const
std
::
string
&
authSeqID
)
const
const
Residue
&
getResidue
(
const
std
::
string
&
asymID
,
const
std
::
string
&
compID
,
int
seqID
,
const
std
::
string
&
authSeqID
)
const
{
{
return
const_cast
<
Structure
*>
(
this
)
->
getResidue
(
asymID
,
compID
,
seqID
,
authSeqID
);
return
const_cast
<
Structure
*>
(
this
)
->
getResidue
(
asymID
,
compID
,
seqID
,
authSeqID
);
}
/// \brief Get a the single residue for an asym with id \a asymID
Residue
&
getResidue
(
const
std
::
string
&
asymID
);
/// \brief Get a the single residue for an asym with id \a asymID
const
Residue
&
getResidue
(
const
std
::
string
&
asymID
)
const
{
return
const_cast
<
Structure
*>
(
this
)
->
getResidue
(
asymID
);
}
}
/// \brief Get a the residue for atom \a atom
/// \brief Get a the residue for atom \a atom
...
@@ -667,8 +670,8 @@ class Structure
...
@@ -667,8 +670,8 @@ class Structure
// Actions
// Actions
void
removeAtom
(
Atom
&
a
);
void
removeAtom
(
Atom
&
a
);
void
swapAtoms
(
Atom
&
a1
,
Atom
&
a2
);
// swap the labels for these atoms
void
swapAtoms
(
Atom
a1
,
Atom
a2
);
// swap the labels for these atoms
void
moveAtom
(
Atom
&
a
,
Point
p
);
// move atom to a new location
void
moveAtom
(
Atom
a
,
Point
p
);
// move atom to a new location
void
changeResidue
(
Residue
&
res
,
const
std
::
string
&
newCompound
,
void
changeResidue
(
Residue
&
res
,
const
std
::
string
&
newCompound
,
const
std
::
vector
<
std
::
tuple
<
std
::
string
,
std
::
string
>>
&
remappedAtoms
);
const
std
::
vector
<
std
::
tuple
<
std
::
string
,
std
::
string
>>
&
remappedAtoms
);
...
@@ -694,10 +697,10 @@ class Structure
...
@@ -694,10 +697,10 @@ class Structure
std
::
string
createNonpoly
(
const
std
::
string
&
entity_id
,
std
::
vector
<
std
::
vector
<
cif
::
Item
>>
&
atom_info
);
std
::
string
createNonpoly
(
const
std
::
string
&
entity_id
,
std
::
vector
<
std
::
vector
<
cif
::
Item
>>
&
atom_info
);
/// \brief Create a new (sugar) branch with one first NAG containing atoms \a nag_atoms
/// \brief Create a new (sugar) branch with one first NAG containing atoms \a nag_atoms
Branch
&
createBranch
(
std
::
vector
<
std
::
vector
<
cif
::
Item
>>
&
nag_atoms
);
Branch
&
createBranch
(
std
::
vector
<
std
::
vector
<
cif
::
Item
>>
&
nag_atoms
);
/// \brief Extend an existing (sugar) branch identified by \a asymID with one sugar containing atoms \a atoms
/// \brief Extend an existing (sugar) branch identified by \a asymID with one sugar containing atoms \a atoms
Branch
&
extendBranch
(
const
std
::
string
&
asym_id
,
std
::
vector
<
std
::
vector
<
cif
::
Item
>>
&
atoms
);
Branch
&
extendBranch
(
const
std
::
string
&
asym_id
,
std
::
vector
<
std
::
vector
<
cif
::
Item
>>
&
atoms
);
/// \brief Remove a residue, can be monomer or nonpoly
/// \brief Remove a residue, can be monomer or nonpoly
///
///
...
...
src/Structure.cpp
View file @
1cda1486
...
@@ -1607,26 +1607,13 @@ Polymer &Structure::getPolymerByAsymID(const std::string &asymID)
...
@@ -1607,26 +1607,13 @@ Polymer &Structure::getPolymerByAsymID(const std::string &asymID)
throw
std
::
runtime_error
(
"Polymer with asym id "
+
asymID
+
" not found"
);
throw
std
::
runtime_error
(
"Polymer with asym id "
+
asymID
+
" not found"
);
}
}
Residue
&
Structure
::
getResidue
(
const
std
::
string
&
asymID
)
{
for
(
auto
&
res
:
mNonPolymers
)
{
if
(
res
.
asymID
()
!=
asymID
)
continue
;
return
res
;
}
throw
std
::
out_of_range
(
"Could not find residue "
+
asymID
);
}
Residue
&
Structure
::
getResidue
(
const
std
::
string
&
asymID
,
int
seqID
,
const
std
::
string
&
authSeqID
)
Residue
&
Structure
::
getResidue
(
const
std
::
string
&
asymID
,
int
seqID
,
const
std
::
string
&
authSeqID
)
{
{
if
(
seqID
==
0
)
if
(
seqID
==
0
)
{
{
for
(
auto
&
res
:
mNonPolymers
)
for
(
auto
&
res
:
mNonPolymers
)
{
{
if
(
res
.
asymID
()
==
asymID
and
res
.
authSeqID
()
==
authSeqID
)
if
(
res
.
asymID
()
==
asymID
and
(
authSeqID
.
empty
()
or
res
.
authSeqID
()
==
authSeqID
)
)
return
res
;
return
res
;
}
}
}
}
...
@@ -1772,7 +1759,7 @@ void Structure::removeResidue(const std::string &asym_id, int seq_id)
...
@@ -1772,7 +1759,7 @@ void Structure::removeResidue(const std::string &asym_id, int seq_id)
{
{
}
}
void
Structure
::
swapAtoms
(
Atom
&
a1
,
Atom
&
a2
)
void
Structure
::
swapAtoms
(
Atom
a1
,
Atom
a2
)
{
{
cif
::
Datablock
&
db
=
datablock
();
cif
::
Datablock
&
db
=
datablock
();
auto
&
atomSites
=
db
[
"atom_site"
];
auto
&
atomSites
=
db
[
"atom_site"
];
...
@@ -1800,7 +1787,7 @@ void Structure::swapAtoms(Atom &a1, Atom &a2)
...
@@ -1800,7 +1787,7 @@ void Structure::swapAtoms(Atom &a1, Atom &a2)
l3
.
swap
(
l4
);
l3
.
swap
(
l4
);
}
}
void
Structure
::
moveAtom
(
Atom
&
a
,
Point
p
)
void
Structure
::
moveAtom
(
Atom
a
,
Point
p
)
{
{
a
.
location
(
p
);
a
.
location
(
p
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment