/
exorings.py
96 lines (83 loc) · 2.76 KB
/
exorings.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
############################################################
# _____ _____ _ __(_)_ __ __ _ ___
# / _ \ \/ / _ \| '__| | '_ \ / _` / __|
# | __/> < (_) | | | | | | | (_| \__ \
# \___/_/\_\___/|_| |_|_| |_|\__, |___/
# |___/
# v. alpha 1.0
############################################################
# EXORINGS CODE REPOSITORY
# http://github.org/facom/exorings
############################################################
from sys import exit,argv
############################################################
# REQUIRED PACKAGES
############################################################
packages={
"numpy":dict(linux="python-numpy",alias="np"),
}
for pack in packages.keys():
alias=packages[pack]["alias"]
linux=packages[pack]["linux"]
try:exec("import %s as %s"%(pack,alias))
except ImportError:
print "Package '%s' not installed. To continue please install the linux package '%s'."%(pack,linux)
exit(1)
############################################################
# MACROS AND CONSTANTS
############################################################
DEG=np.pi/180
RAD=1/DEG
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#PHYSICAL
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DAY=86400.0 #s
HOUR=3600.0 #s
GCONST=6.67428E-11 #kg m^3/s^2
MSUN=1.98855E+30 #kg
RSUN=6.96342E+8 #m
AU=1.49597871e+11 #m
############################################################
# UTIL ROUTINES
############################################################
class dict2obj(object):
"""
Convert a dictionary into an object.
"""
def __init__(self,dic={}):self.__dict__.update(dic)
def __add__(self,other):
for attr in other.__dict__.keys():exec("self.%s=other.%s"%(attr,attr))
return self
def getParameters(default):
"""
Read parameters from the command line.
default: dictionary with the default values
"""
ip=dict()
#GET PARAMETERS FROM COMMAND LINE
for i in xrange(1,len(argv)):
try:exec argv[i] in ip
except IndexError:pass
except NameError:
print "Bad formed input parameter '%s'."%argv[i]
exit(1)
if len(ip.keys())==0:
print "No parameters overrided."
return dict2obj(default)
#CREATE PARAMETER OBJECTS
p=dict()
pkeys=ip.keys()
provkeys=""
for key in default.keys():
if key in pkeys:
p[key]=ip[key]
provkeys+="%s,"%key
else:p[key]=default[key]
print "Overrided parameters: %s."%provkeys.strip(",")
return dict2obj(p)
############################################################
# TESTS
############################################################
if __name__=="__main__":
print "All tests passed. Code ready to be used."
exit(0)