예제 #1
0
def filter_comparison_stars(
    star: StarDescription, comp_stars: ComparisonStars
) -> Tuple[ComparisonStars, ComparisonStars]:
    compstar_match: star_description.CompStarData = star.get_metadata("COMPSTARS")
    sd_ids = compstar_match.compstar_ids
    # skip part of the work if the list is equal. Biggest set first otherwise diff is always empty
    if len(set(comp_stars.ids).difference(set(sd_ids))) == 0:
        return comp_stars
    filtered_compstars = comp_stars.get_filtered_comparison_stars(sd_ids)
    extra_compstar = comp_stars.get_filtered_comparison_stars([compstar_match.extra_id])
    logging.debug(
        f"get star compstars from catalog: {len(filtered_compstars.ids)}, {filtered_compstars.ids}"
    )
    return filtered_compstars, extra_compstar
예제 #2
0
    def setUp(self) -> None:
        logging.getLogger().setLevel(logging.DEBUG)
        logging.basicConfig(format="%(asctime)s %(levelname)s %(message)s")
        self.df = reading.read_lightcurve_vast("./tests/data/out02391.dat")
        self.sd = stardesc(2391, 10, 10)
        do_calibration.add_catalog_data_to_sd(self.sd, 10, 0.1,
                                              "UCAC4-Numero2391", "UCAC4",
                                              self.sd.coords)
        self.sd_comp1 = stardesc(1, 10, 10)
        do_calibration.add_catalog_data_to_sd(self.sd_comp1, 12.1, 0.1,
                                              "UCAC4-Numero1", "UCAC4",
                                              self.sd.coords)
        self.sd_comp5 = stardesc(5, 10, 10)
        do_calibration.add_catalog_data_to_sd(self.sd_comp5, 11.1, 0.1,
                                              "UCAC4-Numero5", "UCAC4",
                                              self.sd.coords)
        self.sd.set_metadata(star_metadata.CompStarData(compstar_ids=[1, 5]))
        # ComparisonStars(comparison_stars_ids, comparison_stars_1_sds, comp_observations, comp_catalogmags,
        #                 comp_catalogerr)
        observations = [
            {
                "2457236.66302": (12.2, 0.01)
            },
            {
                "2457236.66302": (11.2, 0.01)
            },
        ]
        self.comp_stars = ComparisonStars([1, 5],
                                          [self.sd_comp1, self.sd_comp5],
                                          observations, [12, 11], [0.1, 0.1])
        import toml

        self.settings = toml.load("./tests/data/testsettings.txt")
예제 #3
0
    def test_calculate_weighted_value_ensemble_photometry(self):
        data = {"JD": ["1"], "Vrel": [15.414], "err": [0.012]}
        df = DataFrame(data, columns=["JD", "Vrel", "err"])
        # {JD, (mag, magerr)}
        observations_1 = {"1": (11.775, 0.001)}
        observations_2 = {"1": (12.220, 0.0012)}
        observations_3 = {"1": (13.114, 0.0021)}
        observations = [observations_1, observations_2, observations_3]
        catalogmags = [11.8, 12.2, 13.1]
        comp_stars = ComparisonStars(None, None, observations, catalogmags, None)

        realV, realErr = do_compstars.calculate_ensemble_photometry(
            df, comp_stars, do_compstars.weighted_value_ensemble_method
        )
        self.assertEqual(15.415, round(realV[0], 3))
        self.assertEqual(0.0121, round(realErr[0], 4))
예제 #4
0
def set_comp_stars_and_ucac4(
    star_descriptions: List[StarDescription],
    selectedstars: List[StarDescription],
    checkstarfile: str,
    vastdir: str,
    stardict: StarDict,
    ref_jd: str,
) -> ComparisonStars:
    if checkstarfile:
        # load comparison stars
        checkstars = read_checkstars(checkstarfile)
        ucac4.add_sd_metadatas(selectedstars)
        comparison_stars_ids, comparison_stars_1_sds = do_compstars.get_fixed_compstars(
            star_descriptions, checkstars)
    else:
        ucac4.add_sd_metadatas(star_descriptions)
        (
            comparison_stars_ids,
            comparison_stars_1_sds,
        ) = do_compstars.get_calculated_compstars(vastdir, stardict, ref_jd)
    # get all observations for the comparison stars
    comp_observations = []
    for star in comparison_stars_ids:
        comp_magdict = reading.read_magdict_for_star(vastdir, star)
        # logging.info(f"Read comp magdict for {star}: {read_comp_magdict}")
        comp_observations.append(comp_magdict)
    comp_catalogmags = []
    comp_catalogerr = []
    for star in comparison_stars_1_sds:
        star_ucac4_catalog = star.get_metadata("UCAC4")
        comp_catalogmags.append(star_ucac4_catalog.vmag)
        comp_catalogerr.append(star_ucac4_catalog.vmag_err)
    comp_stars = ComparisonStars(
        comparison_stars_ids,
        comparison_stars_1_sds,
        comp_observations,
        comp_catalogmags,
        comp_catalogerr,
    )
    logging.info(
        f"Using {len(comparison_stars_ids)} comparison stars with on average "
        f"{np.array(list(map(len, comp_observations))).mean()} observations")
    return comp_stars
예제 #5
0
 def test_closest_compstar_ids(self):
     stars = [
         self.stardesc(1, 1, 1, 10, 0.01, 10),
         self.stardesc(4283, 3, 3, 12, 0.02, 10),
         self.stardesc(132, 10.24496, 9.96736, 13, 0.02, 10),
         self.stardesc(2, 10.24490, 9.96730, 12, 0.01, 10),
         self.stardesc(3, 10.24490, 9.96730, 12, 0.01, 10),
     ]  # not there
     result = do_compstars._closest_compstar_ids(
         stars[0],
         ComparisonStars(
             [x.local_id for x in stars[1:]],
             [x for x in stars[1:]],
             None,
             None,
             None,
         ),
     )
     self.assertEqual([4283, 2, 3, 132], result)