Exemple #1
0
    def __init__(self, system, like='chi2_lnlike'):

        super(OFTI, self).__init__(system, like=like)

        self.priors = self.system.sys_priors
        self.tbl = self.system.data_table
        self.radec_idx = self.system.radec[1]
        self.seppa_idx = self.system.seppa[1]

        # these are of type astropy.table.column
        self.sep_observed = self.tbl[:]['quant1']
        self.pa_observed = self.tbl[:]['quant2']
        self.sep_err = self.tbl[:]['quant1_err']
        self.pa_err = self.tbl[:]['quant2_err']

        # convert RA/Dec rows to sep/PA
        for i in self.radec_idx:
            self.sep_observed[i], self.pa_observed[i] = radec2seppa(
                self.sep_observed[i], self.pa_observed[i])
            self.sep_err[i], self.pa_err[i] = radec2seppa(
                self.sep_err[i], self.pa_err[i])

        self.epochs = np.array(self.tbl['epoch'])

        # choose scale-and-rotate epoch
        self.epoch_idx = np.argmin(self.sep_err)  # epoch with smallest error

        # create an empty results object
        self.results = orbitize.results.Results(
            sampler_name=self.__class__.__name__, post=None, lnlike=None)
Exemple #2
0
def test_radec2seppa():

    ras = np.array([-1, -1, 1, 1])
    decs = np.array([-1, 1, -1, 1])

    pas_expected = np.array([225., 315., 135., 45.])
    pas_expected_180mod = np.array([225., 315., 495., 405.])
    seps_expected = np.ones(4) * np.sqrt(2)

    sep_nomod, pa_nomod = system.radec2seppa(ras, decs)
    sep_180mod, pa_180mod = system.radec2seppa(ras, decs, mod180=True)

    assert sep_nomod == pytest.approx(seps_expected, abs=1e-3)
    assert sep_180mod == pytest.approx(seps_expected, abs=1e-3)
    assert pa_nomod == pytest.approx(pas_expected, abs=1e-3)
    assert pa_180mod == pytest.approx(pas_expected_180mod, abs=1e-3)
Exemple #3
0
def test_radec2seppa():
    """
    Basic test for convenience function converting RA/DEC to SEP/PA
    """
    ra = np.array([-1., 0., -1., 1.])
    dec = np.array([0., -1., -1., 1.])
    sep, pa = system.radec2seppa(ra, dec)
    assert sep.all() == np.array([1., 1., np.sqrt(2.), np.sqrt(2.)]).all()
    assert pa.all() == np.array([270., 180., 225., 45.]).all()
Exemple #4
0
    def __init__(self, system, like='chi2_lnlike', custom_lnlike=None):

        super(OFTI, self).__init__(system,
                                   like=like,
                                   custom_lnlike=custom_lnlike)

        # compute priors and columns containing ra/dec and sep/pa
        self.priors = self.system.sys_priors
        self.radec_idx = self.system.radec[1]
        self.seppa_idx = self.system.seppa[1]

        # store input table and table with values used by OFTI
        self.input_table = self.system.data_table
        self.data_table = self.system.data_table.copy()

        # these are of type astropy.table.column
        self.sep_observed = self.data_table[:]['quant1'].copy()
        self.pa_observed = self.data_table[:]['quant2'].copy()
        self.sep_err = self.data_table[:]['quant1_err'].copy()
        self.pa_err = self.data_table[:]['quant2_err'].copy()

        # convert RA/Dec rows to sep/PA
        if len(self.radec_idx) > 0:
            print(
                'Converting ra/dec data points in data_table to sep/pa. Original data are stored in input_table.'
            )

        for i in self.radec_idx:
            self.sep_observed[i], self.pa_observed[i] = radec2seppa(
                self.sep_observed[i], self.pa_observed[i])
            self.sep_err[i], self.pa_err[i] = radec2seppa(
                self.sep_err[i], self.pa_err[i])

        self.epochs = np.array(self.data_table['epoch'])

        # choose scale-and-rotate epoch
        self.epoch_idx = np.argmin(self.sep_err)  # epoch with smallest error

        # create an empty results object
        self.results = orbitize.results.Results(
            sampler_name=self.__class__.__name__, post=None, lnlike=None)