Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
openstructure
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container registry
Model registry
Analyze
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
schwede
openstructure
Commits
7d133a23
Commit
7d133a23
authored
12 years ago
by
Bienchen
Browse files
Options
Downloads
Patches
Plain Diff
Fixed problem of large bio units in PDBize
parent
b92f44ba
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
modules/io/doc/mmcif.rst
+8
-2
8 additions, 2 deletions
modules/io/doc/mmcif.rst
modules/io/pymod/__init__.py
+31
-4
31 additions, 4 deletions
modules/io/pymod/__init__.py
with
39 additions
and
6 deletions
modules/io/doc/mmcif.rst
+
8
−
2
View file @
7d133a23
...
...
@@ -541,7 +541,7 @@ of the annotation available.
See :attr:`operations`
.. function:: PDBize(asu, seqres=None, min_polymer_size=10)
.. function:: PDBize(asu, seqres=None, min_polymer_size=10
, transformation=False
)
Returns the biological assembly (bio unit) for an entity. The new entity
created is well suited to be saved as a PDB file. Therefore the function
...
...
@@ -556,6 +556,9 @@ of the annotation available.
- ligands which resemble a polymer but have less than min_polymer_size
residues are assigned the same numeric residue number. The residues are
distinguished by insertion code.
- sometimes bio units exceed the coordinate system storable in a PDB file.
In that case, the box around the entity will be aligned to the lower
left corner of the coordinate system.
Since this function is at the moment mainly used to create biounits from
mmCIF files to be saved as PDBs, the function assumes that the
...
...
@@ -573,6 +576,9 @@ of the annotation available.
get its own chain. Everything below that number will be sorted into the
ligand chain.
:type min_polymer_size: int
:param transformation: If set, return the transformation matrix used to
move the bounding box of the bio unit to the lower left corner.
:type transformation: :class:`bool`
.. class:: MMCifInfoStructDetails
...
...
@@ -942,4 +948,4 @@ of the annotation available.
.. LocalWords: biounits biounit uniprot UNP seqs AddMMCifPDBChainTr cif asym
.. LocalWords: auth GetMMCifPDBChainTr AddPDBCMMCifhainTr GetPDBMMCifChainTr
.. LocalWords: GetRevisions AddRevision SetRevisionsDateOriginal GetSize
.. LocalWords: GetNum num GetStatus GetLastDate GetFirstRelease
.. LocalWords: GetNum num GetStatus GetLastDate GetFirstRelease
storable
This diff is collapsed.
Click to expand it.
modules/io/pymod/__init__.py
+
31
−
4
View file @
7d133a23
...
...
@@ -361,8 +361,10 @@ def LoadMMCIF(filename, restrict_chains="", fault_tolerant=None, calpha_only=Non
# arguement is the usual 'self'.
# documentation for this function was moved to mmcif.rst,
# MMCifInfoBioUnit.PDBize, since this function is not included in SPHINX.
def
_PDBize
(
biounit
,
asu
,
seqres
=
None
,
min_polymer_size
=
10
):
def
_PDBize
(
biounit
,
asu
,
seqres
=
None
,
min_polymer_size
=
10
,
transformation
=
False
):
def
_CopyAtoms
(
src_res
,
dst_res
,
edi
,
trans
=
geom
.
Mat4
()):
atom_pos_wrong
=
False
for
atom
in
src_res
.
atoms
:
tmp_pos
=
geom
.
Vec4
(
atom
.
pos
)
new_atom
=
edi
.
InsertAtom
(
dst_res
,
atom
.
name
,
geom
.
Vec3
(
trans
*
tmp_pos
),
...
...
@@ -370,6 +372,12 @@ def _PDBize(biounit, asu, seqres=None, min_polymer_size=10):
occupancy
=
atom
.
occupancy
,
b_factor
=
atom
.
b_factor
,
is_hetatm
=
atom
.
is_hetatom
)
for
p
in
range
(
0
,
3
):
if
new_atom
.
pos
[
p
]
<=
-
1000
:
atom_pos_wrong
=
True
elif
new_atom
.
pos
[
p
]
>=
10000
:
atom_pos_wrong
=
True
return
atom_pos_wrong
chain_names
=
'
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz
'
# create list of operations
...
...
@@ -409,6 +417,7 @@ def _PDBize(biounit, asu, seqres=None, min_polymer_size=10):
cur_chain_name
=
0
water_chain
=
mol
.
ChainHandle
()
ligand_chain
=
mol
.
ChainHandle
()
a_pos_wrong
=
False
for
tr
in
trans_matrices
:
# do a PDBize, add each new entity to the end product
for
chain
in
assu
.
chains
:
...
...
@@ -430,7 +439,9 @@ def _PDBize(biounit, asu, seqres=None, min_polymer_size=10):
chain
.
GetStringProp
(
"
pdb_auth_chain_name
"
))
for
res
in
chain
.
residues
:
new_res
=
edi
.
AppendResidue
(
new_chain
,
res
.
name
,
res
.
number
)
_CopyAtoms
(
res
,
new_res
,
edi
,
tr
)
a_b
=
_CopyAtoms
(
res
,
new_res
,
edi
,
tr
)
if
not
a_pos_wrong
:
a_pos_wrong
=
a_b
elif
chain
.
type
==
mol
.
CHAINTYPE_WATER
:
if
not
water_chain
.
IsValid
():
# water gets '-' as name
...
...
@@ -441,7 +452,9 @@ def _PDBize(biounit, asu, seqres=None, min_polymer_size=10):
new_res
=
edi
.
AppendResidue
(
water_chain
,
res
.
name
)
new_res
.
SetStringProp
(
'
type
'
,
mol
.
StringFromChainType
(
chain
.
type
))
new_res
.
SetStringProp
(
'
description
'
,
chain
.
description
)
_CopyAtoms
(
res
,
new_res
,
edi
,
tr
)
a_b
=
_CopyAtoms
(
res
,
new_res
,
edi
,
tr
)
if
not
a_pos_wrong
:
a_pos_wrong
=
a_b
else
:
if
not
ligand_chain
.
IsValid
():
# all ligands, put in one chain, are named '_'
...
...
@@ -463,8 +476,22 @@ def _PDBize(biounit, asu, seqres=None, min_polymer_size=10):
new_res
.
SetStringProp
(
"
pdb_auth_chain_name
"
,
chain
.
GetStringProp
(
"
pdb_auth_chain_name
"
))
ins_code
=
chr
(
ord
(
ins_code
)
+
1
)
_CopyAtoms
(
res
,
new_res
,
edi
,
tr
)
a_b
=
_CopyAtoms
(
res
,
new_res
,
edi
,
tr
)
if
not
a_pos_wrong
:
a_pos_wrong
=
a_b
move_to_origin
=
None
if
a_pos_wrong
:
print
"
IN
"
start
=
pdb_bu
.
bounds
.
min
move_to_origin
=
geom
.
Mat4
(
1
,
0
,
0
,(
-
999
-
start
[
0
]),
0
,
1
,
0
,(
-
999
-
start
[
1
]),
0
,
0
,
1
,(
-
999
-
start
[
2
]),
0
,
0
,
0
,
1
)
edi
=
pdb_bu
.
EditXCS
(
mol
.
UNBUFFERED_EDIT
)
edi
.
ApplyTransform
(
move_to_origin
)
conop
.
ConnectAll
(
pdb_bu
)
if
transformation
:
return
pdb_bu
,
move_to_origin
return
pdb_bu
MMCifInfoBioUnit
.
PDBize
=
_PDBize
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment