def compute_mag(name, path, bands, ext=None, z=0., distance=10., magnification=1., t_diff=1.05, is_show_info=True, is_save=False): """ Compute magnitude in bands for the 'name' model. :param name: the name of a model and data files :param path: the directory with data-files :param bands: photometric bands :param ext: extinction :param z: redshift, default 0 :param distance: distance to star in parsec, default 10 pc :param magnification: gravitational lensing magnification :param t_diff: depression between time points :param is_show_info: flag to write some information, default True :param is_save: flag to save result in file, default False :return: dictionary with keys = bands, value = star's magnitudes """ model = Stella(name, path=path) if is_show_info: print('') model.info() if not model.is_ph: model.info() print("Error: No data for: " + str(model)) return None serial_spec = model.get_ph(t_diff=t_diff) mags = serial_spec.mags_bands(bands, z=z, d=phys.pc2cm(distance), magnification=magnification) if mags is not None: fname = os.path.join(path, name + '.ubv') if is_save: mags_save(mags, bands, fname) print("Magnitudes have been saved to " + fname) if is_show_info: # print the time of maximum LC tmin = 2.0 t = mags['time'] for n in bands: t_min = t[t > tmin][mags[n][t > tmin].argmin()] print("t_max(%s) = %f" % (n, t_min)) if ext is not None: # add extinction for n in bands: mags[n] = mags[n] + ext[n] return mags
def curves_compute(name, path, bands, z=0., distance=10., magnification=1., **kwargs): """ Compute magnitude in bands for the 'name' model. :param name: the name of a model and data files :param path: the directory with data-files :param bands: photometric bands :param z: redshift, default 0 :param distance: distance to star in parsec, default 10 pc :param magnification: gravitational lensing magnification :return: dictionary with keys = bands, value = star's magnitudes """ t_beg = kwargs.get("t_beg", 0.) t_end = kwargs.get("t_end", float('inf')) is_show_info = kwargs.get("is_show_info", False) t_diff = kwargs.get("t_diff", 1.05) if len(bands) == 0: raise ValueError("You have not set any bands for model: " + str(name)) model = Stella(name, path=path) if not model.is_ph: model.info() raise ValueError("Error: No spectral data for: " + str(model)) if is_show_info: print('') model.info() serial_spec = model.get_ph(t_diff=t_diff, t_beg=t_beg, t_end=t_end) curves = serial_spec.flux_to_curves(bands, z=z, d=phys.pc2cm(distance), magnification=magnification) if is_show_info: # print the time of maximum LC tmin = 2.0 t = curves.TimeCommon for n in bands: t_min = t[t > tmin][curves[n][t > tmin].argmin()] print("t_max(%s) = %f" % (n, t_min)) return curves