예제 #1
0
파일: Star.py 프로젝트: PaulMag/cirbindis
    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
예제 #2
0
    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'.")