Relationship
The RelationshipScoreFactory
is a Python class within the Kerykeion library, designed to calculate the relevance of the relationship between two astrological subjects following the method of Ciro Discepolo. This file evaluates the synastry aspects between two subjects and provides a numerical score along with a descriptive qualification.
Description
The factory assigns a “relationship score” to two astrological subjects based on their synastry aspects. The scores are mapped to a descriptive qualification:
- 0 to 5: Minimal relationship
- 5 to 10: Medium relationship
- 10 to 15: Important relationship
- 15 to 20: Very important relationship
- 20 to 35: Exceptional relationship
- 30 and above: Rare exceptional relationship
The calculations consider aspects between planets (like Sun-Sun, Sun-Moon, Sun-Ascendant, etc.). Major aspects (conjunction, opposition, square, trine, sextile) are primarily used unless otherwise specified.
Key Features
-
Destiny Sign Evaluation: - Adds 5 points if the subjects share the same Sun sign quality (cardinal, fixed, mutable).
-
Major and Other Aspects: - Evaluates specific planetary aspects with assigned point values. - Example aspects include: - Sun-Sun main and other aspects - Sun-Moon conjunction and other aspects - Sun-Ascendant aspects - Moon-Ascendant aspects - Venus-Mars aspects
-
Relationship Description: - Maps the final score to a descriptive qualification (e.g., “Minimal,” “Important”).
-
Flexible Aspect Evaluation: - Option to evaluate only major aspects or include all aspects.
-
Result Model: - Provides a structured output with score value, description, destiny sign status, and aspect details.
Arguments
The constructor accepts:
first_subject
(Union[AstrologicalSubject, AstrologicalSubjectModel]): First subject instance.second_subject
(Union[AstrologicalSubject, AstrologicalSubjectModel]): Second subject instance.use_only_major_aspects
(bool, default=True): Whether to consider only major aspects.
Output
Returns an instance of RelationshipScoreModel
containing:
score_value
: The numerical relationship score.score_description
: The descriptive qualification.is_destiny_sign
: Whether the subjects share the same Sun sign quality.aspects
: A list ofRelationshipScoreAspectModel
detailing the synastry aspects.subjects
: The two validated subject models.
Example Usage
from kerykeion import AstrologicalSubjectfrom kerykeion.relationship_score.relationship_score_factory import RelationshipScoreFactory
# Create two astrological subjectssubject1 = AstrologicalSubject("Person A", 1993, 6, 10, 12, 15, "Location A", "Country A")subject2 = AstrologicalSubject("Person B", 1949, 6, 17, 9, 40, "Location B", "Country B")
# Instantiate the factoryfactory = RelationshipScoreFactory(subject1, subject2, use_only_major_aspects=True)
# Calculate the relationship scorerelationship_score = factory.get_relationship_score()
# Print the resultprint(relationship_score)
Example Output
RelationshipScoreModel( score_value=18, score_description='Very Important', is_destiny_sign=True, aspects=[ RelationshipScoreAspectModel(p1_name='Sun', p2_name='Sun', aspect='conjunction', orbit=1.5), RelationshipScoreAspectModel(p1_name='Sun', p2_name='Moon', aspect='sextile', orbit=2.1), RelationshipScoreAspectModel(p1_name='Venus', p2_name='Mars', aspect='trine', orbit=3.4) ], subjects=[<AstrologicalSubjectModel of Person A>, <AstrologicalSubjectModel of Person B>])
Additional Notes
- This implementation is based on the Ciro Discepolo method. Additional details can be found here.
- Logging is available for debugging purposes, with detailed messages during aspect evaluations.
This class is designed for compatibility with the rest of the Kerykeion library, ensuring seamless integration with AstrologicalSubject
and related models.