natus wheel: Semisquare & Sesquiquadrate; Ott orb pair detection; intensity sort
- pyswiss ASPECTS: uncomment Semisquare (45°, 4°) & Sesquiquadrate (135°, 4°) in angle order; update test known-types + max-orbs - ALL_ASPECTS replaces MAJOR_ASPECTS (client-side angle detection now covers all 9 types) - Ott's Orb system: PLANET_ORB per body (Sun/Moon=10, Mer/Ven/Mar=8, Jup/Sat=6, Ura/Nep/Plu=4); allowed orb = avg of two bodies - _angleAspectWith uses per-planet Ott orb as detection threshold - ASPECT_AV values + _sortAspects: intensity = A.V. × (1 − orb/ottOrb); aspects exceeding Ott orb filtered out; ties: separating first → partner importance → aspect importance Code architected by Disco DeDisco <discodedisco@outlook.com> Git commit message Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -20,15 +20,15 @@ SIGN_ELEMENT = {
|
||||
}
|
||||
|
||||
ASPECTS = [
|
||||
('Conjunction', 0, 8.0),
|
||||
('Semisextile', 30, 4.0),
|
||||
('Sextile', 60, 6.0),
|
||||
('Square', 90, 8.0),
|
||||
('Trine', 120, 8.0),
|
||||
('Quincunx', 150, 5.0),
|
||||
('Opposition', 180, 10.0),
|
||||
# ('Semisquare', 45, 4.0),
|
||||
# ('Sesquiquadrate', 135, 4.0),
|
||||
('Conjunction', 0, 8.0),
|
||||
('Semisextile', 30, 4.0),
|
||||
('Semisquare', 45, 4.0),
|
||||
('Sextile', 60, 6.0),
|
||||
('Square', 90, 8.0),
|
||||
('Trine', 120, 8.0),
|
||||
('Sesquiquadrate', 135, 4.0),
|
||||
('Quincunx', 150, 5.0),
|
||||
('Opposition', 180, 10.0),
|
||||
]
|
||||
|
||||
PLANET_CODES = {
|
||||
|
||||
@@ -233,8 +233,8 @@ class CalculateAspectsTest(SimpleTestCase):
|
||||
|
||||
def test_each_aspect_type_is_a_known_name(self):
|
||||
known = {
|
||||
'Conjunction', 'Semisextile', 'Sextile', 'Square',
|
||||
'Trine', 'Quincunx', 'Opposition',
|
||||
'Conjunction', 'Semisextile', 'Semisquare', 'Sextile', 'Square',
|
||||
'Trine', 'Sesquiquadrate', 'Quincunx', 'Opposition',
|
||||
}
|
||||
for aspect in self.aspects:
|
||||
with self.subTest(aspect=aspect):
|
||||
@@ -305,13 +305,15 @@ class CalculateAspectsTest(SimpleTestCase):
|
||||
|
||||
def test_orb_is_within_allowed_maximum(self):
|
||||
max_orbs = {
|
||||
'Conjunction': 8.0,
|
||||
'Semisextile': 4.0,
|
||||
'Sextile': 6.0,
|
||||
'Square': 8.0,
|
||||
'Trine': 8.0,
|
||||
'Quincunx': 5.0,
|
||||
'Opposition': 10.0,
|
||||
'Conjunction': 8.0,
|
||||
'Semisextile': 4.0,
|
||||
'Semisquare': 4.0,
|
||||
'Sextile': 6.0,
|
||||
'Square': 8.0,
|
||||
'Trine': 8.0,
|
||||
'Sesquiquadrate': 4.0,
|
||||
'Quincunx': 5.0,
|
||||
'Opposition': 10.0,
|
||||
}
|
||||
for aspect in self.aspects:
|
||||
with self.subTest(aspect=aspect):
|
||||
|
||||
Reference in New Issue
Block a user