Exemplo n.º 1
0
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()
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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()
Exemplo n.º 4
0
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()
Exemplo n.º 5
0
 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()
Exemplo n.º 6
0
 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()
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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
Exemplo n.º 9
0
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)