Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
Molstar
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Michal Malý
Molstar
Commits
fc470293
Commit
fc470293
authored
6 years ago
by
David Sehnal
Browse files
Options
Downloads
Patches
Plain Diff
basic wrapper tweaks
parent
ff8c751f
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/apps/basic-wrapper/index.html
+27
-8
27 additions, 8 deletions
src/apps/basic-wrapper/index.html
src/mol-model/structure/model/properties/utils/secondary-structure.ts
+18
-18
18 additions, 18 deletions
...l/structure/model/properties/utils/secondary-structure.ts
with
45 additions
and
26 deletions
src/apps/basic-wrapper/index.html
+
27
−
8
View file @
fc470293
...
@@ -35,19 +35,39 @@
...
@@ -35,19 +35,39 @@
#controls
>
hr
{
#controls
>
hr
{
margin
:
5px
0
;
margin
:
5px
0
;
}
}
#controls
>
input
,
#controls
>
select
{
width
:
100%
;
display
:
block
;
}
</style>
</style>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"app.css"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"app.css"
/>
<script
type=
"text/javascript"
src=
"./index.js"
></script>
<script
type=
"text/javascript"
src=
"./index.js"
></script>
</head>
</head>
<body>
<body>
<div
id=
'controls'
>
<div
id=
'controls'
>
<h3>
Source
</h3>
<input
type=
'text'
id=
'url'
placeholder=
'url'
/>
<input
type=
'text'
id=
'assemblyId'
placeholder=
'assembly id'
/>
<select
id=
'format'
>
<option
value=
'cif'
selected
>
CIF
</option>
<option
value=
'pdb'
>
PDB
</option>
</select>
</div>
</div>
<div
id=
"app"
></div>
<div
id=
"app"
></div>
<script>
<script>
function
$
(
id
)
{
return
document
.
getElementById
(
id
);
}
var
pdbId
=
'
1grm
'
,
assemblyId
=
'
1
'
;
var
pdbId
=
'
1grm
'
,
assemblyId
=
'
1
'
;
var
url
=
'
https://www.ebi.ac.uk/pdbe/static/entry/
'
+
pdbId
+
'
_updated.cif
'
;
var
url
=
'
https://www.ebi.ac.uk/pdbe/static/entry/
'
+
pdbId
+
'
_updated.cif
'
;
var
format
=
'
cif
'
;
var
format
=
'
cif
'
;
$
(
'
url
'
).
value
=
url
;
$
(
'
url
'
).
onchange
=
function
(
e
)
{
url
=
e
.
target
.
value
;
}
$
(
'
assemblyId
'
).
value
=
assemblyId
;
$
(
'
assemblyId
'
).
onchange
=
function
(
e
)
{
assemblyId
=
e
.
target
.
value
;
}
$
(
'
format
'
).
value
=
format
;
$
(
'
format
'
).
onchange
=
function
(
e
)
{
format
=
e
.
target
.
value
;
}
// var url = 'https://www.ebi.ac.uk/pdbe/entry-files/pdb' + pdbId + '.ent';
// var url = 'https://www.ebi.ac.uk/pdbe/entry-files/pdb' + pdbId + '.ent';
// var format = 'pdb';
// var format = 'pdb';
...
@@ -58,9 +78,8 @@
...
@@ -58,9 +78,8 @@
BasicMolStarWrapper
.
load
({
url
:
url
,
format
:
format
,
assemblyId
:
assemblyId
});
BasicMolStarWrapper
.
load
({
url
:
url
,
format
:
format
,
assemblyId
:
assemblyId
});
BasicMolStarWrapper
.
toggleSpin
();
BasicMolStarWrapper
.
toggleSpin
();
addHeader
(
'
Source
'
);
addControl
(
'
Load Asym Unit
'
,
()
=>
BasicMolStarWrapper
.
load
({
url
:
url
,
format
:
format
}));
addControl
(
'
Load Asym Unit
'
,
()
=>
BasicMolStarWrapper
.
load
({
url
:
url
,
format
:
format
}));
addControl
(
'
Load Assembly
1
'
,
()
=>
BasicMolStarWrapper
.
load
({
url
:
url
,
format
:
format
,
assemblyId
:
assemblyId
}));
addControl
(
'
Load Assembly
'
,
()
=>
BasicMolStarWrapper
.
load
({
url
:
url
,
format
:
format
,
assemblyId
:
assemblyId
}));
addSeparator
();
addSeparator
();
...
@@ -73,7 +92,7 @@
...
@@ -73,7 +92,7 @@
// adjust this number to make the animation faster or slower
// adjust this number to make the animation faster or slower
// requires to "restart" the animation if changed
// requires to "restart" the animation if changed
BasicMolStarWrapper
.
animate
.
modelIndex
.
maxFPS
=
4
;
BasicMolStarWrapper
.
animate
.
modelIndex
.
maxFPS
=
30
;
addControl
(
'
Play To End
'
,
()
=>
BasicMolStarWrapper
.
animate
.
modelIndex
.
onceForward
());
addControl
(
'
Play To End
'
,
()
=>
BasicMolStarWrapper
.
animate
.
modelIndex
.
onceForward
());
addControl
(
'
Play To Start
'
,
()
=>
BasicMolStarWrapper
.
animate
.
modelIndex
.
onceBackward
());
addControl
(
'
Play To Start
'
,
()
=>
BasicMolStarWrapper
.
animate
.
modelIndex
.
onceBackward
());
...
@@ -87,18 +106,18 @@
...
@@ -87,18 +106,18 @@
var
btn
=
document
.
createElement
(
'
button
'
);
var
btn
=
document
.
createElement
(
'
button
'
);
btn
.
onclick
=
action
;
btn
.
onclick
=
action
;
btn
.
innerText
=
label
;
btn
.
innerText
=
label
;
document
.
getElementById
(
'
controls
'
).
appendChild
(
btn
);
$
(
'
controls
'
).
appendChild
(
btn
);
}
}
function
addSeparator
()
{
function
addSeparator
()
{
var
hr
=
document
.
createElement
(
'
hr
'
);
var
hr
=
document
.
createElement
(
'
hr
'
);
document
.
getElementById
(
'
controls
'
).
appendChild
(
hr
);
$
(
'
controls
'
).
appendChild
(
hr
);
}
}
function
addHeader
(
header
)
{
function
addHeader
(
header
)
{
var
h
=
document
.
createElement
(
'
h3
'
);
var
h
=
document
.
createElement
(
'
h3
'
);
h
.
innerText
=
header
;
h
.
innerText
=
header
;
document
.
getElementById
(
'
controls
'
).
appendChild
(
h
);
$
(
'
controls
'
).
appendChild
(
h
);
}
}
</script>
</script>
</body>
</body>
...
...
This diff is collapsed.
Click to expand it.
src/mol-model/structure/model/properties/utils/secondary-structure.ts
+
18
−
18
View file @
fc470293
...
@@ -48,7 +48,7 @@ export function computeModelDSSP(hierarchy: AtomicHierarchy, conformation: Atomi
...
@@ -48,7 +48,7 @@ export function computeModelDSSP(hierarchy: AtomicHierarchy, conformation: Atomi
for
(
let
i
=
0
,
il
=
proteinResidues
.
length
;
i
<
il
;
++
i
)
{
for
(
let
i
=
0
,
il
=
proteinResidues
.
length
;
i
<
il
;
++
i
)
{
type
[
proteinResidues
[
i
]]
=
assignment
[
i
]
type
[
proteinResidues
[
i
]]
=
assignment
[
i
]
}
}
const
secondaryStructure
:
SecondaryStructure
=
{
const
secondaryStructure
:
SecondaryStructure
=
{
type
,
type
,
key
:
[],
// TODO
key
:
[],
// TODO
...
@@ -287,7 +287,7 @@ function getDSSPAssignment(flags: Uint32Array, useOriginal = false) {
...
@@ -287,7 +287,7 @@ function getDSSPAssignment(flags: Uint32Array, useOriginal = false) {
* Q = -332 * 0.42 * 0.20
* Q = -332 * 0.42 * 0.20
*
*
* f is the dimensional factor
* f is the dimensional factor
*
*
* q1 and q2 are partial charges which are placed on the C,O
* q1 and q2 are partial charges which are placed on the C,O
* (+q1,-q1) and N,H (-q2,+q2)
* (+q1,-q1) and N,H (-q2,+q2)
*/
*/
...
@@ -306,7 +306,7 @@ function calcHbondEnergy(oPos: Vec3, cPos: Vec3, nPos: Vec3, hPos: Vec3) {
...
@@ -306,7 +306,7 @@ function calcHbondEnergy(oPos: Vec3, cPos: Vec3, nPos: Vec3, hPos: Vec3) {
const
distON
=
Vec3
.
distance
(
oPos
,
nPos
)
const
distON
=
Vec3
.
distance
(
oPos
,
nPos
)
const
e1
=
Q
/
distOH
-
Q
/
distCH
const
e1
=
Q
/
distOH
-
Q
/
distCH
const
e2
=
Q
/
distCN
-
Q
/
distON
const
e2
=
Q
/
distCN
-
Q
/
distON
return
e1
+
e2
return
e1
+
e2
}
}
...
@@ -314,7 +314,7 @@ function calcHbondEnergy(oPos: Vec3, cPos: Vec3, nPos: Vec3, hPos: Vec3) {
...
@@ -314,7 +314,7 @@ function calcHbondEnergy(oPos: Vec3, cPos: Vec3, nPos: Vec3, hPos: Vec3) {
* The basic turn pattern is a single H bond of type (i, i + n).
* The basic turn pattern is a single H bond of type (i, i + n).
* We assign an n-turn at residue i if there is an H bond from CO(i) to NH(i + n),
* We assign an n-turn at residue i if there is an H bond from CO(i) to NH(i + n),
* i.e., “n-turn(i)=: Hbond(i, i + n), n = 3, 4, 5.”
* i.e., “n-turn(i)=: Hbond(i, i + n), n = 3, 4, 5.”
*
*
* Type: T
* Type: T
*/
*/
function
assignTurns
(
ctx
:
DSSPContext
)
{
function
assignTurns
(
ctx
:
DSSPContext
)
{
...
@@ -322,7 +322,7 @@ function assignTurns(ctx: DSSPContext) {
...
@@ -322,7 +322,7 @@ function assignTurns(ctx: DSSPContext) {
const
{
chains
,
residueAtomSegments
,
chainAtomSegments
}
=
hierarchy
const
{
chains
,
residueAtomSegments
,
chainAtomSegments
}
=
hierarchy
const
{
label_asym_id
}
=
chains
const
{
label_asym_id
}
=
chains
const
turnFlag
=
[
0
,
0
,
0
,
DSSPType
.
Flag
.
T3
,
DSSPType
.
Flag
.
T4
,
DSSPType
.
Flag
.
T5
]
const
turnFlag
=
[
0
,
0
,
0
,
DSSPType
.
Flag
.
T3
,
DSSPType
.
Flag
.
T4
,
DSSPType
.
Flag
.
T5
]
for
(
let
i
=
0
,
il
=
proteinResidues
.
length
;
i
<
il
;
++
i
)
{
for
(
let
i
=
0
,
il
=
proteinResidues
.
length
;
i
<
il
;
++
i
)
{
const
rI
=
proteinResidues
[
i
]
const
rI
=
proteinResidues
[
i
]
...
@@ -347,18 +347,18 @@ function assignTurns(ctx: DSSPContext) {
...
@@ -347,18 +347,18 @@ function assignTurns(ctx: DSSPContext) {
/**
/**
* Two nonoverlapping stretches of three residues each, i - 1, i, i + 1 and j - 1, j, j + 1,
* Two nonoverlapping stretches of three residues each, i - 1, i, i + 1 and j - 1, j, j + 1,
* form either a parallel or antiparallel bridge, depending on which of
* form either a parallel or antiparallel bridge, depending on which of
* two basic patterns is matched. We assign a bridge between residues i and j
* two basic patterns is matched. We assign a bridge between residues i and j
* if there are two H bonds characteristic of P-structure; in particular,
* if there are two H bonds characteristic of P-structure; in particular,
*
*
* Parallel Bridge(i, j) =:
* Parallel Bridge(i, j) =:
* [Hbond(i - 1, j) and Hbond(j, i + 1)] or
* [Hbond(i - 1, j) and Hbond(j, i + 1)] or
* [Hbond(j - 1, i) and Hbond(i, j + 1)]
* [Hbond(j - 1, i) and Hbond(i, j + 1)]
*
*
* Antiparallel Bridge(i, j) =:
* Antiparallel Bridge(i, j) =:
* [Hbond(i, j) and Hbond(j, i)] or
* [Hbond(i, j) and Hbond(j, i)] or
* [Hbond(i - 1, j + 1) and Hbond(j - 1, i + l)]
* [Hbond(i - 1, j + 1) and Hbond(j - 1, i + l)]
*
*
* Type: B
* Type: B
*/
*/
function
assignBridges
(
ctx
:
DSSPContext
)
{
function
assignBridges
(
ctx
:
DSSPContext
)
{
...
@@ -371,7 +371,7 @@ function assignBridges(ctx: DSSPContext) {
...
@@ -371,7 +371,7 @@ function assignBridges(ctx: DSSPContext) {
for
(
let
t
=
offset
[
k
],
_t
=
offset
[
k
+
1
];
t
<
_t
;
t
++
)
{
for
(
let
t
=
offset
[
k
],
_t
=
offset
[
k
+
1
];
t
<
_t
;
t
++
)
{
const
l
=
b
[
t
]
const
l
=
b
[
t
]
if
(
k
>
l
)
continue
if
(
k
>
l
)
continue
// Parallel Bridge(i, j) =: [Hbond(i - 1, j) and Hbond(j, i + 1)]
// Parallel Bridge(i, j) =: [Hbond(i - 1, j) and Hbond(j, i + 1)]
i
=
k
+
1
// k is i - 1
i
=
k
+
1
// k is i - 1
j
=
l
j
=
l
...
@@ -411,18 +411,18 @@ function assignBridges(ctx: DSSPContext) {
...
@@ -411,18 +411,18 @@ function assignBridges(ctx: DSSPContext) {
* A minimal helix is defined by two consecutive n-turns.
* A minimal helix is defined by two consecutive n-turns.
* For example, a 4-helix, of minimal length 4 from residues i to i + 3,
* For example, a 4-helix, of minimal length 4 from residues i to i + 3,
* requires 4-turns at residues i - 1 and i,
* requires 4-turns at residues i - 1 and i,
*
*
* 3-helix(i,i + 2)=: [3-turn(i - 1) and 3-turn(i)]
* 3-helix(i,i + 2)=: [3-turn(i - 1) and 3-turn(i)]
* 4-helix(i,i + 3)=: [4-turn(i - 1) and 4-turn(i)]
* 4-helix(i,i + 3)=: [4-turn(i - 1) and 4-turn(i)]
* 5-helix(i,i + 4)=: [5-turn(i - 1) and 5-turn(i)]
* 5-helix(i,i + 4)=: [5-turn(i - 1) and 5-turn(i)]
*
*
* Type: G (n=3), H (n=4), I (n=5)
* Type: G (n=3), H (n=4), I (n=5)
*/
*/
function
assignHelices
(
ctx
:
DSSPContext
)
{
function
assignHelices
(
ctx
:
DSSPContext
)
{
const
{
proteinResidues
,
flags
}
=
ctx
const
{
proteinResidues
,
flags
}
=
ctx
const
turnFlag
=
[
0
,
0
,
0
,
DSSPType
.
Flag
.
T3
,
DSSPType
.
Flag
.
T4
,
DSSPType
.
Flag
.
T5
]
const
turnFlag
=
[
0
,
0
,
0
,
DSSPType
.
Flag
.
T3
,
DSSPType
.
Flag
.
T4
,
DSSPType
.
Flag
.
T5
]
const
helixFlag
=
[
0
,
0
,
0
,
DSSPType
.
Flag
.
G
,
DSSPType
.
Flag
.
H
,
DSSPType
.
Flag
.
I
]
const
helixFlag
=
[
0
,
0
,
0
,
DSSPType
.
Flag
.
G
,
DSSPType
.
Flag
.
H
,
DSSPType
.
Flag
.
I
]
for
(
let
i
=
1
,
il
=
proteinResidues
.
length
;
i
<
il
;
++
i
)
{
for
(
let
i
=
1
,
il
=
proteinResidues
.
length
;
i
<
il
;
++
i
)
{
const
fI
=
DSSPType
.
create
(
flags
[
i
])
const
fI
=
DSSPType
.
create
(
flags
[
i
])
...
@@ -440,7 +440,7 @@ function assignHelices(ctx: DSSPContext) {
...
@@ -440,7 +440,7 @@ function assignHelices(ctx: DSSPContext) {
/**
/**
* ladder=: set of one or more consecutive bridges of identical type
* ladder=: set of one or more consecutive bridges of identical type
*
*
* Type: E
* Type: E
*/
*/
function
assignLadders
(
ctx
:
DSSPContext
)
{
function
assignLadders
(
ctx
:
DSSPContext
)
{
...
@@ -449,7 +449,7 @@ function assignLadders(ctx: DSSPContext) {
...
@@ -449,7 +449,7 @@ function assignLadders(ctx: DSSPContext) {
/**
/**
* sheet=: set of one or more ladders connected by shared residues
* sheet=: set of one or more ladders connected by shared residues
*
*
* Type: E
* Type: E
*/
*/
function
assignSheets
(
ctx
:
DSSPContext
)
{
function
assignSheets
(
ctx
:
DSSPContext
)
{
...
@@ -458,7 +458,7 @@ function assignSheets(ctx: DSSPContext) {
...
@@ -458,7 +458,7 @@ function assignSheets(ctx: DSSPContext) {
/**
/**
* Bend(i) =: [angle ((CW - Ca(i - 2)),(C"(i + 2) - C"(i))) > 70"]
* Bend(i) =: [angle ((CW - Ca(i - 2)),(C"(i + 2) - C"(i))) > 70"]
*
*
* Type: S
* Type: S
*/
*/
function
assignBends
(
ctx
:
DSSPContext
)
{
function
assignBends
(
ctx
:
DSSPContext
)
{
...
...
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