Beispiel #1
0
    def year_37_month_1(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
        res = []

        # Sîn (Moon) appeared behind the Bull of Heaven (Taurus)
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.LUNAR_ONLY:
            res.append(AngularSeparationQuery(self.db, MOON, TAURUS.central_star, 0, TAURUS.radius,
                                              EclipticPosition.BEHIND, SearchRange.for_night(month, 1)))

        # Kajjamānu (Saturn) was in front of the Swallow (Pisces).
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.PLANET_ONLY:
            res.append(AngularSeparationQuery(self.db, SATURN, PISCES.central_star, 0, PISCES.radius,
                                              EclipticPosition.AHEAD, SearchRange.for_night(month, 1)))

        # the 9th, beginning of the night, Sîn (Moon) stood 1 cubit in front of the Rear Foot of the Lion (β Virginis).
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.LUNAR_ONLY:
            res.append(AngularSeparationQuery(self.db, MOON, BETA_VIRGINIS, 1 * CUBIT, 6 * FINGER,
                                              EclipticPosition.AHEAD, SearchRange.for_night(month, 9)))

        #  The 11th] or the 12th Sagmegar (Jupiter) ‘rose to daylight’ (AR).
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.PLANET_ONLY:
            res.append(PlanetaryEventQuery(self.db, JUPITER, OuterPlanetPhenomena.AR,
                                           SearchRange.range_of_nights(month, 11, 12)))

        #  NA (sunrise to moonset) was 4.
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.LUNAR_SIX_ONLY:
            res.append(LunarSixQuery(self.db, month, 14, LunarSix.NA, 4.0))

        return res
Beispiel #2
0
    def year_37_month_2(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
        res = []

        # Sîn (Moon) appeared below the Rear Bright Star of the Large Twins (β Geminorum)
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.LUNAR_ONLY:
            res.append(AngularSeparationQuery(self.db, MOON, BETA_GEMINORUM, 0, 15,
                                              EclipticPosition.BELOW, SearchRange.for_night(month, 1)))

        # Kajjamānu (Saturn) was in front of the Swallow (Pisces).
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.PLANET_ONLY:
            res.append(AngularSeparationQuery(self.db, SATURN, PISCES.central_star, 0, PISCES.radius,
                                              EclipticPosition.AHEAD, SearchRange.for_night(month, 1)))

        # The 3rd, Ṣalbaṭānu (Mars) entered the Crab (Praesepe), the 5th it emerged.
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.PLANET_ONLY:
            res.append(AngularSeparationQuery(self.db, MARS, FORTY_TWO_CANCRI, 0, 5,
                                              None, SearchRange.range_of_nights(month, 3, 5)))

        # The 10th, Šiḫṭu (Mercury) [rose] in the west behind the [Little] Twins [...] (Gemini)
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.PLANET_ONLY:
            res.append(PlanetaryEventQuery(self.db, MERCURY, InnerPlanetPhenomena.EF,
                                           SearchRange.for_night_and_day(month, 10)))
            res.append(AngularSeparationQuery(self.db, MERCURY, GEMINI.central_star, 0, GEMINI.radius,
                                              None, SearchRange.for_night_and_day(month, 10)))

        # The 18th, Dilbat (Venus) was ‘balanced’ 1 cubit 4 fingers above the King (Regulus).
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.PLANET_ONLY:
            res.append(AngularSeparationQuery(self.db, VENUS, REGULUS, (1 * CUBIT) + (4 * FINGER),
                                              8 * CUBIT, EclipticPosition.ABOVE, SearchRange.for_night(month, 18)))

        #  The 26th (KUR) (moonrise to sunrise) was 23, I did not observe Sîn.
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.LUNAR_SIX_ONLY:
            res.append(LunarSixQuery(self.db, month, 26, LunarSix.KUR, 23, low_precision=True))

        return res
Beispiel #3
0
    def month_a(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
        res = []
        day14 = SearchRange.for_night(month, 14)
        # Mercury's last appearance in the east behind Pisces
        res.append(
            PlanetaryEventQuery(self.db, MERCURY, InnerPlanetPhenomena.ML,
                                day14))
        res.append(
            AngularSeparationQuery(self.db, MERCURY, PISCES.central_star, 0,
                                   PISCES.radius, None, day14))
        # Saturn's last appearance behind Pisces
        res.append(
            PlanetaryEventQuery(self.db, SATURN, OuterPlanetPhenomena.LA,
                                day14))
        res.append(
            AngularSeparationQuery(self.db, SATURN, PISCES.central_star, 0,
                                   PISCES.radius, EclipticPosition.BEHIND,
                                   day14))

        day17 = SearchRange.for_night(month, 17)
        # Mars became stationary
        res.append(
            PlanetaryEventQuery(self.db, MARS, OuterPlanetPhenomena.ST, day17))
        # it came close to the bright star of the Scorpion's head
        res.append(
            AngularSeparationQuery(self.db, MARS, ANTARES, 0, 10, None, day17))

        return res
Beispiel #4
0
    def year_7_month_6(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
        res = []

        if self.mode == BM33066Mode.ALL or self.mode == BM33066Mode.LUNAR_SIX_ONLY:
            res.append(LunarSixQuery(self.db, month, 1, LunarSix.NA1, 15 + 2/3))
            res.append(LunarSixQuery(self.db, month, 13, LunarSix.SU2, 11))
            res.append(LunarSixQuery(self.db, month, 14, LunarSix.NA, 4))
            res.append(LunarSixQuery(self.db, month, 15, LunarSix.ME, 1 + 1/3))
            res.append(LunarSixQuery(self.db, month, 16, LunarSix.GI6, 8 + 2/3))
            res.append(LunarSixQuery(self.db, month, 28, LunarSix.KUR, 15))

        if self.mode == BM33066Mode.ALL or self.mode == BM33066Mode.PLANET_ONLY:
            res.append(PlanetaryEventQuery(self.db, JUPITER, OuterPlanetPhenomena.FA, SearchRange.for_night(month, 22)))
            res.append(AngularSeparationQuery(self.db, JUPITER, VIRGO.central_star, 0, VIRGO.radius,
                                              EclipticPosition.BEHIND, SearchRange.for_night(month, 22)))
            res.append(PlanetaryEventQuery(self.db, SATURN, OuterPlanetPhenomena.LA, SearchRange.for_night(month, 3)))
            res.append(AngularSeparationQuery(self.db, SATURN, VIRGO.central_star, 0, VIRGO.radius,
                                              None, SearchRange.for_night(month, 3)))
            res.append(PlanetaryEventQuery(self.db, MARS, OuterPlanetPhenomena.FA, SearchRange.for_night(month, 13)))
            res.append(AngularSeparationQuery(self.db, MARS, LEO.central_star, 0, LEO.radius,
                                              None, SearchRange.for_night(month, 13)))

            #  Month VI, the 24th, Venus was 1 +[x cubits?] above Mars.
            res.append(AngularSeparationQuery(self.db, VENUS, MARS, 1 * CUBIT, 5 * CUBIT,
                                              EclipticPosition.ABOVE, SearchRange.for_night(month, 24)))

        return res
Beispiel #5
0
    def year_7_month_7(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
        res = []

        if self.mode == BM33066Mode.ALL or self.mode == BM33066Mode.LUNAR_SIX_ONLY:
            res.append(LunarSixQuery(self.db, month, 1, LunarSix.NA1, 16 + 2/3))
            res.append(LunarSixQuery(self.db, month, 13, LunarSix.SU2, 6.5))
            res.append(LunarSixQuery(self.db, month, 14, LunarSix.ME, 7.5))
            res.append(LunarSixQuery(self.db, month, 14, LunarSix.NA, 12))
            res.append(LunarSixQuery(self.db, month, 15, LunarSix.GI6, 3))
            res.append(LunarSixQuery(self.db, month, 26, LunarSix.KUR, 22))

        if self.mode == BM33066Mode.ALL or self.mode == BM33066Mode.PLANET_ONLY:
            res.append(PlanetaryEventQuery(self.db, SATURN, OuterPlanetPhenomena.FA, SearchRange.for_night(month, 13)))
            res.append(AngularSeparationQuery(self.db, SATURN, VIRGO.central_star, 0, VIRGO.radius,
                                              EclipticPosition.BEHIND, SearchRange.for_night(month, 13)))

            # Month VII, the 23rd, last part of the night, Jupiter was 3 cubits above the moon.
            res.append(AngularSeparationQuery(self.db, JUPITER, MOON, 3 * CUBIT, 1 * CUBIT,
                                              EclipticPosition.ABOVE, SearchRange.for_night(month, 23)))

            # Month VII, the 29th, last part of the night, Venus on the north side [came near?] 2 fingers to Ju[piter].
            res.append(AngularSeparationQuery(self.db, VENUS, JUPITER, 2 * FINGER, 4 * FINGER,
                                              None, SearchRange.for_night(month, 29)))

            # Month VII, the 12th, Saturn was 1 cubit in front of Jupiter.
            res.append(AngularSeparationQuery(self.db, SATURN, JUPITER, 1 * CUBIT, 6 * FINGER,
                                              EclipticPosition.AHEAD, SearchRange.for_night(month, 12)))

            # Month VII, the 11th, Mars came near to Jupiter 2 fingers.
            res.append(AngularSeparationQuery(self.db, MARS, JUPITER, 2 * FINGER, 2 * FINGER,
                                              None, SearchRange.for_night(month, 11)))

        return res
Beispiel #6
0
    def year_31_month_unknown(
            self, month: List[BabylonianDay]) -> List[AbstractQuery]:
        # 1'  [Month XII, ....]
        # 2'  [....] ....
        # 3'  it cleared [from] east to north.
        # 4'  The south wind blew. I cubit
        # 5'  in front of Libra it was eclipsed.
        # 6'  Saturn rose in Capricorn; Mars
        # 7'  was 2 cubits in front of α Scorpii.
        # 8'  At 1,30° after sunset.
        t = (1 * 60) + 30
        range = SearchRange.any_day(month)
        eclipse_pos = EclipsePosition(LIBRA.central_star, 0, LIBRA.radius,
                                      EclipticPosition.AHEAD)
        eclipse_time = FirstContactTime(t, FirstContactRelative.AFTER_SUNSET)
        eclipse = LunarEclipseQuery(self.db, eclipse_time,
                                    ExpectedEclipseType.PARTIAL_OR_TOTAL, None,
                                    eclipse_pos, range)

        if eclipse.best is not None:
            eclipse_time = eclipse.best['closest_approach_time']
            range = SearchRange(eclipse_time - 1, eclipse_time + 1,
                                "Within a day of the eclipse")

        mars = AngularSeparationQuery(self.db, MARS, ANTARES, 2 * CUBIT,
                                      1 * CUBIT, EclipticPosition.AHEAD, range)
        saturn = AngularSeparationQuery(self.db, SATURN,
                                        CAPRICORNUS.central_star, 0,
                                        CAPRICORNUS.radius, None, range)
        return [eclipse, mars, saturn]
Beispiel #7
0
    def month_b(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
        res = []
        day5 = SearchRange.for_night(month, 5)
        # Mercury's first appearance in the east in Pisces
        res.append(
            PlanetaryEventQuery(self.db, MERCURY, InnerPlanetPhenomena.MF,
                                day5))
        res.append(
            AngularSeparationQuery(self.db, MERCURY, PISCES.central_star, 0,
                                   PISCES.radius, None, day5))

        day19 = SearchRange.for_night(month, 19)
        # Venus stood in the region of Aries, 10 fingers behind Mars
        res.append(
            AngularSeparationQuery(self.db, VENUS, MARS, 10 * FINGER,
                                   10 * FINGER, EclipticPosition.BEHIND,
                                   day19))
        res.append(
            AngularSeparationQuery(self.db, MARS, ARIES.central_star, 0,
                                   ARIES.radius, None, day19))

        day20 = SearchRange.for_night(month, 20)
        # Mars was 1 finger to the left of the front? of Aries
        res.append(
            AngularSeparationQuery(self.db, MARS, ARIES.central_star, 0,
                                   ARIES.radius, None, day20))

        return res
Beispiel #8
0
 def shamash_17_ii(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
     day19 = SearchRange.for_night(month, 19)
     # mars was in [the area?] of the Old Man
     res1 = AngularSeparationQuery(self.db, MARS, PERSEUS.central_star, 0,
                                   PERSEUS.radius, None, day19)
     # to the right of Mercury
     res2 = AngularSeparationQuery(self.db, MARS, MERCURY, 0, 30,
                                   EclipticPosition.AHEAD, day19)
     return [res1, res2]
Beispiel #9
0
 def kand_1_iii(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
     day28 = SearchRange.for_night(month, 28)
     # Mercury was in the back of Mars?
     res1 = AngularSeparationQuery(self.db, MERCURY, MARS, 0, 30,
                                   EclipticPosition.BEHIND, day28)
     day29 = SearchRange.for_night(month, 29)
     # Mercury in the area of the Lion
     res2 = AngularSeparationQuery(self.db, MERCURY, LEO.central_star, 0,
                                   LEO.radius, None, day29)
     return [res1, res2]
Beispiel #10
0
 def kand_12_i(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
     day8 = SearchRange.for_night(month, 8)
     # Mercury, in the area of Pleiades
     res1 = AngularSeparationQuery(self.db, MERCURY, ALCYONE, 0, 10, None,
                                   day8)
     # Mercury was 2 ⅔ cubits above? Mars?
     res2 = AngularSeparationQuery(self.db, MERCURY, MARS,
                                   (2 + 2 / 3) * CUBIT, 2 * CUBIT,
                                   EclipticPosition.ABOVE, day8)
     return [res1, res2]
Beispiel #11
0
 def year_37_month_10(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
     res = []
     # The 19th, Dilbat (Venus) was below the Middle Star of the Horn of the Goat [...] (β Capricorni)
     if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.PLANET_ONLY:
         res.append(AngularSeparationQuery(self.db, VENUS, BETA_CAPRICORNI, 0, 15,
                                           EclipticPosition.BELOW, SearchRange.for_night(month, 19)))
     return res
Beispiel #12
0
def plot_separation_score(angle: float, tolerance: float, dest: str):

    range = (angle + tolerance) * 1.5
    xs = np.arange(0, range, 0.01)
    ys = list(
        map(
            lambda x: AngularSeparationQuery.separation_score(
                target_angle=angle,
                tolerance=tolerance,
                target_position=None,
                actual=x,
                actual_position=EclipticPosition.BEHIND.value,
            ), xs))

    f, ax1 = plt.subplots()
    ax1.set_xlabel('Angular Separation°')
    ax1.set_ylabel('Score')
    ax1.plot(xs, ys)
    if angle != 0:
        ax1.axvline(x=angle, color='r', label="Target Angle")

    ax1.axvline(x=angle + tolerance, color='g', label="Upper Bound")
    if angle - tolerance > 0:
        ax1.axvline(x=angle - tolerance, color='b', label="Lower Bound")

    ax1.legend()

    plt.savefig(dest)
Beispiel #13
0
 def kand_16_iii(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
     day20 = SearchRange.for_night(month, 20)
     # Mercury stood 1 cubit 4 fingers behind Mars.
     res1 = AngularSeparationQuery(self.db, MERCURY, MARS,
                                   (1 * CUBIT + 4 * FINGER), 1 * CUBIT,
                                   EclipticPosition.BEHIND, day20)
     return [res1]
Beispiel #14
0
 def shamash_19_vii(self,
                    month: List[BabylonianDay]) -> List[AbstractQuery]:
     day4 = SearchRange.for_night(month, 4)
     # Mercury stood for ⅔ cubit above? Mars
     res1 = AngularSeparationQuery(self.db, MERCURY, MARS, (2 / 3 * CUBIT),
                                   1 * CUBIT, EclipticPosition.ABOVE, day4)
     return [res1]
Beispiel #15
0
 def score_eclipse(eclipse: Dict, first_contact: Union[None, FirstContactTime],
                   type: ExpectedEclipseType, phase_timing: Union[None, PhaseTiming],
                   location: Union[None, EclipsePosition]) -> float:
     scores = [LunarEclipseQuery.eclipse_core_score(eclipse, type)]
     weights = [0.5]
     if location is not None:
         assert eclipse['angle'] is not None
         scores.append(AngularSeparationQuery.separation_score(location.target_angle, location.tolerance,
                                                               location.target_position, eclipse['angle'],
                                                               eclipse['position']))
         weights.append(0.25)
     if first_contact is not None:
         if type == ExpectedEclipseType.UNKNOWN:
             # If the eclipse is a prediction then allow a higher time tolerance
             scores.append(LunarEclipseQuery.eclipse_time_of_day_score(eclipse, first_contact,
                                                                       HIGH_TIME_TOLERANCE))
         else:
             scores.append(LunarEclipseQuery.eclipse_time_of_day_score(eclipse, first_contact,
                                                                       REGULAR_TIME_TOLERANCE))
         weights.append(0.25)
     if phase_timing is not None:
         scores.append(LunarEclipseQuery.eclipse_phase_length_score(eclipse, phase_timing))
         weights.append(0.25)
     score = np.average(scores, weights=weights)
     assert 0 <= score <= 1
     return score
Beispiel #16
0
 def nabo_7_unknown(self,
                    month: List[BabylonianDay]) -> List[AbstractQuery]:
     # Mercury was balanced 6 fingers above Mars.
     res1 = AngularSeparationQuery(self.db, MERCURY, MARS, 6 * FINGER,
                                   6 * FINGER, EclipticPosition.ABOVE,
                                   SearchRange.any_day(month))
     return [res1]
Beispiel #17
0
 def year_3_month_5(self,
                    month: List[BabylonianDay]) -> List[AbstractQuery]:
     range = SearchRange.for_night(month, 16)
     res1 = PlanetaryEventQuery(self.db, SATURN, OuterPlanetPhenomena.FA,
                                range)
     res2 = AngularSeparationQuery(self.db, SATURN, REGULUS, 0, 20,
                                   EclipticPosition.BEHIND, range)
     return [res1, res2]
Beispiel #18
0
 def year_11_month_unknown(
         self, month: List[BabylonianDay]) -> List[AbstractQuery]:
     range = SearchRange.any_day(month)
     res1 = PlanetaryEventQuery(self.db, SATURN, OuterPlanetPhenomena.FA,
                                range)
     res2 = AngularSeparationQuery(self.db, SATURN, ANTARES, 0, 20,
                                   EclipticPosition.ABOVE, range)
     return [res1, res2]
Beispiel #19
0
 def year_4_month_unknown(
         self, month: List[BabylonianDay]) -> List[AbstractQuery]:
     range = SearchRange.any_day(month)
     res1 = PlanetaryEventQuery(self.db, SATURN, OuterPlanetPhenomena.FA,
                                range)
     res2 = AngularSeparationQuery(self.db, SATURN, LEO.central_star, 0,
                                   LEO.radius, None, range)
     return [res1, res2]
Beispiel #20
0
 def year_10_month_a(self,
                     month: List[BabylonianDay]) -> List[AbstractQuery]:
     range = SearchRange.for_night(month, 20)
     res1 = PlanetaryEventQuery(self.db, SATURN, OuterPlanetPhenomena.LA,
                                range)
     res2 = AngularSeparationQuery(self.db, SATURN, LIBRA.central_star, 0,
                                   LIBRA.radius, None, range)
     return [res1, res2]
Beispiel #21
0
 def year_10_month_b(self,
                     month: List[BabylonianDay]) -> List[AbstractQuery]:
     range = SearchRange.for_night(month, 23)
     res1 = PlanetaryEventQuery(self.db, SATURN, OuterPlanetPhenomena.FA,
                                range)
     res2 = AngularSeparationQuery(self.db, SATURN, ANTARES, 0, 20,
                                   EclipticPosition.AHEAD, range)
     return [res1, res2]
Beispiel #22
0
 def year_2_month_5(self,
                    month: List[BabylonianDay]) -> List[AbstractQuery]:
     any_day = SearchRange.any_day(month)
     res1 = PlanetaryEventQuery(self.db, SATURN, OuterPlanetPhenomena.FA,
                                any_day)
     res2 = AngularSeparationQuery(self.db, SATURN, EPSILON_LEONIS, 0, 20,
                                   None, any_day)
     return [res1, res2]
Beispiel #23
0
    def year_9_month_2(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
        res = []

        if self.mode == BM33066Mode.ALL or self.mode == BM33066Mode.PLANET_ONLY:
            res.append(PlanetaryEventQuery(self.db, MARS, OuterPlanetPhenomena.LA, SearchRange.for_night(month, 9)))
            res.append(AngularSeparationQuery(self.db, MARS, REGULUS, 0, 15,
                                              EclipticPosition.BEHIND, SearchRange.for_night(month, 9)))

        return res
Beispiel #24
0
    def year_8_month_6(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
        res = []

        if self.mode == BM33066Mode.ALL or self.mode == BM33066Mode.PLANET_ONLY:
            res.append(PlanetaryEventQuery(self.db, JUPITER, OuterPlanetPhenomena.LA, SearchRange.for_night(month, 4)))
            res.append(AngularSeparationQuery(self.db, JUPITER, LIBRA.central_star, 0, LIBRA.radius,
                                              EclipticPosition.BEHIND, SearchRange.for_night(month, 4)))

        return res
Beispiel #25
0
    def year_8_month_2(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
        res = []

        if self.mode == BM33066Mode.ALL or self.mode == BM33066Mode.PLANET_ONLY:
            res.append(PlanetaryEventQuery(self.db, JUPITER, OuterPlanetPhenomena.ST, SearchRange.for_night(month, 25)))
            res.append(AngularSeparationQuery(self.db, JUPITER, VIRGO.central_star, 0, VIRGO.radius,
                                              None, SearchRange.for_night(month, 25)))

        return res
Beispiel #26
0
    def year_8_month_1(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
        res = []

        if self.mode == BM33066Mode.ALL or self.mode == BM33066Mode.PLANET_ONLY:
            res.append(PlanetaryEventQuery(self.db, VENUS, InnerPlanetPhenomena.EF, SearchRange.for_night(month, 13)))
            res.append(AngularSeparationQuery(self.db, VENUS, AURIGA.central_star, 0, AURIGA.radius,
                                              None, SearchRange.for_night(month, 13)))

        return res
Beispiel #27
0
    def year_7_month_10(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
        res = []

        if self.mode == BM33066Mode.ALL or self.mode == BM33066Mode.ECLIPSE_ONLY:
            t = (2 + 1 / 2) * 30
            res.append(LunarEclipseQuery(self.db, FirstContactTime(t, FirstContactRelative.BEFORE_SUNRISE),
                                         ExpectedEclipseType.TOTAL, None, None,
                                         SearchRange.for_night(month, 14)))

        if self.mode == BM33066Mode.ALL or self.mode == BM33066Mode.PLANET_ONLY:
            res.append(PlanetaryEventQuery(self.db, JUPITER, OuterPlanetPhenomena.ST, SearchRange.for_night(month, 27)))
            res.append(AngularSeparationQuery(self.db, JUPITER, LIBRA.central_star, 0, LIBRA.radius,
                                              EclipticPosition.AHEAD, SearchRange.for_night(month, 27)))

            # Month X, the 5th, Mercury was ½ cubit behind Venus.
            res.append(AngularSeparationQuery(self.db, MERCURY, VENUS, 0.5 * CUBIT, 0.5 * CUBIT,
                                              EclipticPosition.BEHIND, SearchRange.for_night(month, 5)))

        return res
Beispiel #28
0
 def shamash_14_xii(self,
                    month: List[BabylonianDay]) -> List[AbstractQuery]:
     day4 = SearchRange.for_night(month, 4)
     # Mercury's first appearance in the west
     res1 = PlanetaryEventQuery(self.db, MERCURY, InnerPlanetPhenomena.EF,
                                day4)
     # in the area of the Swallow.
     res2 = AngularSeparationQuery(self.db, MERCURY, PISCES.central_star, 0,
                                   PISCES.radius, None, day4)
     return [res1, res2]
Beispiel #29
0
    def year_7_month_3(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
        res = []

        if self.mode == BM33066Mode.ALL or self.mode == BM33066Mode.LUNAR_SIX_ONLY:
            res.append(LunarSixQuery(self.db, month, 1, LunarSix.NA1, 18.5))
            res.append(LunarSixQuery(self.db, month, 14, LunarSix.ME, 9.5))
            res.append(LunarSixQuery(self.db, month, 14, LunarSix.SU2, 4))
            res.append(LunarSixQuery(self.db, month, 15, LunarSix.GI6, 5))
            res.append(LunarSixQuery(self.db, month, 15, LunarSix.NA, 8.5))
            res.append(LunarSixQuery(self.db, month, 27, LunarSix.KUR, 15))

        if self.mode == BM33066Mode.ALL or self.mode == BM33066Mode.PLANET_ONLY:
            res.append(PlanetaryEventQuery(self.db, VENUS, InnerPlanetPhenomena.EL, SearchRange.for_night(month, 10)))
            res.append(AngularSeparationQuery(self.db, VENUS, LEO.central_star, 0, LEO.radius,
                                              None, SearchRange.for_night(month, 10)))
            res.append(PlanetaryEventQuery(self.db, VENUS, InnerPlanetPhenomena.MF, SearchRange.for_night(month, 27)))
            res.append(AngularSeparationQuery(self.db, VENUS, CANCER.central_star, 0, CANCER.radius,
                                              None, SearchRange.for_night(month, 27)))


        return res
Beispiel #30
0
    def year_37_month_11(self, month: List[BabylonianDay]) -> List[AbstractQuery]:
        res = []
        # Sîn (Moon) appeared in the Swallow (Pisces)
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.LUNAR_ONLY:
            res.append(AngularSeparationQuery(self.db, MOON, PISCES.central_star, 0, PISCES.radius,
                                              None, SearchRange.for_night(month, 1)))

        #  NA (sunset to moonset) was 14;30
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.LUNAR_SIX_ONLY:
            res.append(LunarSixQuery(self.db, month, 1, LunarSix.NA1, 14.5))

        # At that time, Sagmegar (Jupiter) was behind the Elbow of Pabi[lsag by ... cubits ...] (Sagittarius)
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.PLANET_ONLY:
            res.append(AngularSeparationQuery(self.db, JUPITER, SAGITTARIUS.central_star, 0, SAGITTARIUS.radius,
                                              EclipticPosition.BEHIND, SearchRange.for_night(month, 1)))

        # The 4th, Dilbat (Venus) was ‘balanced’ 1/2 cubit below the Goat-Fish. (Capricorn)
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.PLANET_ONLY:
            res.append(AngularSeparationQuery(self.db, VENUS, CAPRICORNUS.central_star, 0, CAPRICORNUS.radius,
                                              EclipticPosition.BELOW, SearchRange.for_night(month, 4)))

        #  Night of the 6th, evening watch, Sîn (Moon) was surrounded by a ‘fold’ (Halo), the Bristle (Pleiades),
        #  the Bull of Heaven (Taurus), the Chariot (Auriga) [stood within the ‘fold’ ...]
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.LUNAR_ONLY:
            res.append(AngularSeparationQuery(self.db, MOON, ALCYONE, 0, HALO,
                                              None, SearchRange.for_night(month, 6)))
            res.append(AngularSeparationQuery(self.db, MOON, TAURUS.central_star, 0, TAURUS.radius,
                                              None, SearchRange.for_night(month, 6)))
            res.append(AngularSeparationQuery(self.db, MOON, AURIGA.central_star, 0, AURIGA.radius,
                                              None, SearchRange.for_night(month, 6)))

        # Sîn (Moon) was surrounded by a ‘fold’ (Halo); the Lion (Leo) and the Crab (Cancer) were inside the ‘fold’.
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.LUNAR_ONLY:
            res.append(AngularSeparationQuery(self.db, MOON, LEO.central_star, 0, LEO.radius,
                                              None, SearchRange.range_of_nights(month, 7, 15)))
            res.append(AngularSeparationQuery(self.db, MOON, CANCER.central_star, 0, CANCER.radius,
                                              None, SearchRange.range_of_nights(month, 7, 15)))

        # The King (Regulus) was ‘balanced’ 1 cubit below Sîn (Moon).
        if self.mode == VAT4956Mode.ALL or self.mode == VAT4956Mode.LUNAR_ONLY:
            res.append(AngularSeparationQuery(self.db, REGULUS, MOON, 1 * CUBIT, 6 * FINGER,
                                              EclipticPosition.BELOW, SearchRange.range_of_nights(month, 7, 15)))
        return res