def __init__(self, d=None, position=None, radius=None, intensity=None): """Make a star instance. d: (dictionairy) Must contain position, radius and intensity and can be provided instead of giving these other arguments individually. position: (float, array-like) Coordinates of the star. radius: (float) Radius of the star. intensity: (float) Intensity of the star. """ if d is not None: try: position = np.array([ float(d["position"]["x"]), float(d["position"]["y"]), ]) except (KeyError, ValueError, TypeError): position = np.array(func.pol2cart( float(d["position"]["r"]), float(d["position"]["theta"]) / 180. * np.pi, # Assume deg. )) radius = float(d["radius"]) intensity = float(d["intensity"]) self.position = np.array(position) self.radius = radius self.intensity = intensity
def __init__(self, data=None, filename=None, dataname=None, coordsystem="cartesian", outfolder=None, unit=None, inclinations=None, radius_in=0, radius_out=np.inf, diskmass=.01, diskradius=1000., H0=1., R0=1., H_power=1., kappa=10. ): self.data_rotated = None # If the inclination is a single number, put it in a list: try: iter(inclinations) self.inclinations = inclinations except TypeError: self.inclinations = [inclinations] if dataname is None or dataname == "": self.dataname = filename.split("/")[~0] else: self.dataname = dataname print ( "Loading dataset '%s' from file '%s'..." % (self.dataname, filename) ) self.outfolder = outfolder self.unit = unit self.stars = [] self.radius_in = radius_in self.radius_out = radius_out self.diskmass = diskmass self.diskradius = diskradius self.H0 = H0 self.R0 = R0 self.H_power = H_power self.kappa = kappa # [cm^2 / g] # Between 5 and 100 according to Bouvier et al. 1999. if data is not None: self.data = data elif filename is not None: self.load(filename) if coordsystem == "cartesian": pass elif coordsystem == "polar": x, y = func.pol2cart(self.data[:, 0], self.data[:, 1]) self.data[:, 0], self.data[:, 1] = x, y else: raise KeyError("Coordinate system must be 'cartesian' or 'polar'.")