Mercurial > hg > horiscopes
diff V4/synastry.py @ 23:11d4e438045e
make version 5
author | DaveM |
---|---|
date | Mon, 09 Apr 2018 15:07:21 +0100 |
parents | a5b8e2b91d8f |
children |
line wrap: on
line diff
--- a/V4/synastry.py Thu Mar 08 20:36:44 2018 +0000 +++ b/V4/synastry.py Mon Apr 09 15:07:21 2018 +0100 @@ -11,7 +11,7 @@ def __init__(self): self.rules = [] self.uniqueID = 0 - print 'Warning, need to fix [Vertex, Ascendant House, None Location] issues' + print 'Warning, need to fix [Vertex, Ascendant House, South Node, IC/MC and None Location] issues' def addRule(self,planetTuple,aspectList,score): rule = compatibilityRule(self.uniqueID,planetTuple,aspectList,score) @@ -36,13 +36,17 @@ def parseCompatRules(self,filename): comList = self.readFile(filename) for com in comList: + # print com + planetTuple = None + aspectList = None + score = None c = com.split(',') if len(c) == 4: if len(c[1]) > 1: aspectList = [] - planetTuple = tuple(sorted((c[0].lower(),c[2].lower()))) + planetTuple = tuple((c[0].lower(),c[2].lower())) score = int(c[3]) - for subset in c[1].split(' '): + for subset in c[1].lower().split(' '): aspectList.append(subset) elif len(c[1]) == 0 : if 'house' not in c[2]: @@ -53,14 +57,20 @@ print 'multiple house numbers found - ERROR' aspectList = int(houseNo[0]) score = int(c[3]) - self.addRule(planetTuple,aspectList,score) + self.addRule(planetTuple,aspectList,score) def calcCompatibility(self, horiscope): score = 0 - for r in self.rules: + for r in sorted(self.rules): if 'vertex' in r.planet: # print 'ERROR - catch Vertex issue' pass + elif 'southnode' in r.planet: + # print 'ERROR - catch South Node issue' + pass + # elif 'ic/mc' in r.planet: + # # print 'ERROR - catch IC/MC issue' + # pass elif r.planet[1] == 'house' and r.planet[0] == 'asc': # print 'ERROR - catch Ascendant House issue' pass @@ -70,12 +80,32 @@ elif r.planet[1] == 'house': if horiscope.isInHouse(r.planet[0],r.aspect): score += r.score - else: - # print 'query standard synastry' + print r.planet[0] +' '+ r.planet[1] +' '+ str(aspect)+' '+str(r.score) + # print r.planet,r.aspect,r.score,score + elif r.planet[0] == r.planet[1]: aspect,variance = horiscope.calcAspect(r.planet[0],r.planet[1]) if aspect is not None: if aspect in r.aspect: score += r.score + print r.planet[0]+' '+aspect +' '+ r.planet[1] +' '+ str(r.score) + # print r.planet,r.aspect,aspect,r.score,score + else: + # print 'query standard synastry' + for order in [0,1]: + # print order,not order + # print r.planet[order],r.planet[not order] + aspect,variance = horiscope.calcAspect(r.planet[order],r.planet[not order]) + if aspect is not None: + # print aspect + # currentR = r + # pdb.set_trace() + if aspect in r.aspect: + score += r.score + print r.planet[0] +' '+ aspect +' '+ r.planet[1] +' '+ str(r.score) + # print r.planet,r.aspect,aspect,r.score,score + # else: + # print r.planet,r.aspect,aspect,0,score + print score return score @@ -251,7 +281,7 @@ class planetPositions: - aspectDict = {'conjunction':0,'semi-square':45,'sextile':60,'square':90,'trine':120,'opposite':180} + aspectDict = {'conjunction':0,'semi-square':45,'sextile':60,'square':90,'trine':120,'opposition':180} # zodiacAngle = {'aries':0,'taurus':30,'gemini':60,'cancer':90,'leo':120,'virgo':150,'libra':180,'scorpio':210,'sagittarius':240,'capricorn':270,'aquarius':300,'pisces':330} # Taken from https://en.wikipedia.org/wiki/Astrological_sign, with reference from https://en.wikipedia.org/wiki/Astrological_symbols#Signs_of_the_zodiac planetNames = ['sun','moon','mercury','venus','mars','jupiter','saturn','uranus','neptune','pluto','node','lilith','chiron','asc','ic','dsc','mc','asc/mc','sun/moon']