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
3a73f3a5
Commit
3a73f3a5
authored
Dec 21, 2018
by
cmaffeo2
Browse files
Updated set_spline routine to include more detail
parent
9b8b7917
Changes
1
Hide whitespace changes
Inline
Side-by-side
mrdna/segmentmodel.py
View file @
3a73f3a5
...
...
@@ -503,11 +503,11 @@ class Segment(ConnectableElement, Group):
if
about
is
None
:
## TODO: do this more efficiently
r
[
ids
,:]
=
np
.
array
([
rotation_matrix
.
dot
(
r
[
i
,:])
for
i
in
range
(
r
.
shape
[
0
])
])
r
[
ids
,:]
=
np
.
array
([
rotation_matrix
.
dot
(
r
[
i
,:])
for
i
in
ids
])
else
:
dr
=
np
.
array
(
about
)
## TODO: do this more efficiently
r
[
ids
,:]
=
np
.
array
([
rotation_matrix
.
dot
(
r
[
i
,:]
-
dr
)
+
dr
for
i
in
range
(
r
.
shape
[
0
])
])
r
[
ids
,:]
=
np
.
array
([
rotation_matrix
.
dot
(
r
[
i
,:]
-
dr
)
+
dr
for
i
in
ids
])
self
.
set_splines
(
u
,
r
)
...
...
@@ -520,10 +520,14 @@ class Segment(ConnectableElement, Group):
quats
=
[
quaternion_from_matrix
(
o
)
for
o
in
orientations
]
self
.
set_orientation_splines
(
u
,
quats
)
def
_set_splines_from_ends
(
self
):
def
_set_splines_from_ends
(
self
,
resolution
=
4
):
self
.
quaternion_spline_params
=
None
coords
=
np
.
array
([
self
.
start_position
,
self
.
end_position
])
self
.
set_splines
([
0
,
1
],
coords
)
r0
=
np
.
array
(
self
.
start_position
)[
np
.
newaxis
,:]
r1
=
np
.
array
(
self
.
end_position
)[
np
.
newaxis
,:]
u
=
np
.
linspace
(
0
,
1
,
max
(
3
,
self
.
num_nt
//
int
(
resolution
)))
s
=
u
[:,
np
.
newaxis
]
coords
=
(
1
-
s
)
*
r0
+
s
*
r1
self
.
set_splines
(
u
,
coords
)
def
clear_all
(
self
):
Group
.
clear_all
(
self
)
# TODO: use super?
...
...
@@ -1002,11 +1006,6 @@ class DoubleStrandedSegment(Segment):
# for l in (self.start5,self.start3,self.end3,self.end5):
# self.locations.append(l)
## Set up interpolation for azimuthal angles
a
=
np
.
array
([
self
.
start_position
,
self
.
end_position
]).
T
tck
,
u
=
interpolate
.
splprep
(
a
,
u
=
[
0
,
1
],
s
=
0
,
k
=
1
)
self
.
position_spline_params
=
(
tck
,
u
)
## TODO: initialize sensible spline for orientation
## Convenience methods
...
...
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