This class documents the helix objects found in the vstrands array of a caDNAno file. It's important to note that each of these objects represents a distinct helix, but not necessarily a distinct strand; strands may span multiple helices, and each helix may contain multiple strands.
The most important members are two linked list-like data structures, one for the scaffold (scaf) and one for the staples (stap), demonstrating how scaffold and staple strands are routed through the structure. This makes it very easy to (for instance) make/break crossovers and add/remove bases, but very awkward to (for instance) trace a strand throughout the structure, or enumerate all strands in the structure.
Access properties with .name
and .name = value
.
Number
Column (X-position) of the helix
Number[]
Used to add off-lattice bases to the scaffold. Each element of scaf must have a corresponding element of loop (at the same position), indicating how many off-lattice bases should be added after this base.
String/Number
Number assigned to the helix. This number is used to refer to the helix within the scaf and stap array.
Note 1: This number also implies the directionality of the scaffold on this helix:
Note 2: This number must obey the following rule with respect to row and col:
(num % 2) = (row + col) % 2
That is, if row
and col
are either both even or both odd, then num
must be even; else it must be odd. This is due to the way that caDNAno
figures scaffold directionality, as described above.
Number
Row (Y-position) of the helix
Array[]
Same as stap, but for the scaffold strands
Number[]
Currently unknown
Number[]
Used to skip on-lattice bases in the scaffold. Each element of scaf must have a corresponding element of loop (at the same position), indicating whether the base of the scaffold should be skipped.
Array[]
Array of 4-element arrays, each representing a (possible) individual base on one of the staple strands that runs through this helix.
The elements of this array form a linked list, with each inner array encoding the position of the 5' neighbor and 3' neighbor of this base, in the following order:
[ 5' helix #, 5' base #, 3' helix #, 3' base # ]
For instance, this is helix 5
, and if base [5,6]
(e.g. the 6th base of
this helix) were connected to * base [5, 5]
and [6,4]
, then stap[6]
would be
[5,5, 6,4]
When there is no 5' neighbor (or no 3' neighbor), the respective
helix and base numbers are both listed as -1
. This means that the 5'
end of the strand is written as:
[-1,-1, 5'-most helix #, 5'-most base #]
and the 3' end is written as:
[3'-most helix #, 3'-most base #, -1, -1]
Positions where there is no base should be written as
[-1, -1, -1, -1]
Note 1: Helix numbers correspond to values of the num property; that is, helix 5 refers to the helix where num = 5, not the helix at index 5 within vstrands. Base numbers refer to indices within the stap and scaf arrays.
Note 2: Arrays are zero-indexed, so base 0 is the first base, base 1 is the second, and so on.
Number[]
Currently unknown
Mixed
Currently unknown