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']