diff --git a/mrdna/readers/segmentmodel_from_lists.py b/mrdna/readers/segmentmodel_from_lists.py index ef184a0337ed59ed4986594f2beb21408aa0b11d..c07306c6a7d1df1263c3ed612c6720d663d3d21b 100644 --- a/mrdna/readers/segmentmodel_from_lists.py +++ b/mrdna/readers/segmentmodel_from_lists.py @@ -253,6 +253,15 @@ def model_from_basepair_stack_3prime(coordinate, basepair, stack, three_prime, basepaired / stacked / phosphodiester-bonded nucleotide. If there is no such nucleotide, the value should be -1. + By default, where there is a 3'-to-5' connection between + double-straned helices, they will be connected by an intrahelical + connection that makes the helical domain continue across the + connection, even if they do not stack in the stacking + array. Instead, a "terminal_crossover" representing a relatively + free (e.g. kinked) junction can be placed by including the index + of one of the participating bases in the optional + :explicitly_unstacked: tuple. + Args: basepair: List of each nucleotide's basepair's index stack: List containing index of the nucleotide stacked on the 3' of each nucleotide diff --git a/mrdna/readers/segmentmodel_from_oxdna.py b/mrdna/readers/segmentmodel_from_oxdna.py index e6ded48697ea9d900a879cab05cf2d7ad0307c93..d85002e9464d48b22b5b8e728cf6643d6c9421ed 100644 --- a/mrdna/readers/segmentmodel_from_oxdna.py +++ b/mrdna/readers/segmentmodel_from_oxdna.py @@ -143,7 +143,7 @@ def mrdna_model_from_oxdna(coordinate_file, topology_file,virt2nuc=None,get_nt_p orientation = [np.array(o).T.dot(_yrot) for o in zip(perp_dir,-base_dir,-normal_dir)] seq=nt_prop["seq"] bp=nt_prop["bp"] - stack=nt_prop["stack"] + stack=np.array((list(nt_prop["stack"]))) three_prime=nt_prop["threeprime"] nt_prop["orientation"]=orientation nt_prop["r"]=list(r) @@ -205,8 +205,9 @@ def mrdna_model_from_oxdna(coordinate_file, topology_file,virt2nuc=None,get_nt_p ## _debug_write_bonds() logger.info(f'mrdna_model_from_oxdna: num_bp, num_ss_nt, num_stacked: {np.sum(bp>=0)//2} {np.sum(bp<0)} {np.sum(stack >= 0)}') - - model = model_from_basepair_stack_3prime( r, bp, stack, three_prime, seq, orientation, **model_parameters ) + model = model_from_basepair_stack_3prime( r, bp, stack, three_prime, seq, orientation, + explicitly_unstacked = np.argwhere(stack == -1), + **model_parameters ) """ model.DEBUG = True