def get_rotd50(fle): """ Retrieve RotD50 from file (or calculate if not present) :param fle: Instance of :class: h5py.File """ periods = fle["IMS/H/Spectra/Response/Periods"].value periods = periods[periods > 0.] if not "H" in fle["IMS"].keys(): # Horizontal spectra not in record x_acc = ["Time Series/X/Original Record/Acceleration"] y_acc = ["Time Series/Y/Original Record/Acceleration"] sa_rotd50 = ims.rotdpp(x_acc.value, x_acc.attrs["Time-step"], y_acc.value, y_acc.attrs["Time-step"], periods, 50.0)[0] else: if "RotD50" in fle["IMS/H/Spectra/Response/Acceleration"].keys(): sa_rotd50 =fle[ "IMS/H/Spectra/Response/Acceleration/RotD50/damping_05" ].value else: # Horizontal spectra not in record - calculate from time series x_acc = ["Time Series/X/Original Record/Acceleration"] y_acc = ["Time Series/Y/Original Record/Acceleration"] sa_rotd50 = ims.rotdpp(x_acc.value, x_acc.attrs["Time-step"], y_acc.value, y_acc.attrs["Time-step"], periods, 50.0)[0] return sa_rotd50
def add_data(self, percentile=50.0): """ :param float percentile: Percentile (pp) """ if len(self.periods) == 0: self.periods = self.fle["IMS/X/Spectra/Response/Periods"].value[1:] x_acc = self.fle["Time Series/X/Original Record/Acceleration"] y_acc = self.fle["Time Series/Y/Original Record/Acceleration"] rotdpp = ims.rotdpp(x_acc.value, x_acc.attrs["Time-step"], y_acc.value, y_acc.attrs["Time-step"], self.periods, percentile, self.damping)[0] dstring = "damping_" + str(int(100.0 * self.damping)).zfill(2) nvals = len(rotdpp["Pseudo-Acceleration"]) # Acceleration if not "Acceleration" in self.fle["IMS/H/Spectra/Response"]: acc_grp = self.fle["IMS/H/Spectra/Response"].create_group( "Acceleration") else: acc_grp = self.fle["IMS/H/Spectra/Response/Acceleration"] acc_cmp_grp = acc_grp.create_group("RotD" + str(int(percentile)).zfill(2)) acc_dset = acc_cmp_grp.create_dataset(dstring, (nvals,), dtype=float) acc_dset.attrs["Units"] = "cm/s/s" acc_dset[:] = rotdpp["Pseudo-Acceleration"] self._add_periods()
def add_data(self, percentile=50.0): """ :param float percentile: Percentile (pp) """ if len(self.periods) == 0: self.periods = self.fle["IMS/X/Spectra/Response/Periods"].value[1:] x_acc = self.fle["Time Series/X/Original Record/Acceleration"] y_acc = self.fle["Time Series/Y/Original Record/Acceleration"] rotdpp = ims.rotdpp(x_acc.value, x_acc.attrs["Time-step"], y_acc.value, y_acc.attrs["Time-step"], self.periods, percentile, self.damping)[0] dstring = "damping_" + str(int(100.0 * self.damping)).zfill(2) nvals = len(rotdpp["Pseudo-Acceleration"]) # Acceleration if not "Acceleration" in self.fle["IMS/H/Spectra/Response"]: acc_grp = self.fle["IMS/H/Spectra/Response"].create_group( "Acceleration") else: acc_grp = self.fle["IMS/H/Spectra/Response/Acceleration"] acc_cmp_grp = acc_grp.create_group("RotD" + str(int(percentile)).zfill(2)) acc_dset = acc_cmp_grp.create_dataset(dstring, (nvals, ), dtype=float) acc_dset.attrs["Units"] = "cm/s/s" acc_dset[:] = rotdpp["Pseudo-Acceleration"] self._add_periods()