1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
# Copyright 2004-2009 Nanorex, Inc. See LICENSE file for details.
"""
DnaDuplex.py -- DNA duplex generator helper classes, based on empirical data.
@author: Mark Sims
@version: $Id$
@copyright: 2004-2009 Nanorex, Inc. See LICENSE file for details.
History:
Mark 2007-10-18:
- Created. Major rewrite of DnaGenHelper.py.
"""
import foundation.env as env
import os
from math import sin, cos, pi
from utilities.debug import print_compact_traceback, print_compact_stack
from platform_dependent.PlatformDependent import find_plugin_dir
from files.mmp.files_mmp import readmmp
from geometry.VQT import Q, V, angleBetween, cross, vlen
from utilities.Log import orangemsg
from utilities.exception_classes import PluginBug
from utilities.constants import gensym
from utilities.prefs_constants import dnaDefaultStrand1Color_prefs_key
from utilities.prefs_constants import dnaDefaultStrand2Color_prefs_key
from utilities.prefs_constants import dnaDefaultSegmentColor_prefs_key
from dna.model.Dna_Constants import getDuplexBasesPerTurn
##from dna.updater.dna_updater_prefs import pref_dna_updater_convert_to_PAM3plus5
from simulation.sim_commandruns import adjustSinglet
from model.elements import PeriodicTable
from model.Line import Line
from model.chem import Atom_prekill_prep
Element_Ae3 = PeriodicTable.getElement('Ae3')
from dna.model.Dna_Constants import basesDict, dnaDict
from dna.model.dna_model_constants import LADDER_END0
basepath_ok, basepath = find_plugin_dir("DNA")
if not basepath_ok:
env.history.message(orangemsg("The cad/plugins/DNA directory is missing."))
RIGHT_HANDED = -1
LEFT_HANDED = 1
from geometry.VQT import V, Q, norm, cross
from geometry.VQT import vlen
from Numeric import dot
from utilities.debug import print_compact_stack
from model.bonds import bond_at_singlets
from dna.generators.Z_Dna_Generator import Z_Dna_Generator
class Z_Dna_Atomistic_Generator(Z_Dna_Generator):
"""
Provides an atomistic model of the Z form of DNA.
@attention: This class will never be implemented.
"""
model = "PAM5"
def _strandAinfo(self, baseLetter, index):
"""
Returns parameters needed to add a base to strand A.
@param baseLetter: The base letter.
@type baseLetter: str
@param index: Base-pair index.
@type index: int
"""
thetaOffset = 0.0
basename = basesDict[baseLetter]['Name']
if (index & 1) != 0:
# Index is odd.
basename += "-outer"
zoffset = 2.045
else:
# Index is even.
basename += '-inner'
zoffset = 0.0
basefile = self._baseFileName(basename)
return (basefile, zoffset, thetaOffset)
def _strandBinfo(self, baseLetter, index):
"""
Returns parameters needed to add a base to strand B.
@param baseLetter: The base letter.
@type baseLetter: str
@param index: Base-pair index.
@type index: int
"""
thetaOffset = 0.5 * pi
basename = basesDict[baseLetter]['Name']
if (index & 1) != 0:
basename += '-inner'
zoffset = -0.055
else:
basename += "-outer"
zoffset = -2.1
basefile = self._baseFileName(basename)
return (basefile, zoffset, thetaOffset)
|