Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
I
INTBuilder
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chloe Dequeker
INTBuilder
Commits
11b33f7d
Commit
11b33f7d
authored
Oct 20, 2016
by
Chloe Dequeker
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
comments done !
parent
472aa481
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
41 additions
and
20 deletions
+41
-20
rotation.c
src/rotation.c
+41
-20
No files found.
src/rotation.c
View file @
11b33f7d
...
...
@@ -34,17 +34,43 @@ struct pdb_values* rotate_sophie(struct pdb_values* pdb, struct pdb_values* pdbR
float
x2i
=
0
,
y2i
=
0
,
z2i
=
0
;
float
x3i
=
0
,
y3i
=
0
,
z3i
=
0
;
// cosinuses and sinuses of d_angle
/* cosinuses and sinuses of the rotation angles dalpha, dbeta and dgamma
* In this function, alpha = dalpha, beta = dbeta, gamma = dgamma
*/
float
c_a
=
cos
(
alpha
),
s_a
=
sin
(
alpha
);
float
c_b
=
cos
(
beta
),
s_b
=
sin
(
beta
);
float
c_g
=
cos
(
gamma
),
s_g
=
sin
(
gamma
);
/* The angles alpha0, beta0, gamma0 corresponds to the angles for the axis
* (origin,CA1 rotated by alpha), (origin, CA1 rotated by beta) and
* (origin, CA5 rotated by alpha then beta) respectively
*
* We name these axis :
* N : (origin,CA1 rotated by alpha)
* Z : (origin, CA5 rotated by alpha then beta)
*
* The axis N therefore has the coordinates :
* xN : c_a0
* yN : s_a0
* zN : 0
* This axis is fixed when performing the rotation beta
*
*/
float
c_a0
=
cos
(
dock_res
->
alpha
[
nConf
]),
s_a0
=
sin
(
dock_res
->
alpha
[
nConf
]);
float
c_b0
=
cos
(
dock_res
->
beta
[
nConf
]),
s_b0
=
sin
(
dock_res
->
beta
[
nConf
]);
float
xN
=
c_a0
;
float
yN
=
s_a0
;
float
zN
=
0
;
/* These values correspond to the final rotation axis obtained after rotating
* the Y axis by an angle of alpha0 then beta0*/
float
rx
=
0
,
ry
=
0
,
rz
=
0
;
/* The coordinates of the unit vector for the axis Z can be computed as such :
* xZ : -s_a0 * c_b0
* yZ : c_a0 * c_b0
* zZ : s_b0
* */
float
xZ
=
-
s_a0
*
c_b0
;
float
yZ
=
c_a0
*
c_b0
;
float
zZ
=
s_b0
;
if
(
newPDB
==
NULL
){
newPDB
=
allocate_pdb
(
pdb
->
nbRes
);
...
...
@@ -71,21 +97,14 @@ struct pdb_values* rotate_sophie(struct pdb_values* pdb, struct pdb_values* pdbR
z1i
=
zi
;
/* beta rotation of the residue */
x2i
=
(
c_a0
*
c_a0
+
(
1
.
0
-
c_a0
*
c_a0
)
*
c_b
)
*
x1i
+
c_a0
*
s_a0
*
(
1
.
0
-
c_b
)
*
y1i
+
s_a0
*
s_b
*
z1i
;
y2i
=
c_a0
*
s_a0
*
(
1
.
0
-
c_b
)
*
x1i
+
(
s_a0
*
s_a0
+
(
1
.
0
-
s_a0
*
s_a0
)
*
c_b
)
*
y1i
-
c_a0
*
s_b
*
z1i
;
z2i
=-
s_a0
*
s_b
*
x1i
+
c_a0
*
s_b
*
y1i
+
c_b
*
z1i
;
/* We compute the value for the last rotation axis
* from the angles alpha0, beta0 and gamma0
*/
rx
=
-
s_a0
*
c_b0
;
ry
=
c_a0
*
c_b0
;
rz
=
s_b0
;
x2i
=
(
xN
*
xN
+
(
1
.
0
-
xN
*
xN
)
*
c_b
)
*
x1i
+
xN
*
yN
*
(
1
.
0
-
c_b
)
*
y1i
+
yN
*
s_b
*
z1i
;
y2i
=
xN
*
yN
*
(
1
.
0
-
c_b
)
*
x1i
+
(
yN
*
yN
+
(
1
.
0
-
yN
*
yN
)
*
c_b
)
*
y1i
-
xN
*
s_b
*
z1i
;
z2i
=
-
yN
*
s_b
*
x1i
+
xN
*
s_b
*
y1i
+
c_b
*
z1i
;
// gamma rotation of the residue
x3i
=
(
rx
*
rx
+
(
1
.
0
-
rx
*
rx
)
*
c_g
)
*
x2i
+
(
rx
*
ry
*
(
1
.
0
-
c_g
)
-
rz
*
s_g
)
*
y2i
+
(
rx
*
rz
*
(
1
.
0
-
c_g
)
+
ry
*
s_g
)
*
z2i
;
y3i
=
(
rx
*
ry
*
(
1
.
0
-
c_g
)
+
rz
*
s_g
)
*
x2i
+
(
ry
*
ry
+
(
1
.
0
-
ry
*
ry
)
*
c_g
)
*
y2i
+
(
ry
*
rz
*
(
1
.
0
-
c_g
)
-
rx
*
s_g
)
*
z2i
;
z3i
=
(
rx
*
rz
*
(
1
.
0
-
c_g
)
-
ry
*
s_g
)
*
x2i
+
(
ry
*
rz
*
(
1
.
0
-
c_g
)
+
rx
*
s_g
)
*
y2i
+
(
rz
*
rz
+
(
1
.
0
-
rz
*
rz
)
*
c_g
)
*
z2i
;
x3i
=
(
xZ
*
xZ
+
(
1
.
0
-
xZ
*
xZ
)
*
c_g
)
*
x2i
+
(
xZ
*
yZ
*
(
1
.
0
-
c_g
)
-
zZ
*
s_g
)
*
y2i
+
(
xZ
*
zZ
*
(
1
.
0
-
c_g
)
+
yZ
*
s_g
)
*
z2i
;
y3i
=
(
xZ
*
yZ
*
(
1
.
0
-
c_g
)
+
zZ
*
s_g
)
*
x2i
+
(
yZ
*
yZ
+
(
1
.
0
-
yZ
*
yZ
)
*
c_g
)
*
y2i
+
(
yZ
*
zZ
*
(
1
.
0
-
c_g
)
-
xZ
*
s_g
)
*
z2i
;
z3i
=
(
xZ
*
zZ
*
(
1
.
0
-
c_g
)
-
yZ
*
s_g
)
*
x2i
+
(
yZ
*
zZ
*
(
1
.
0
-
c_g
)
+
xZ
*
s_g
)
*
y2i
+
(
zZ
*
zZ
+
(
1
.
0
-
zZ
*
zZ
)
*
c_g
)
*
z2i
;
/* Now the residue has been rotated, and we need to translate it
...
...
@@ -118,9 +137,11 @@ struct pdb_values* rotate_sophie(struct pdb_values* pdb, struct pdb_values* pdbR
void
getAnglesFromCA1andCA5_sophie
(
struct
pdb_values
*
pdb
,
float
*
alpha
,
float
*
beta
,
float
*
gamma
){
/* The goal of this function is to find the angles alpha, beta and gamma that correspond
* to the angles alpha and beta of the first CA of the protein
* We then have to rotate the fifth CA by the angle alpha, then beta in order to compute the gamma angle
/* In this function, we first need to find the initial angles alpha and beta that correspond
* to the angles alpha and beta for the first CA of the protein.
* Then, we need to apply a rotation alpha around the axis Z, then a rotation beta
* around the axis X on the fifth atom CA of the protein.
* The coordinates of the then rotated atom CA 5 will give us the initial angle gamma
*/
*
alpha
=
0
;
...
...
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