Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
tbgl
tools
mrdna
Commits
e09f423a
Commit
e09f423a
authored
Aug 17, 2018
by
cmaffeo2
Browse files
fixup: Updated method of adding atomistic DNA nucleotides, including orientation
parent
39425b0c
Changes
2
Hide whitespace changes
Inline
Side-by-side
CanonicalNucleotideAtoms.py
View file @
e09f423a
...
...
@@ -59,8 +59,9 @@ class Nucleotide(Group):
return
seg
.
_get_atomic_nucleotide
(
nt_idx
,
is_fwd
)
class
CanonicalNucleotideFactory
(
Group
):
# DefaultOrientation = rotationAboutAxis([0,0,1], 180)
DefaultOrientation
=
rotationAboutAxis
([
1
,
0
,
0
],
180
)
DefaultOrientation
=
rotationAboutAxis
([
0
,
0
,
1
],
180
).
dot
(
rotationAboutAxis
([
1
,
0
,
0
],
180
))
def
__init__
(
self
,
prefix
,
seq
):
self
.
sequence
=
seq
# TODO: used?
self
.
resname
=
resnames
[
seq
]
...
...
segmentmodel.py
View file @
e09f423a
...
...
@@ -408,24 +408,29 @@ class Segment(ConnectableElement, Group):
def
contour_to_orientation
(
self
,
s
):
assert
(
isinstance
(
s
,
float
)
or
isinstance
(
s
,
int
)
or
len
(
s
)
==
1
)
# TODO make vectorized version
orientation
=
None
if
self
.
quaternion_spline_params
is
None
:
axis
=
self
.
contour_to_tangent
(
s
)
axis
=
axis
/
np
.
linalg
.
norm
(
axis
)
rotAxis
=
np
.
cross
(
axis
,
np
.
array
((
0
,
0
,
1
)))
rotAxisL
=
np
.
linalg
.
norm
(
rotAxis
)
theta
=
np
.
arcsin
(
rotAxisL
)
if
rotAxisL
>
0.001
:
theta
=
np
.
arcsin
(
rotAxisL
)
orientation0
=
rotationAboutAxis
(
rotAxis
/
rotAxisL
,
theta
*
180
/
np
.
pi
,
normalizeAxis
=
False
)
else
:
orientation0
=
np
.
eye
(
3
)
if
axis
.
dot
(
np
.
array
((
0
,
0
,
1
)))
>
0
:
orientation0
=
np
.
eye
(
3
)
else
:
orientation0
=
rotationAboutAxis
(
np
.
array
((
1
,
0
,
0
)),
180
,
normalizeAxis
=
False
)
orientation
=
rotationAboutAxis
(
axis
,
self
.
twist_per_nt
*
self
.
contour_to_nt_pos
(
s
),
normalizeAxis
=
False
)
orientation
=
orientation
.
dot
(
orientation0
)
else
:
q
=
interpolate
.
splev
(
s
,
self
.
quaternion_spline_params
)
if
len
(
q
)
>
1
:
q
=
np
.
array
(
q
).
T
# TODO: is this needed?
orientation
=
quaternion_to_matrix
(
q
)
return
orientation
def
get_contour_sorted_connections_and_locations
(
self
,
type_
):
...
...
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