def main(name=False): is_silence = False nzon = 100 t = 1 # days ext_file = '.res' try: opts, args = getopt.getopt(sys.argv[1:], "hsp:n:i:t:") except getopt.GetoptError as err: print str(err) # will print something like "option -a not recognized" usage() sys.exit(2) if not name: if len(opts) == 0: usage() sys.exit(2) for opt, arg in opts: if opt == '-i': path = ROOT_DIRECTORY name = str(arg) break for opt, arg in opts: if opt == '-n': nzon = int(arg) continue if opt == '-s': is_silence = True continue if opt == '-t': t = float(arg) continue if opt == '-p': path = os.path.expanduser(str(arg)) if not (os.path.isdir(path) and os.path.exists(path)): print "No such directory: " + path sys.exit(2) continue elif opt == '-h': usage() sys.exit(2) model = Stella(name, path=path) if not model.is_res_data: print "There are no %s in the directory: %s " % (name, path) res = model.get_res() block = res.read_at_time(time=t) print("Len(block) = %i " % len(block)) if not is_silence: plt.plot(block['M'], block['V8']) plt.show()
def compute_vel(name, path, z=0., t_beg=1., t_end=None, t_diff=1.05): model = Stella(name, path=path) if not model.is_res_data or not model.is_tt_data: if not model.is_res_data: print "There are no res-file for %s in the directory: %s " % (name, path) if not model.is_tt_data: print "There are no tt-file for %s in the directory: %s " % (name, path) return None if t_end is None: t_end = float('inf') res = model.get_res() tt = model.read_tt_data() tt = tt[tt['time'] >= t_beg] # time cut days radiuses = list() vels = list() times = list() Rph_spline = interpolate.splrep(tt['time'], tt['Rph'], s=0) for nt in range(len(tt['time'])): t = tt['time'][nt] if t > t_end: break if t < t_beg or np.abs(t / t_beg < t_diff): continue t_beg = t radius = interpolate.splev(t, Rph_spline) if np.isnan(radius): radius = np.interp(t, tt['time'], tt['Rph'], 0, 0) # One-dimensional linear interpolation. block = res.read_at_time(time=t) if block is None: break if True: vel = np.interp(radius, block['R14']*1e14, block['V8'], 0, 0) # One-dimensional linear interpolation. vels.append(vel * 1e8) else: idx = np.abs(block['R14'] - radius / 1e14).argmin() vels.append(block['V8'][idx] * 1e8) radiuses.append(radius) times.append(t * (1. + z)) # redshifted time # show results res = np.array(np.zeros(len(vels)), dtype=np.dtype({'names': ['time', 'vel', 'r'], 'formats': [np.float] * 3})) res['time'] = times res['vel'] = vels res['r'] = radiuses return res
def main(name=False): is_silence = False t = 1 # days path = os.getcwd() try: opts, args = getopt.getopt(sys.argv[1:], "hsp:i:t:") except getopt.GetoptError as err: print(str(err)) # will print something like "option -a not recognized" usage() sys.exit(2) if not name: if len(opts) == 0: usage() sys.exit(2) for opt, arg in opts: if opt == '-i': path = ROOT_DIRECTORY name = str(arg) break for opt, arg in opts: if opt == '-s': is_silence = True continue if opt == '-t': t = float(arg) continue if opt == '-p': path = os.path.expanduser(str(arg)) if not (os.path.isdir(path) and os.path.exists(path)): print("No such directory: " + path) sys.exit(2) continue elif opt == '-h': usage() sys.exit(2) model = Stella(name, path=path) if not model.is_res: print("There are no %s in the directory: %s " % (name, path)) res = model.get_res() block = res.read_at_time(time=t) print("Len(block) = %i " % len(block)) if not is_silence: plt.plot(block['M'], block['V8']) plt.show()
def main(): dir_target = './' ext_def = '.res' is_tex = False try: opts, args = getopt.getopt(sys.argv[1:], "h:f:p:") except getopt.GetoptError as err: print str(err) # will print something like "option -a not recognized" usage() sys.exit(2) if len(opts) == 0: usage() sys.exit(2) for opt, arg in opts: if opt == '-p': dir_target = os.path.expanduser(str(arg)) if not (os.path.isdir(dir_target) and os.path.exists(dir_target)): print "No such directory: " + dir_target sys.exit(2) continue if opt == '-f': if str(arg) == 'tex': is_tex = True elif opt == '-h': usage() sys.exit(2) files = [f for f in listdir(dir_target) if isfile(join(dir_target, f)) and f.endswith(ext_def)] if len(files) == 0: print "No res-files in directory: " + dir_target sys.exit(2) for f in files: # print 'Read: %s' % f name, ext = os.path.splitext(f) stella = Stella(name, path=dir_target) info = stella.get_res().Info if is_tex: info.print_tex(lend=' \hline') else: info.show()
def setUp(self): name = 'cat_R1000_M15_Ni007_E15' path = join(dirname(abspath(__file__)), 'data', 'stella') stella = Stella(name, path=path) self.res = stella.get_res()
def bad_compute_vel_res_tt(name, path, z=0., t_beg=1., t_end=None, t_diff=1.05, line_header=80): from scipy import interpolate model = Stella(name, path=path) # check data if not model.is_res: raise ValueError("There are no res-file for %s in the directory: %s " % (name, path)) if not model.is_tt: raise ValueError(("There are no tt-file for %s in the directory: %s " % (name, path))) if t_end is None: t_end = float('inf') res = model.get_res() tt = model.get_tt().load(line_header=line_header) tt = tt[tt['time'] >= t_beg] # time cut days Rph_spline = interpolate.splrep(tt['time'], tt['Rph'], s=0) radii, vels, times = [], [], [] for nt in range(len(tt['time'])): t = tt['time'][nt] if t > t_end: break if t < t_beg or np.abs(t / t_beg < t_diff): continue t_beg = t radius = interpolate.splev(t, Rph_spline) if np.isnan(radius): radius = np.interp(t, tt['time'], tt['Rph'], 0, 0) # One-dimensional linear interpolation. block = res.read_at_time(time=t) if block is None: break if True: vel = np.interp(radius, block['R14'] * 1e14, block['V8'], 0, 0) # One-dimensional linear interpolation. vels.append(vel * 1e8) else: idx = np.abs(block['R14'] - radius / 1e14).argmin() vels.append(block['V8'][idx] * 1e8) radii.append(radius) times.append(t * (1. + z)) # redshifted time # show results res = np.array(np.zeros(len(vels)), dtype=np.dtype({ 'names': ['time', 'vel', 'r'], 'formats': [np.float] * 3 })) res['time'] = times res['vel'] = vels res['r'] = radii return res
def compute_vel_res_tt(name, path, z=0., t_beg=0.1, t_end=None, line_header=80, is_info=False, is_new_std=False): if is_info: print(f'Run model: {name} in dir: {path} z= {z}') model = Stella(name, path=path) # check data if not model.is_res: raise ValueError("There are no res-file for %s in the directory: %s " % (name, path)) if not model.is_tt: raise ValueError(("There are no tt-file for %s in the directory: %s " % (name, path))) if t_end is None: t_end = float('inf') res = model.get_res() tt = model.get_tt().load(line_header=line_header) tt = tt[tt['time'] >= t_beg] # time cut days radii, vels, times = [], [], [] for i, (t, start, end) in enumerate(res.blocks()): if t < min(tt['time']) or t > max(tt['time']): if is_info: print( 'Error: nblock= {}: t_res[={:e}] not in range time_tt: {:e}, {:e}' .format(i, t, min(tt['time']), max(tt['time']))) continue r_ph = np.interp(t, tt['time'], tt['Rph']) # One-dimensional linear interpolation. block = res.read_res_block(start, end, is_new_std=is_new_std) if block is None: break if True: vel = np.interp(r_ph, block['R14'] * 1e14, block['V8'] * 1e8, 0, 0) # One-dimensional linear interpolation. if is_info: # print(' blockR14= {} blockV8= {}'.format(block['R14'], block['V8'])) print('nblock= {} [{}:{}]: t= {:e} r_ph= {:e} vel= {:e}'. format(i, start, end, t, r_ph, vel)) vels.append(vel) else: idx = np.abs(block['R14'] - r_ph / 1e14).argmin() vels.append(block['V8'][idx] * 1e8) radii.append(r_ph) times.append(t * (1. + z)) # redshifted time # show results res = np.array(np.zeros(len(vels)), dtype=np.dtype({ 'names': ['time', 'vel', 'r'], 'formats': [np.float] * 3 })) res['time'] = times res['vel'] = vels res['r'] = radii return res
def main(): dir_target = './' ext_def = '.res' mask = None fformat = 'display' try: opts, args = getopt.getopt(sys.argv[1:], "h:f:m:p:") except getopt.GetoptError as err: print(str(err)) # will print something like "option -a not recognized" usage() sys.exit(2) if len(opts) == 0: usage() sys.exit(2) for opt, arg in opts: if opt == '-p': dir_target = os.path.expanduser(str(arg)) if not (os.path.isdir(dir_target) and os.path.exists(dir_target)): print("No such directory: " + dir_target) sys.exit(2) continue if opt == '-f': frm = str(arg).strip().lower() if frm in PrintDF.methods(): fformat = frm else: print("No such format: " + frm) print("Use: %s " % PrintDF.methods()) sys.exit(2) if opt == '-m': mask = str(arg).strip() elif opt == '-h': usage() sys.exit(2) files = [ f for f in listdir(dir_target) if isfile(join(dir_target, f)) and f.endswith(ext_def) ] if len(files) == 0: print("No res-files in directory: " + dir_target) sys.exit(2) columns = ['name'] + list(StellaResInfo.Params) df = pd.DataFrame(columns=(columns)) # get info i = 1 for f in files: # print 'Read: %s' % f fname, ext = os.path.splitext(f) if mask is not None: if not fnmatch.fnmatch(fname, mask): continue stella = Stella(fname, path=dir_target) info = stella.get_res().Info df.loc[i] = [info.name] + [info.get(k) for k in StellaResInfo.Params] i += 1 # sort info df = df.sort(list(StellaResInfo.Params), ascending=False) # print info invert_op = getattr(PrintDF, fformat, None) if callable(invert_op): invert_op(df, columns)