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)
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)
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)
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)
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)
def factory(name, **kwargs): from ugali.utils.factory import factory return factory(name, module=__name__, **kwargs)
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)]
def factory(name, **kwargs): from ugali.utils.factory import factory return factory(name, module=__name__, **kwargs)
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)]