예제 #1
0
def main(args):
    src_pulsar_id = cache.get_pulsarid(args.src_psrname)
    dest_pulsar_id = cache.get_pulsarid(args.dest_psrname)
    if src_pulsar_id == dest_pulsar_id:
        raise errors.BadInputError("Cannot merge '%s' (ID: %d) into "
                                   "itself ('%s')" %
                                   (args.src_psrname, src_pulsar_id,
                                    args.dest_psrname))
    merge_pulsar(src_pulsar_id, dest_pulsar_id)
예제 #2
0
파일: load_toa.py 프로젝트: plazar/TOASTER
def main(args):
    if args.timfile is None:
        raise errors.BadInputError("An input timfile is required.")
    if args.pulsar_name is None:
        raise errors.BadInputError("The pulsar name must be provided.")
    if args.format not in READERS:
        raise errors.UnrecognizedValueError("The requested timfile format "
                                            "'%s' is not recognized. "
                                            "Available formats: '%s'." %
                                            (args.format,
                                             "', '".join(sorted(READERS.keys()))))
    # Pulsar must already included in DB
    pulsar_id = cache.get_pulsarid(args.pulsar_name)
   
    obssystem_discovery_args = {'obssystem_name': args.obssystem,
                                'obssystem_flags': args.obssystem_flags,
                                'backend_name': args.backend,
                                'backend_flags': args.backend_flags,
                                'frontend_name': args.frontend,
                                'frontend_flags': args.frontend_flags}

    if args.dry_run:
        # Parse input file
        toas = parse_timfile(args.timfile, reader=args.format,
                               **obssystem_discovery_args)
        print "%d TOAs parsed" % len(toas)
        msg = []
        for toa in toas:
            msg.append("TOA info: %s" % "\n    ".join(["%s: %s" % xx for xx in toa.iteritems()]))
        notify.print_info("\n".join(msg), 3)
    else:
        load_from_timfile(args.timfile, pulsar_id=pulsar_id,
                          reader=args.format,
                          **obssystem_discovery_args)
예제 #3
0
def main(args):
    # Build caches
    cache.get_pulsarname_cache()
    pulsar_ids = args.pulsar_ids + \
        [cache.get_pulsarid(psr) for psr in args.psrnames]
    if not pulsar_ids:
        pulsar_ids = None
    if args.output_style == 'text':
        # Get pulsar info
        psrinfo = get_pulsarinfo(pulsar_ids)
        show_pulsars(psrinfo)
    elif args.output_style == 'dump':
        dump_pulsars(pulsar_ids)
    else:
        raise errors.UnrecognizedValueError("The output-style '%s' is "
                                            "not recognized!" %
                                            args.output_style)
예제 #4
0
def main(args):
    pulsar_id = cache.get_pulsarid(args.psrname)
    ap.add_pulsar_aliases(pulsar_id, args.aliases)
예제 #5
0
파일: datafile.py 프로젝트: plazar/TOASTER
def prep_file(fn):
    """Prepare file for archiving/loading.
        
        Also, perform some checks on the file to make sure we
        won't run into problems later. Checks peformed:
            - Existence of file.
            - Read/write access for file (so it can be moved).
            - Header contains all necessary values.
            - Site/observing system is recognized.

        Input:
            fn: The name of the file to check.

        Outputs:
            params: A dictionary of info to be uploaded.
    """
    # Check existence of file
    verify_file_path(fn)

    # Check file permissions allow for writing and reading
    if not os.access(fn, os.R_OK):
        raise errors.FileError("File (%s) is not readable!" % fn)

    # Grab header info
    hdritems = ["nbin", "nchan", "npol", "nsub", "type", "telescop",
                "name", "dec", "ra", "freq", "bw", "dm", "rm",
                # The names of these header params
                # vary with psrchive version
                # "dmc", "rm_c", "pol_c",
                "scale", "state", "length",
                "rcvr", "basis", "backend", "mjd"]

    params = get_header_vals(fn, hdritems)
    params['user_id'] = cache.get_userid()

    # Normalise telescope name
    tinfo = cache.get_telescope_info(params['telescop'])
    params['telescop'] = tinfo['telescope_name']
    params.update(tinfo)

    # Check if obssystem_id, pulsar_id, user_id can be found
    obssys_key = (params['telescop'].lower(), params['rcvr'].lower(),
                  params['backend'].lower())
    obssys_ids = cache.get_obssystemid_cache()
    if obssys_key not in obssys_ids:
        t, r, b = obssys_key
        raise errors.FileError("The observing system combination in the file "
                               "%s is not registered in the database. "
                               "(Telescope: %s, Receiver: %s; Backend: %s)." %
                               (fn, t, r, b))
    else:
        params['obssystem_id'] = obssys_ids[obssys_key]
        obssysinfo = cache.get_obssysinfo(params['obssystem_id'])
        params['band_descriptor'] = obssysinfo['band_descriptor']
        params['obssys_name'] = obssysinfo['name']

    # Check if pulsar_id is found
    try:
        psr_id = cache.get_pulsarid(params['name'])
    except errors.UnrecognizedValueError:
        if config.cfg.auto_add_pulsars:
            notify.print_info("Automatically inserting pulsar with "
                              "name '%s'" % params['name'], 1)
            # Add pulsar
            psr_id = add_pulsar.add_pulsar(params['name'])
            # Force an update of the pulsarid and pulsarname caches
            cache.get_pulsarid_cache(update=True)
            cache.get_pulsarname_cache(update=True)
        else:
            raise errors.FileError("The pulsar name %s (from file %s) is not "
                                   "recognized." % (params['name'], fn))
    # Normalise pulsar name
    params['name'] = cache.get_prefname(params['name'])
    params['pulsar_id'] = psr_id

    return params