Source code for abpytools.utils.data_loader

import json
from abpytools.home import Home


[docs]class DataLoader: def __init__(self, data=[], data_type='', amino_acid_property=[]): """ :param data: list with the information required to access data in json file :param data_type: str must be one of the following: 'CDR_positions', 'NumberingSchemes' or 'AminoAcidProperties' :param amino_acid_property: temporary parameter :param misc: temporary parameter """ self.amino_acid_property = amino_acid_property self.directory_name = Home().homedir self.data = data self.data_types = ['CDR_positions', 'NumberingSchemes', 'AminoAcidProperties', 'Framework_positions'] if data_type not in self.data_types: raise ValueError("{} is not a valid data type. Available data types: {}".format( data_type, ', '.join(self.data_types))) else: self.data_type = data_type # checks values when object is instantiated if self.data_type == 'CDR_positions' or self.data_type == 'NumberingSchemes' \ or self.data_type == 'Framework_positions': if len(self.data) != 2: raise ValueError("Expected 2, instead of {} values.".format(len(self.data))) if self.data[0] not in ['chothia', 'kabat', 'chothia_ext']: raise ValueError("Got {}, but only {} is available".format(self.data[0], 'chothia')) if self.data[1] not in ["light", "heavy"]: raise ValueError("Got {}, but only light and heavy are available".format(self.data[1])) else: if len(self.data) != 2: raise ValueError("Expected 2, instead of {} values.".format(len(self.data))) if self.data[0] not in ["hydrophobicity", "pI", "MolecularWeight", "ExtinctionCoefficient"]: raise ValueError("Got {}, but only {} are available".format(self.data[0], """hydrophobicity, pI, ExtinctionCoefficient and MolecularWeight""")) if self.data[1] not in ["kdHydrophobicity", "wwHydrophobicity", "hhHydrophobicity", "mfHydrophobicity", "ewHydrophobicity", "EMBOSS", "DTASetect", "Solomon", "Sillero", "Rodwell", "Wikipedia", "Lehninger", "Grimsley", "average", "monoisotopic", "Standard", "Standard_reduced"]: raise ValueError("Got {}, but only {} are available".format(self.data[1], """ kdHydrophobicity ,wwHydrophobicity, hhHydrophobicity, mfHydrophobicity, ewHydrophobicity, EMBOSS, DTASetect, Solomon, Sillero, Rodwell, Wikipedia, Lehninger, Grimsley, average, monoisotopic, Standard and Standard_reduced """ ))
[docs] def get_data(self): if self.data_type == 'CDR_positions': with open('{}/data/CDR_positions.json'.format(self.directory_name), 'r') as f: # need to access numbering scheme and chain type data = json.load(f)[self.data[0]][self.data[1]] elif self.data_type == 'Framework_positions': with open('{}/data/Framework_positions.json'.format(self.directory_name), 'r') as f: # need to access numbering scheme and chain type data = json.load(f)[self.data[0]][self.data[1]] elif self.data_type == 'NumberingSchemes': with open('{}/data/NumberingSchemes.json'.format(self.directory_name), 'r') as f: # need to access numbering scheme and chain type data = json.load(f)[self.data[0]][self.data[1]] else: with open('{}/data/AminoAcidProperties.json'.format(self.directory_name), 'r') as f: data = json.load(f)[self.data[0]][self.data[1]] return data