def __init__(self, total_images, nsets, job): self.total_images = total_images self.nsets = nsets if self.nsets == 1: self.train_all = self.total_images[:] else: self.parts = divide_int(len(self.total_images), self.nsets)
def __init__(self, total_images, nsets, job): self.total_images = total_images if isinstance(nsets, int): self.nsets=nsets else if isinstance(nsets, list): if if self.nsets == 1: self.train_all=self.total_images[:] else: self.parts = divide_int(len(self.total_images), self.nsets)
def __init__(self, total_images, nsets=None): self.total_images = total_images self.nsets = nsets ### in case nsets is defined if isinstance(nsets, int): if self.nsets == 1: self.train_all = self.total_images[:] else: ### defin self.parts self.parts = divide_int(len(self.total_images), self.nsets)
def __init__(self, total_images, data_type, data_mining): self.total_images = total_images self.data_type = data_type self.data_mine = data_mining self.nsets = None self.parts = None if self.data_type == 'set': self.nsets = data_mining if self.nsets == 1: self.train_all = self.total_images[:] else: ### defin self.parts self.parts = divide_int(len(self.total_images), self.nsets)
def get_val_train_images(self, n): parts = divide_int(len(self.total_images), self.nsets) print(parts, len(self.total_images)) if n == 0: v_start = 0 # v for valence set area v_stop = parts[0] else: v_start = parts[n-1] v_stop = parts[n] val_images = self.total_images[v_start:v_stop] if n == 0: tra_images = self.total_images[v_stop:parts[-2]] else: tra_images = self.total_images[:v_start] if n != self.nsets-2: tra_images.extend(self.total_images[v_stop:parts[-2]]) return tra_images, val_images
def get_val_train_images(self, ndiv, n): #self.ndiv = ndiv parts = divide_int(len(self.total_images), ndiv) print(parts, len(self.total_images)) if n == 0: v_start = 0 v_stop = parts[0] else: v_start = parts[n-1] v_stop = parts[n] val_images = self.total_images[v_start:v_stop] if n == 0: tra_images = self.total_images[v_stop:parts[-2]] else: tra_images = self.total_images[:v_start] if n != ndiv-2: tra_images.extend(self.total_images[v_stop:parts[-2]]) return tra_images, val_images
def get_test_images(self, ndiv): self.ndiv = ndiv self.parts = divide_int(len(self.total_images), self.ndiv) print(self.parts, len(self.total_images)) return self.total_images[self.parts[-2]:]
def amp_jobs(fdata, job, ndata, HL, E_conv): total_images = ase.io.read(fdata, index=':') if job == "train": if not ndata: #images = ase.io.read(fdata, index=':') images = total_images print("Start training using all the data %d" % len(total_images)) else: #images = ase.io.read(fdata, index=':ndata') images = total_images[:ndata] print("number of traing data %d/%d" % (len(images), len(total_images))) exe_train_images(images, HL, E_conv) elif job == "test": amp_pes = "amp.amp" ### get model and make title title = fdata.split(".")[0] + "\n" hl = '$\\times$'.join(str(x) for x in HL) suptitle = "\n\nAMP Model(HL={}".format(hl) + ", " suptitle += "E_rms={}):".format(E_conv) + " " suptitle += "test/train={}/{}".format(len(total_images) - ndata, ndata) exe_test_images(total_images[ndata:], amp_pes, title, suptitle) elif job == "valid-test": print("validation test") if not ndata: ndata = 5 parts = divide_int(len(total_images), ndata) print(parts, "in total {}".format(len(total_images))) for i in range(ndata - 1): img_train, img_valid = divide_train_valid_images( total_images[0:parts[-1]], parts, i) exe_train_images(img_train, HL, E_conv) amp_pes = "amp.amp" ### get model and make title title = fdata.split(".")[0] + "\n" hl = '$\\times$'.join(str(x) for x in HL) suptitle = "AMP Model(HL={}".format(hl) + ", " suptitle += "E_rms={}):".format(E_conv) + " " suptitle += "train:validation:test=1:1:1\n" exe_test_images(total_images[ndata:], amp_pes, title, suptitle) # check divided image sets: plot 2d here if False: x_draw = [] y_draw = [] for n, atoms in enumerate(img_train): pot = atoms.get_potential_energy() x_draw.append(n) y_draw.append(pot) mplot_vector_two(x_draw, y_draw, Title="Extracted Training Set %d" % i, Xtitle="serial number", Ytitle="Epot") elif job == 'md': if not ndata: atoms = ase.io.read(fdata, index='0') else: atoms = ase.io.read(fdata, index=ndata) run_md(atoms) return