def __init__(self, mode='train', roiSize=224, balance=False, transform=None): super(SmallPatchDataset).__init__() self.roiSize = roiSize self.transform = transform self.patch_dir = os.path.expanduser("~/patch%s" % self.roiSize) self.gene_label = datautil.load_gene_label(0) all_genes = datautil.get_gene_list(0) all_genes = [gene for gene in all_genes if gene in self.gene_label] spivot = int(len(all_genes) * 0.7) epivot = int(len(all_genes) * 0.9) if mode == "train": self.genes = all_genes[:spivot] if balance: self.genes = datautil.get_balanced_gene_list(self.genes, 0) elif mode == "val": self.genes = all_genes[spivot:epivot] elif mode == "test": self.genes = all_genes[epivot:] else: raise Exception("Unknown mode in SPatchAllDataset", mode) with open("roi/roi%d.json" % self.roiSize, 'r') as f: self.roi = json.load(f) self.gene_img_pids = [(gene, img, pid) for gene in self.genes for img in self.roi[gene].keys() for pid in range(len(self.roi[gene][img]))] if mode == "train": idx = np.random.permutation(range(len(self.gene_img_pids))) self.gene_img_pids = [self.gene_img_pids[i] for i in idx]
def load_val_data(size=1, balance=False, fv='res18-128'): gene_list = datautil.get_val_gene_list(size) if balance: gene_list = datautil.get_balanced_gene_list(gene_list, size) return _load_data(gene_list, size=size, fv=fv)
def load_train_data(size=0, balance=False, fv='matlab'): gene_list = datautil.get_train_gene_list(size) if balance: gene_list = datautil.get_balanced_gene_list(gene_list, size) return _load_data(gene_list, size=size)