Data.DrData

Click here to go back to the reference.

class DrData:
""""""

    def __init__(self, pair_ls: list,
                 cell_ft: str or dict,
                 drug_ft: str or dict,
                 smiles_dict: dict = None,
                 mpg_dict: dict = None):

        if type(cell_ft) == str:
            assert cell_ft in ['EXP', 'PES', 'MUT', 'CNV']
        if type(drug_ft) == str:
            assert drug_ft in ['ECFP', 'SMILES', 'Graph', 'Image']

        self.pair_ls = pair_ls
        self.cell_ft = cell_ft
        self.drug_ft = drug_ft
        self.smiles_dict = smiles_dict
        self.mpg_dict = mpg_dict

    def __len__(self):
        return len(self.pair_ls)

    def clean(self, cell_ft_ls: list = None):
        if cell_ft_ls is None:
            cell_ft_ls = [self.cell_ft] if type(self.cell_ft) == dict else ['GDSC_{}.pkl'.format(self.cell_ft)]
        else:
            cell_ft_ls += [self.cell_ft] if type(self.cell_ft) == dict else ['GDSC_{}.pkl'.format(self.cell_ft)]
        smiles_dict = 'SMILES_dict.pkl' if self.smiles_dict is None else self.smiles_dict
        drug_dict_for_clean = self.drug_ft if type(self.drug_ft) == dict else smiles_dict
        pair_ls = self.pair_ls
        for each in cell_ft_ls:
            pair_ls = _Clean(pair_ls, each, drug_dict_for_clean)
        return DrData(pair_ls, self.cell_ft, self.drug_ft, self.smiles_dict, self.mpg_dict)

    def split(self, mode: str,
              fold: int,
              ratio: list,
              seed: int,
              save: bool = True,
              save_path: str = None):

        return _Split(self, mode, fold, ratio, seed, save, save_path)