def __call__(self, samples=0, use_latin_hypercube=False): """ Call this object :param samples: number of samples :param use_latin_hypercube: use Latin Hypercube to sample :return: Time series object """ if use_latin_hypercube: lhs_points = lhs(self.n, samples=samples, criterion='center') if samples > 0: S = np.zeros((samples, self.n), dtype=complex) I = np.zeros((samples, self.n), dtype=complex) Y = np.zeros((samples, self.n), dtype=complex) for i in range(self.n): if self.Scdf[i] is not None: S[:, i] = self.Scdf[i].get_at(lhs_points[:, i]) else: if samples > 0: S = np.zeros((samples, self.n), dtype=complex) I = np.zeros((samples, self.n), dtype=complex) Y = np.zeros((samples, self.n), dtype=complex) for i in range(self.n): if self.Scdf[i] is not None: S[:, i] = self.Scdf[i].get_sample(samples) else: S = np.zeros(self.n, dtype=complex) I = np.zeros(self.n, dtype=complex) Y = np.zeros(self.n, dtype=complex) for i in range(self.n): if self.Scdf[i] is not None: S[i] = complex(self.Scdf[i].get_sample()[0]) time_series_input = TimeSeriesInput() time_series_input.S = S time_series_input.I = I time_series_input.Y = Y time_series_input.valid = True return time_series_input
def sample_steps(self): n = len(self.grid.time_profile) points = (np.sort(lhs(self.number_of_steps, 1)[0]) * n).astype(int) return points