Skip to content

Commit

Permalink
Fix solar rAshi computation
Browse files Browse the repository at this point in the history
Merge
  • Loading branch information
vvasuki committed Feb 13, 2025
1 parent c8c4e87 commit eeeb44d
Show file tree
Hide file tree
Showing 13 changed files with 73,573 additions and 73,582 deletions.
4 changes: 2 additions & 2 deletions jyotisha/panchaanga/spatio_temporal/annual.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def get_panchaanga_for_kali_year(city, year, precomputed_json_dir="~/Documents/j
else:
logging.info('No precomputed data available or allowed. Computing panchaanga...\n')
start_year_civil = year - era.get_year_0_offset(era_id=era.ERA_KALI)
anga_span_finder = AngaSpanFinder.get_cached(ayanaamsha_id=Ayanamsha.CHITRA_AT_180, anga_type=AngaType.SIDEREAL_MONTH)
anga_span_finder = AngaSpanFinder.get_cached(ayanaamsha_id=Ayanamsha.CHITRA_AT_180, anga_type=AngaType.GRAHA_RASHI[Graha.SUN])
start_mesha = anga_span_finder.find(jd1=time.utc_gregorian_to_jd(Date(year=start_year_civil, month=2, day=1)), jd2=time.utc_gregorian_to_jd(Date(year=start_year_civil, month=7, day=1)), target_anga_id=1)
jd_next_sunset_start_mesha = city.get_setting_time(julian_day_start=start_mesha.jd_start, body=Graha.SUN)
end_mina = anga_span_finder.find(jd1=time.utc_gregorian_to_jd(Date(year=start_year_civil + 1, month=1, day=1)), jd2=time.utc_gregorian_to_jd(Date(year=start_year_civil + 1, month=6, day=1)), target_anga_id=1)
Expand Down Expand Up @@ -79,7 +79,7 @@ def get_panchaanga_for_shaka_year(city, year, precomputed_json_dir="~/Documents/
logging.info('No precomputed data available. Computing panchaanga...\n')
SHAKA_CIVIL_ERA_DIFF = 78
start_year_civil = year + era.get_year_0_offset(era_id=era.ERA_SHAKA)
anga_span_finder = AngaSpanFinder.get_cached(ayanaamsha_id=Ayanamsha.ASHVINI_STARTING_0, anga_type=AngaType.SIDEREAL_MONTH)
anga_span_finder = AngaSpanFinder.get_cached(ayanaamsha_id=Ayanamsha.ASHVINI_STARTING_0, anga_type=AngaType.GRAHA_RASHI[Graha.SUN])
start_equinox = anga_span_finder.find(jd1=time.utc_gregorian_to_jd(Date(year=start_year_civil, month=3, day=1)), jd2=time.utc_gregorian_to_jd(Date(year=start_year_civil, month=5, day=1)), target_anga_id=1)
end_equinox = anga_span_finder.find(jd1=time.utc_gregorian_to_jd(Date(year=start_year_civil + 1, month=3, day=1)), jd2=time.utc_gregorian_to_jd(Date(year=start_year_civil + 1, month=5, day=1)), target_anga_id=1)
tz = Timezone(city.timezone)
Expand Down
10 changes: 3 additions & 7 deletions jyotisha/panchaanga/spatio_temporal/daily.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ def __init__(self):
self.karanas_with_ends = None
self.solar_nakshatras_with_ends = None
self.raashis_with_ends = None
self.solar_raashis_with_ends = None
self.graha_raashis_with_ends = {}

def get_angas_with_ends(self, anga_type):
Expand All @@ -65,8 +64,6 @@ def get_angas_with_ends(self, anga_type):
anga_spans = self.karanas_with_ends
elif anga_type == AngaType.SOLAR_NAKSH:
anga_spans = self.solar_nakshatras_with_ends
elif anga_type == AngaType.SIDEREAL_MONTH:
anga_spans = self.solar_raashis_with_ends
elif anga_type in AngaType.GRAHA_RASHI.values():
anga_spans = self.graha_raashis_with_ends[anga_type.get_body_str()]
return anga_spans
Expand Down Expand Up @@ -255,7 +252,6 @@ def compute_graha_transitions(self, previous_day_panchaanga=None, force_recomput
self.sunrise_day_angas.karanas_with_ends = AngaSpanFinder.get_cached(ayanaamsha_id=self.computation_system.ayanaamsha_id, anga_type=zodiac.AngaType.KARANA).get_all_angas_in_period(jd1=self.jd_sunrise, jd2=self.jd_next_sunrise)

self.sunrise_day_angas.raashis_with_ends = AngaSpanFinder.get_cached(ayanaamsha_id=self.computation_system.ayanaamsha_id, anga_type=zodiac.AngaType.RASHI).get_all_angas_in_period(jd1=self.jd_sunrise, jd2=self.jd_next_sunrise)
self.sunrise_day_angas.solar_raashis_with_ends = AngaSpanFinder.get_cached(ayanaamsha_id=self.computation_system.ayanaamsha_id, anga_type=zodiac.AngaType.SIDEREAL_MONTH).get_all_angas_in_period(jd1=self.jd_sunrise, jd2=self.jd_next_sunrise)

self.sunrise_day_angas.solar_nakshatras_with_ends = AngaSpanFinder.get_cached(ayanaamsha_id=self.computation_system.ayanaamsha_id, anga_type=zodiac.AngaType.SOLAR_NAKSH).get_all_angas_in_period(jd1=self.jd_sunrise, jd2=self.jd_next_sunrise)

Expand Down Expand Up @@ -297,12 +293,12 @@ def compute_solar_day_sunset(self, previous_day_panchaanga=None):
# If solar transition happens before the current sunset but after the previous sunset, then that is taken to be solar day 1.
self.compute_graha_transitions(previous_day_panchaanga=previous_day_panchaanga)
solar_month_sunset = NakshatraDivision(jd=self.jd_sunset, ayanaamsha_id=self.computation_system.ayanaamsha_id).get_anga(
anga_type=AngaType.SIDEREAL_MONTH)
anga_type=AngaType.GRAHA_RASHI[Graha.SUN])

solar_sidereal_month_end_jd = None
# Some months are really short, like Dhanurmasa ending 1970-Jan-14. So >=28 is used...
if previous_day_panchaanga is None or previous_day_panchaanga.solar_sidereal_date_sunset.day >= 28 :
anga_finder = zodiac.AngaSpanFinder.get_cached(ayanaamsha_id=self.computation_system.ayanaamsha_id, anga_type=AngaType.SIDEREAL_MONTH)
anga_finder = zodiac.AngaSpanFinder.get_cached(ayanaamsha_id=self.computation_system.ayanaamsha_id, anga_type=AngaType.GRAHA_RASHI[Graha.SUN])
solar_month_sunset_span = anga_finder.find(jd1=self.jd_sunset - 32, jd2=self.jd_sunset + 5, target_anga_id=solar_month_sunset)
solar_sidereal_month_day_sunset = len(self.city.get_sunsets_in_period(jd_start=solar_month_sunset_span.jd_start, jd_end=self.jd_sunset + 1/48.0))
if solar_sidereal_month_day_sunset == 1 and solar_month_sunset_span.jd_start > self.jd_sunrise:
Expand Down Expand Up @@ -548,7 +544,7 @@ def set_mauDhyas(self):


def set_graha_raashis(self):
for graha_id in [Graha.MERCURY, Graha.VENUS, Graha.MARS, Graha.JUPITER, Graha.SATURN, Graha.RAHU, Graha.KETU]:
for graha_id in [Graha.MERCURY, Graha.VENUS, Graha.MARS, Graha.JUPITER, Graha.SATURN, Graha.RAHU, Graha.KETU, Graha.SUN]:
self.sunrise_day_angas.graha_raashis_with_ends[graha_id] = AngaSpanFinder.get_cached(ayanaamsha_id=self.computation_system.ayanaamsha_id, anga_type=zodiac.AngaType.GRAHA_RASHI[graha_id]).get_all_angas_in_period(jd1=self.jd_sunrise, jd2=self.jd_next_sunrise)

# Essential for depickling to work.
Expand Down
2 changes: 1 addition & 1 deletion jyotisha/panchaanga/temporal/festival/applier/solar.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ def assign_nava_nayakas(self):
if sankranti_id == NAYAKA_MAP[nayaka]:
nava_nayakas[nayaka] = names.NAMES['VARA_NAMES']['sa'][sanscript.roman.HK_DRAVIDIAN][self.daily_panchaangas[d].date.get_weekday()]

finder = zodiac.AngaSpanFinder.get_cached(ayanaamsha_id=self.computation_system.ayanaamsha_id, anga_type=zodiac.AngaType.SIDEREAL_MONTH)
finder = zodiac.AngaSpanFinder.get_cached(ayanaamsha_id=self.computation_system.ayanaamsha_id, anga_type=zodiac.AngaType.GRAHA_RASHI[Graha.SUN])
anga = finder.find(jd1 = self.panchaanga.jd_start - 32, jd2=self.panchaanga.jd_start, target_anga_id=12)
mina_start = anga.jd_start

Expand Down
5 changes: 2 additions & 3 deletions jyotisha/panchaanga/temporal/zodiac/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,8 +148,7 @@ def get_anga(self, anga_type):
def get_all_angas(self):
"""Compute various properties of the time based on lunar and solar longitudes, division of a circle into a certain number of degrees (arc_len).
"""
anga_objects = [AngaType.TITHI, AngaType.TITHI_PADA, AngaType.NAKSHATRA, AngaType.NAKSHATRA_PADA, AngaType.RASHI,
AngaType.SIDEREAL_MONTH, AngaType.SOLAR_NAKSH, AngaType.YOGA, AngaType.KARANA]
anga_objects = [AngaType.TITHI, AngaType.TITHI_PADA, AngaType.NAKSHATRA, AngaType.NAKSHATRA_PADA, AngaType.RASHI, AngaType.SOLAR_NAKSH, AngaType.YOGA, AngaType.KARANA]
angas = list(map(lambda anga_object: self.get_anga(anga_type=anga_object), anga_objects))
anga_ids = list(map(lambda anga_obj: anga_obj.index, anga_objects))
return dict(list(zip(anga_ids, angas)))
Expand Down Expand Up @@ -193,7 +192,7 @@ def get_solar_raashi(self):
int rashi, where 1 stands for mESa, ..., 12 stands for mIna
"""

return self.get_anga(AngaType.SIDEREAL_MONTH)
return self.get_anga(AngaType.GRAHA_RASHI[Graha.SUN])


def longitude_to_right_ascension(longitude):
Expand Down
7 changes: 2 additions & 5 deletions jyotisha/panchaanga/temporal/zodiac/angas.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ class AngaType(common.JsonObject):
RASHI = None
YOGA = None
KARANA = None
SIDEREAL_MONTH = None
TROPICAL_MONTH = None
SOLAR_NAKSH = None
SOLAR_NAKSH_PADA = None
Expand Down Expand Up @@ -88,12 +87,12 @@ def from_name(cls, name):
AngaType.YOGA = AngaType(name='YOGA', name_hk="yOgaH", num_angas=27, body_weights={Graha.MOON: 1, Graha.SUN: 1}, mean_period_days=29.541)
AngaType.YOGA_PADA = AngaType(name='YOGA_PADA', name_hk="yOga-pAdaH", num_angas=108, body_weights={Graha.MOON: 1, Graha.SUN: 1}, mean_period_days=29.541)
AngaType.KARANA = AngaType(name='KARANA', name_hk="karaNam", num_angas=60, body_weights={Graha.MOON: 1, Graha.SUN: -1}, mean_period_days=29.4)
AngaType.SIDEREAL_MONTH = AngaType(name='SIDEREAL_MONTH', name_hk="rAzi-mAsaH", num_angas=12, body_weights={Graha.MOON: 0, Graha.SUN: 1}, mean_period_days=365.242)
AngaType.TROPICAL_MONTH = AngaType(name='TROPICAL_MONTH', name_hk="Artava-mAsaH", num_angas=12, body_weights={Graha.MOON: 0, Graha.SUN: 1}, mean_period_days=365.242)
AngaType.SOLAR_NAKSH = AngaType(name='SOLAR_NAKSH', name_hk="saura-nakSatram", num_angas=27, body_weights={Graha.MOON: 0, Graha.SUN: 1}, mean_period_days=365.242)
AngaType.SOLAR_NAKSH_PADA = AngaType(name='SOLAR_NAKSH_PADA', name_hk="saura-nakSatra-pAdaH", num_angas=108, body_weights={Graha.MOON: 0, Graha.SUN: 1}, mean_period_days=365.242)
AngaType.SAMVATSARA = AngaType(name='SAMVATSARA', name_hk="saMvatsaraH", num_angas=64, mean_period_days=None)

AngaType.GRAHA_RASHI[Graha.SUN] = AngaType(name='RASHI_SUN', name_hk="sUrya-rAziH", num_angas=12, body_weights={Graha.SUN: 1}, mean_period_days=365.242)
AngaType.GRAHA_RASHI[Graha.MERCURY] = AngaType(name='RASHI_MERCURY', name_hk="budha-rAziH", num_angas=12, body_weights={Graha.MERCURY: 1}, mean_period_days=87.97)
AngaType.GRAHA_RASHI[Graha.VENUS] = AngaType(name='RASHI_VENUS', name_hk="zukra-rAziH", num_angas=12, body_weights={Graha.VENUS: 1}, mean_period_days=224.7)
AngaType.GRAHA_RASHI[Graha.MARS] = AngaType(name='RASHI_MARS', name_hk="maGgala-rAziH", num_angas=12, body_weights={Graha.MARS: 1}, mean_period_days=686.98)
Expand All @@ -119,9 +118,7 @@ def get_cached(self, index, anga_type_id):

def get_name(self, script=sanscript.roman.HK_DRAVIDIAN):
name_dict = NAME_TO_TYPE[self.anga_type_id].names_dict
if self.anga_type_id == AngaType.SIDEREAL_MONTH.name:
return names.get_chandra_masa(month=self.index, script=script)
elif name_dict is not None:
if name_dict is not None:
return name_dict[script][self.index]
else:
return None
Expand Down
2 changes: 1 addition & 1 deletion jyotisha/panchaanga/writer/md/day_details.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ def print_khachakra_stithi(daily_panchaanga, output_stream, script, subsection_m
solar_nakshatra_str = daily_panchaanga.sunrise_day_angas.get_anga_data_md(anga_type=AngaType.SOLAR_NAKSH,
script=script,
reference_jd=daily_panchaanga.julian_day_start)
solar_raashi_str = daily_panchaanga.sunrise_day_angas.get_anga_data_md(anga_type=AngaType.SIDEREAL_MONTH,
solar_raashi_str = daily_panchaanga.sunrise_day_angas.get_anga_data_md(anga_type=AngaType.GRAHA_RASHI[Graha.SUN],
script=script,
reference_jd=daily_panchaanga.julian_day_start)
print('- 🌌🌞%s \n - %s ' % (solar_nakshatra_str, solar_raashi_str), file=output_stream)
Expand Down
22 changes: 11 additions & 11 deletions jyotisha_tests/spatio_temporal/data/Chennai-1981-12-23.json
Original file line number Diff line number Diff line change
Expand Up @@ -993,7 +993,7 @@
"index": 27,
"jsonClass": "Tithi",
"month": {
"anga_type_id": "SIDEREAL_MONTH",
"anga_type_id": "RASHI_SUN",
"index": 9,
"jsonClass": "Anga"
}
Expand Down Expand Up @@ -1071,6 +1071,16 @@
"jsonClass": "AngaSpan"
}
],
"sun": [
{
"anga": {
"anga_type_id": "RASHI_SUN",
"index": 9,
"jsonClass": "Anga"
},
"jsonClass": "AngaSpan"
}
],
"venus": [
{
"anga": {
Expand Down Expand Up @@ -1158,16 +1168,6 @@
"jsonClass": "AngaSpan"
}
],
"solar_raashis_with_ends": [
{
"anga": {
"anga_type_id": "SIDEREAL_MONTH",
"index": 9,
"jsonClass": "Anga"
},
"jsonClass": "AngaSpan"
}
],
"tithi_at_noon": {
"anga_type_id": "TITHI",
"index": 28,
Expand Down
Loading

0 comments on commit eeeb44d

Please sign in to comment.