示例#1
0
def factory(name, **kwargs):
    from ugali.utils.factory import factory

    module = 'ugali.isochrone'
    # First try this module
    #try:    return factory(name, module=__name__, **kwargs)
    #except KeyError: pass
    try:
        return factory(name, module=module + '.composite', **kwargs)
    except KeyError:
        pass
    # Then try parsec
    try:
        return factory(name, module=module + '.parsec', **kwargs)
    except KeyError:
        pass
    # Then try mesa
    try:
        return factory(name, module=module + '.mesa', **kwargs)
    except KeyError:
        pass
    # Then try desd
    try:
        return factory(name, module=module + '.dartmouth', **kwargs)
    except KeyError:
        pass

    raise KeyError('Unrecognized class: %s' % name)
示例#2
0
    def __init__(self, isochrones, **kwargs):
        super(CompositeIsochrone,self).__init__(**kwargs)

        # Remove composite kwargs so that others can be used as defaults
        kwargs.pop('type',None)
        kwargs.pop('weights',None)

        self.isochrones = []
        for i in isochrones:
            if isinstance(i,Isochrone):
                iso = i
            else:
                # Set the defaults from composite
                [i.setdefault(*kw) for kw in kwargs.items()]
                # Default isochrone type (ADW: do we want this?)
                name = i.pop('name',self.type)
                #iso = isochroneFactory(name=name,**i)
                iso = factory(name=name,**i)
            # Tie the distance modulus
            iso.params['distance_modulus'] = self.params['distance_modulus']
            self.isochrones.append(iso)
        
        if self.weights is None: self.weights = np.ones(len(self.isochrones))
        self.weights /= np.sum(np.asarray(self.weights))
        self.weights = self.weights.tolist()

        if len(self.isochrones) != len(self.weights):
            msg = 'Length of isochrone and weight arrays must be equal'
            raise ValueError(msg)
示例#3
0
    def __init__(self, isochrones, **kwargs):
        super(CompositeIsochrone,self).__init__(**kwargs)

        # Remove composite kwargs so that others can be used as defaults
        kwargs.pop('type',None)
        kwargs.pop('weights',None)

        self.isochrones = []
        for i in isochrones:
            if isinstance(i,Isochrone):
                iso = i
            else:
                # Set the defaults from composite
                [i.setdefault(*kw) for kw in kwargs.items()]
                # Default isochrone type (ADW: do we want this?)
                name = i.pop('name',self.type)
                #iso = isochroneFactory(name=name,**i)
                iso = factory(name=name,**i)
            # Tie the distance modulus
            iso.params['distance_modulus'] = self.params['distance_modulus']
            self.isochrones.append(iso)
        
        if self.weights is None: self.weights = np.ones(len(self.isochrones))
        self.weights /= np.sum(np.asarray(self.weights))
        self.weights = self.weights.tolist()

        if len(self.isochrones) != len(self.weights):
            msg = 'Length of isochrone and weight arrays must be equal'
            raise ValueError(msg)
示例#4
0
def factory(name, **kwargs):
    from ugali.utils.factory import factory

    module = 'ugali.isochrone'
    # First try this module
    #try:    return factory(name, module=__name__, **kwargs)
    #except KeyError: pass
    try:    return factory(name, module=module+'.composite', **kwargs)
    except KeyError: pass
    # Then try parsec
    try:    return factory(name, module=module+'.parsec', **kwargs)
    except KeyError: pass
    # Then try mesa
    try:    return factory(name, module=module+'.mesa', **kwargs)
    except KeyError: pass
    # Then try desd
    try:    return factory(name, module=module+'.dartmouth', **kwargs)
    except KeyError: pass

    raise KeyError('Unrecognized class: %s'%name)
示例#5
0
    def __init__(self, isochrones, **kwargs):
        super(CompositeIsochrone, self).__init__(**kwargs)

        self.isochrones = []
        for i in isochrones:
            if isinstance(i, Isochrone):
                iso = i
            else:
                name = i.pop('name', self.type)
                #iso = isochroneFactory(name=name,**i)
                iso = factory(name=name, **i)
            # Tie the distance modulus
            iso.params['distance_modulus'] = self.params['distance_modulus']
            self.isochrones.append(iso)

        if self.weights is None: self.weights = np.ones(len(self.isochrones))
        self.weights /= np.sum(np.asarray(self.weights))
        self.weights = self.weights.tolist()

        if len(self.isochrones) != len(self.weights):
            msg = 'Length of isochrone and weight arrays must be equal'
            raise ValueError(msg)
示例#6
0
def factory(name, **kwargs):
    from ugali.utils.factory import factory
    return factory(name, module=__name__, **kwargs)
示例#7
0
    parser.add_argument('-o', '--outdir', default=None)
    parser.add_argument('-n', '--njobs', default=1, type=int)
    args = parser.parse_args()

    if args.verbose:
        try:
            from http.client import HTTPConnection
        except ImportError:
            from httplib import HTTPConnection
        HTTPConnection.debuglevel = 1

    if args.outdir is None:
        args.outdir = os.path.join(args.survey.lower(), args.kind.lower())
    logger.info("Writing to output directory: %s" % args.outdir)

    p = factory(args.kind, survey=args.survey)

    abins = args.age if args.age else p.abins
    zbins = args.metallicity if args.metallicity else p.zbins
    grid = [g.flatten() for g in np.meshgrid(abins, zbins)]
    logger.info("Ages:\n  %s" % np.unique(grid[0]))
    logger.info("Metallicities:\n  %s" % np.unique(grid[1]))

    def run(args):
        try:
            p.download(*args)
        except Exception as e:
            # power through any exceptions...
            logger.warn(str(e))

    arguments = [(a, z, args.outdir, args.force) for a, z in zip(*grid)]
示例#8
0
def factory(name, **kwargs):
    from ugali.utils.factory import factory
    return factory(name, module=__name__, **kwargs)
示例#9
0
    parser.add_argument('-o','--outdir',default=None)
    parser.add_argument('-n','--njobs',default=1,type=int)
    args = parser.parse_args()

    if args.verbose:
        try:
            from http.client import HTTPConnection
        except ImportError:
            from httplib import HTTPConnection
        HTTPConnection.debuglevel = 1

    if args.outdir is None: 
        args.outdir = os.path.join(args.survey.lower(),args.kind.lower())
    logger.info("Writing to output directory: %s"%args.outdir)

    p = factory(args.kind,survey=args.survey)

    abins = args.age if args.age else p.abins
    zbins = args.metallicity if args.metallicity else p.zbins
    grid = [g.flatten() for g in np.meshgrid(abins,zbins)]
    logger.info("Ages:\n  %s"%np.unique(grid[0]))
    logger.info("Metallicities:\n  %s"%np.unique(grid[1]))

    def run(args):
        try:  
            p.download(*args)
        except Exception as e:
            # power through any exceptions...
            logger.warn(str(e))

    arguments = [(a,z,args.outdir,args.force) for a,z in zip(*grid)]