feat: migrate precise Shadbala parity

This commit is contained in:
732642856
2026-07-17 19:39:45 +08:00
parent 064f985f3a
commit f2c4a0d915
16 changed files with 14364 additions and 173 deletions
@@ -197,6 +197,15 @@ def build_pyjhora_sample(sample, *, node_mode='mean'):
'sav': list(sav),
},
'shadbala': {name: float(shadbala[6][index]) for index, name in enumerate(['Sun', 'Moon', 'Mars', 'Mercury', 'Jupiter', 'Venus', 'Saturn'])},
'shadbala_components': {
name: {
component: float(shadbala[row_index][index])
for component, row_index in {
'sthana': 0, 'kala': 1, 'dig': 2, 'chesta': 3, 'naisargika': 4, 'drik': 5,
}.items()
}
for index, name in enumerate(['Sun', 'Moon', 'Mars', 'Mercury', 'Jupiter', 'Venus', 'Saturn'])
},
'dasha': dasha,
}
@@ -276,6 +285,13 @@ def compare_one(sample_id, local, pyjhora):
rows, sample_id, 'Shadbala', planet, 'total_virupas',
local.get('shadbala', {}).get(planet), pyjhora.get('shadbala', {}).get(planet), tolerance=0.5,
)
for component in ['sthana', 'kala', 'dig', 'chesta', 'naisargika', 'drik']:
compare_scalar(
rows, sample_id, 'Shadbala_Component', planet, component,
local.get('shadbala_components', {}).get(planet, {}).get(component),
pyjhora.get('shadbala_components', {}).get(planet, {}).get(component),
tolerance=0.5,
)
# PyJHora dasha is useful as external signal, but currently has different default starting convention/seed in some cases.
# Keep fields in matrix, with generous date tolerance; differences are classified below in report.
for field in ['mahadasha_lord', 'antardasha_lord']:
@@ -111,6 +111,17 @@ def canonicalize(sample, data):
'sav': [safe_get(modules, 'ashtakavarga', 'sav', 'scores', sign) for sign in ['Aries', 'Taurus', 'Gemini', 'Cancer', 'Leo', 'Virgo', 'Libra', 'Scorpio', 'Sagittarius', 'Capricorn', 'Aquarius', 'Pisces']],
},
'shadbala': {name: safe_get(modules, 'shadbala', 'planets', name, 'total_virupas') for name in PLANETS[:7]},
'shadbala_components': {
name: {
'sthana': safe_get(modules, 'shadbala', 'planets', name, 'sthana_bala', 'total'),
'kala': safe_get(modules, 'shadbala', 'planets', name, 'kala_bala', 'total'),
'dig': safe_get(modules, 'shadbala', 'planets', name, 'dig_bala'),
'chesta': safe_get(modules, 'shadbala', 'planets', name, 'chesta_bala'),
'naisargika': safe_get(modules, 'shadbala', 'planets', name, 'naisargika_bala'),
'drik': safe_get(modules, 'shadbala', 'planets', name, 'drik_bala'),
}
for name in PLANETS[:7]
},
'dasha': {
'mahadasha_lord': current.get('lord'),
'mahadasha_start': current.get('start'),