diff --git a/3dna/RotTable.py b/3dna/RotTable.py index 0f0b4b599a0581e705c63e224fc78f250ca2f8d0..eeda9e9b381eb0b45412912ccd986a2023b1bcd9 100644 --- a/3dna/RotTable.py +++ b/3dna/RotTable.py @@ -1,38 +1,44 @@ -from copy import deepcopy from json import load as json_load from os import path as os_path here = os_path.abspath(os_path.dirname(__file__)) class RotTable: - """Represents the rotation table""" + """Represents a rotation table""" # 3 first values: 3 angle values # 3 last values: SD values - __ORIGINAL_ROT_TABLE = json_load( - open(os_path.join(here, 'table.json')) - ) - - def __init__(self): - self.__Rot_Table = deepcopy(RotTable.__ORIGINAL_ROT_TABLE) + def __init__(self, filename: str = None): + if filename is None: + filename = os_path.join(here, 'table.json') + self.rot_table = json_load(open(filename)) ################### # WRITING METHODS # ################### + def setTwist(self, dinucleotide: str, value: float): + self.rot_table[dinucleotide][0] = value + + def setWedge(self, dinucleotide: str, value: float): + self.rot_table[dinucleotide][1] = value + def setDirection(self, dinucleotide: str, value: float): + self.rot_table[dinucleotide][2] = value ################### # READING METHODS # ################### + def getTwist(self, dinucleotide: str): + return self.getTable()[dinucleotide][0] - def getTwist(self, dinucleotide): - return self.__Rot_Table[dinucleotide][0] - - def getWedge(self, dinucleotide): - return self.__Rot_Table[dinucleotide][1] + def getWedge(self, dinucleotide: str): + return self.getTable()[dinucleotide][1] - def getDirection(self, dinucleotide): - return self.__Rot_Table[dinucleotide][2] + def getDirection(self, dinucleotide: str): + return self.getTable()[dinucleotide][2] + + def getTable(self): + return self.rot_table ###################