libaditya 0.3.4__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- libaditya/__init__.py +46 -0
- libaditya/_version.py +29 -0
- libaditya/calc/__init__.py +9 -0
- libaditya/calc/api.py +30 -0
- libaditya/calc/avasthas.py +346 -0
- libaditya/calc/docs/jaimini-get-arch.md +95 -0
- libaditya/calc/hellenistic.py +37 -0
- libaditya/calc/jaimini.py +335 -0
- libaditya/calc/jaimini_get.py +240 -0
- libaditya/calc/kala.py +73 -0
- libaditya/calc/panchanga.py +422 -0
- libaditya/calc/rashi.py +612 -0
- libaditya/calc/returns.py +50 -0
- libaditya/calc/swe_functions.py +118 -0
- libaditya/calc/varga.py +287 -0
- libaditya/calc/vimshottari.py +431 -0
- libaditya/cards/__init__.py +5 -0
- libaditya/cards/card.py +90 -0
- libaditya/cards/cards_constants.py +115 -0
- libaditya/cards/cards_of_truth.py +323 -0
- libaditya/cards/cot.py +142 -0
- libaditya/cards/deck.py +52 -0
- libaditya/charts/__init__.py +6 -0
- libaditya/charts/api.py +36 -0
- libaditya/charts/bodygraph.py +80 -0
- libaditya/charts/chart.py +286 -0
- libaditya/charts/jaimini.py +83 -0
- libaditya/charts/tajika.py +36 -0
- libaditya/constants.py +1776 -0
- libaditya/draw/__init__.py +20 -0
- libaditya/draw/draw_bodygraph.py +489 -0
- libaditya/draw/draw_sbc.py +712 -0
- libaditya/draw/themes/default-theme.hd +53 -0
- libaditya/ephe/ast0/se00010s.se1 +0 -0
- libaditya/ephe/seas_00.se1 +0 -0
- libaditya/ephe/seas_06.se1 +0 -0
- libaditya/ephe/seas_12.se1 +0 -0
- libaditya/ephe/seas_18.se1 +0 -0
- libaditya/ephe/seas_24.se1 +0 -0
- libaditya/ephe/seas_30.se1 +0 -0
- libaditya/ephe/seas_36.se1 +0 -0
- libaditya/ephe/seas_42.se1 +0 -0
- libaditya/ephe/seas_48.se1 +0 -0
- libaditya/ephe/seasm06.se1 +0 -0
- libaditya/ephe/seasm12.se1 +0 -0
- libaditya/ephe/seasm18.se1 +0 -0
- libaditya/ephe/seasm24.se1 +0 -0
- libaditya/ephe/seasm30.se1 +0 -0
- libaditya/ephe/seasm36.se1 +0 -0
- libaditya/ephe/seasm42.se1 +0 -0
- libaditya/ephe/seasm48.se1 +0 -0
- libaditya/ephe/seasm54.se1 +0 -0
- libaditya/ephe/sefstars.txt +4245 -0
- libaditya/ephe/semo_00.se1 +0 -0
- libaditya/ephe/semo_06.se1 +0 -0
- libaditya/ephe/semo_12.se1 +0 -0
- libaditya/ephe/semo_18.se1 +0 -0
- libaditya/ephe/semo_24.se1 +0 -0
- libaditya/ephe/semo_30.se1 +0 -0
- libaditya/ephe/semo_36.se1 +0 -0
- libaditya/ephe/semo_42.se1 +0 -0
- libaditya/ephe/semo_48.se1 +0 -0
- libaditya/ephe/semom06.se1 +0 -0
- libaditya/ephe/semom12.se1 +0 -0
- libaditya/ephe/semom18.se1 +0 -0
- libaditya/ephe/semom24.se1 +0 -0
- libaditya/ephe/semom30.se1 +0 -0
- libaditya/ephe/semom36.se1 +0 -0
- libaditya/ephe/semom42.se1 +0 -0
- libaditya/ephe/semom48.se1 +0 -0
- libaditya/ephe/semom54.se1 +0 -0
- libaditya/ephe/sepl_00.se1 +0 -0
- libaditya/ephe/sepl_06.se1 +0 -0
- libaditya/ephe/sepl_12.se1 +0 -0
- libaditya/ephe/sepl_18.se1 +0 -0
- libaditya/ephe/sepl_24.se1 +0 -0
- libaditya/ephe/sepl_30.se1 +0 -0
- libaditya/ephe/sepl_36.se1 +0 -0
- libaditya/ephe/sepl_42.se1 +0 -0
- libaditya/ephe/sepl_48.se1 +0 -0
- libaditya/ephe/seplm06.se1 +0 -0
- libaditya/ephe/seplm12.se1 +0 -0
- libaditya/ephe/seplm18.se1 +0 -0
- libaditya/ephe/seplm24.se1 +0 -0
- libaditya/ephe/seplm30.se1 +0 -0
- libaditya/ephe/seplm36.se1 +0 -0
- libaditya/ephe/seplm42.se1 +0 -0
- libaditya/ephe/seplm48.se1 +0 -0
- libaditya/ephe/seplm54.se1 +0 -0
- libaditya/hd/__init__.py +8 -0
- libaditya/hd/calc.py +55 -0
- libaditya/hd/constants.py +127 -0
- libaditya/hd/longitude.py +271 -0
- libaditya/objects/__init__.py +19 -0
- libaditya/objects/celestial_object.py +206 -0
- libaditya/objects/context.py +133 -0
- libaditya/objects/cusps.py +259 -0
- libaditya/objects/julian_day.py +265 -0
- libaditya/objects/location.py +167 -0
- libaditya/objects/longitude.py +987 -0
- libaditya/objects/nakshatras.py +285 -0
- libaditya/objects/planets.py +2059 -0
- libaditya/objects/shadbala.py +398 -0
- libaditya/objects/signs.py +690 -0
- libaditya/objects/swe_functions.py +75 -0
- libaditya/print_functions.py +548 -0
- libaditya/read.py +665 -0
- libaditya/stars/__init__.py +4 -0
- libaditya/stars/fixed_star.py +216 -0
- libaditya/stars/make_swe_stars.py +407 -0
- libaditya/stars/star-sign-boundaries +44 -0
- libaditya/stars/stellarium/__init__.py +6 -0
- libaditya/stars/stellarium/remote_control/__init__.py +22 -0
- libaditya/stars/stellarium/remote_control/location.py +82 -0
- libaditya/stars/stellarium/remote_control/locationsearch.py +35 -0
- libaditya/stars/stellarium/remote_control/main.py +165 -0
- libaditya/stars/stellarium/remote_control/objects.py +63 -0
- libaditya/stars/stellarium/remote_control/scripts.py +81 -0
- libaditya/stars/stellarium/remote_control/simbad.py +20 -0
- libaditya/stars/stellarium/remote_control/stelaction.py +31 -0
- libaditya/stars/stellarium/remote_control/stelproperty.py +30 -0
- libaditya/stars/stellarium/remote_control/view.py +85 -0
- libaditya/stars/stellarium/stellarium.py +92 -0
- libaditya/stars/the_stars.py +522 -0
- libaditya/stars/utilities.py +539 -0
- libaditya/utils.py +431 -0
- libaditya/write.py +67 -0
- libaditya-0.3.4.dist-info/METADATA +588 -0
- libaditya-0.3.4.dist-info/RECORD +131 -0
- libaditya-0.3.4.dist-info/WHEEL +5 -0
- libaditya-0.3.4.dist-info/licenses/LICENSE +661 -0
|
@@ -0,0 +1,588 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: libaditya
|
|
3
|
+
Version: 0.3.4
|
|
4
|
+
Summary: Astrological calculation library for Adityas. It is capable of calculating using tropical zodiac, tropical adityas, or sidereal signs. It can do any ayanamsa for naskhatras, including tropcial/sidereal nakshatras, or both sidereal or both tropical (right now, Vedanga Jyotisha ayanamsa). It has basic HD calculations in it; will include more soon. see README for more information on trying it.
|
|
5
|
+
Project-URL: Homepage, https://gitlab.com/j0sh4rp3/libaditya
|
|
6
|
+
Project-URL: Repository, https://gitlab.com/j0sh4rp3/libaditya
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Python: <=3.13
|
|
9
|
+
Requires-Dist: drawsvg>=2.4.1
|
|
10
|
+
Requires-Dist: metar>=1.11.0
|
|
11
|
+
Requires-Dist: more-itertools>=10.8.0
|
|
12
|
+
Requires-Dist: prettytable>=3.17.0
|
|
13
|
+
Requires-Dist: pyswisseph>=2.10.3.2
|
|
14
|
+
Requires-Dist: requests>=2.32.5
|
|
15
|
+
Requires-Dist: rich>=14.3.2
|
|
16
|
+
Requires-Dist: toml>=0.10.2
|
|
17
|
+
Provides-Extra: stellarium
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
20
|
+
# README
|
|
21
|
+
|
|
22
|
+
```libaditya``` is an astrological calculation library meant to be easily understood in terms
|
|
23
|
+
of what calculations are performed and how they are done.
|
|
24
|
+
|
|
25
|
+
My hope is that astrologers will be able to use this directly themselves. There is
|
|
26
|
+
obviously value in the various types of GUI programs and viewing a chart (though
|
|
27
|
+
```libaditya``` can draw some kinds of charts), there is also value in thinking about
|
|
28
|
+
astrology in a way that interacting with it through ```libaditya``` would help
|
|
29
|
+
cultivate. I hope to use it to create more "end-user-friendly" software, but I would
|
|
30
|
+
also like it to be possible for non-programmers to learn and use.
|
|
31
|
+
|
|
32
|
+
There is a companion program ```pyphemeris``` which is meant to serve as an easily
|
|
33
|
+
readable documentation on how the library works. Each function in ```libaditya``` itself is
|
|
34
|
+
meant to return the requested data in a way that can then be presented in some way.
|
|
35
|
+
Built into most ```libaditya``` classes are functions to represent themselves as text
|
|
36
|
+
through repr (__repr__) and ```print```, i.e., through ```__str__```. ```pyphemeris```
|
|
37
|
+
makes use of these in order to print the requested data to ```stdout```. I have also
|
|
38
|
+
started adding ```rich``` representations in ```libaditya``` itself, through ```.rich()``` methods.
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
# Table of Contents
|
|
42
|
+
|
|
43
|
+
- [README](#readme)
|
|
44
|
+
- [Table of Contents](#table-of-contents)
|
|
45
|
+
- [Installation](#installation)
|
|
46
|
+
- [Usage](#usage)
|
|
47
|
+
- [Defaults](#defaults)
|
|
48
|
+
- [Entering a Chart](#entering-a-chart)
|
|
49
|
+
- [Reading a Chart from a File](#reading-a-chart-from-a-file)
|
|
50
|
+
- [Chart Types and Options](#chart-types-and-options)
|
|
51
|
+
- [EphContext](#ephcontext)
|
|
52
|
+
- [Chart](#chart)
|
|
53
|
+
- [Ayanamsas](#ayanamsas)
|
|
54
|
+
- [Chart Systems](#chart-systems)
|
|
55
|
+
- [Dignity Example](#dignity-example)
|
|
56
|
+
- [Vargas](#vargas)
|
|
57
|
+
- [Human Design](#human-design)
|
|
58
|
+
- [Sarvatobhadra Chakra](#sarvatobhadra-chakra)
|
|
59
|
+
- [Cards of Truth](#cards-of-truth)
|
|
60
|
+
|
|
61
|
+
# Installation
|
|
62
|
+
|
|
63
|
+
```libaditya``` is now on pypi.org, so it can be installed with ```pip install
|
|
64
|
+
libaditya```...I think. I use Arch (btw) and they do python packages differently (I
|
|
65
|
+
think?...Python packaging is strange), so I use virtual environments through ```uv```.
|
|
66
|
+
|
|
67
|
+
In any case, at this point ```libaditya``` is not really mature enough to have a major
|
|
68
|
+
version, so if you are interested in testing it out or changing it or working on it, I
|
|
69
|
+
recommend installing is the following way, then you can pull changes as they come:
|
|
70
|
+
|
|
71
|
+
I recommend using ```uv``` to install ```libaditya```. On MacOS, you can ```brew install uv```
|
|
72
|
+
|
|
73
|
+
```sh
|
|
74
|
+
|
|
75
|
+
git clone https://gitlab.com/j0sh4rp3/libaditya
|
|
76
|
+
|
|
77
|
+
uv venv
|
|
78
|
+
source .venv/bin/activate
|
|
79
|
+
uv add . --dev
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
then, 1) if you dont change any of the code at all, then you can do ```git pull```, and
|
|
83
|
+
it should update from the gitlab repo. 2) if you make changes to libaditya, im not really sure with
|
|
84
|
+
how that would work in git from getting updates from libaditya and your own...
|
|
85
|
+
|
|
86
|
+
# Usage
|
|
87
|
+
|
|
88
|
+
then you can go into the Python ```repl``` using
|
|
89
|
+
```python```
|
|
90
|
+
|
|
91
|
+
then
|
|
92
|
+
```
|
|
93
|
+
>>> from libaditya import *
|
|
94
|
+
>>> dir()
|
|
95
|
+
['Chart', 'Chiron', 'Circle', 'Cusp', 'Cusps', 'Earth', 'EphContext', 'Jaimini', 'JulianDay', 'Jupiter', 'Ketu', 'Location', 'Longitude', 'Mars', 'Mercury', 'Moon', 'Nakshatra', 'Nakshatras', 'Names', 'Neptune', 'Panchanga', 'Planet', 'Planets', 'Pluto', 'PrettyTable', 'Rahu', 'Rashi', 'Saturn', 'Self', 'Sign', 'Signs', 'Sun', 'Uranus', 'Varga', 'Venus', 'Yamakoti', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'base_path', 'calc', 'calc_current', 'calc_vdasha', 'calculate_vimshottari_dasha', 'cardinal_points', 'chart', 'charts', 'const', 'constants', 'context', 'current_vimshottari_dasha', 'cusps', 'get_next_lord', 'jaimini', 'julian_day', 'kala', 'length', 'location', 'longitude', 'lord', 'lunar_new_year', 'nakshatras', 'next_dasha_lords', 'objects', 'os', 'panchanga', 'pathlib', 'pd', 'planet_dict', 'planets', 'print_calculated_vimshottari_dasha', 'print_cardinal_points', 'print_functions', 'print_next_dasha_level', 'print_vimshottari_dasha', 'printf', 'read', 'replace', 'signs', 'swe', 'utils', 'vargas', 'vimshottari']
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
you can then use ```help()```, e.g.:
|
|
99
|
+
```
|
|
100
|
+
>>> help(Chart)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
and this will print info for Chart. I am trying to add documentation to each of these
|
|
104
|
+
classes and function so that there is something helpuful printed.
|
|
105
|
+
|
|
106
|
+
## Defaults
|
|
107
|
+
|
|
108
|
+
Basically all values have defaults, so you can also do this
|
|
109
|
+
```
|
|
110
|
+
>>> c=Chart()
|
|
111
|
+
>>> c
|
|
112
|
+
>>> dir(c)
|
|
113
|
+
```
|
|
114
|
+
to see all of what Chart has and can do.
|
|
115
|
+
|
|
116
|
+
Chart is the main interface for any information, since Chart() is an instantiion of a
|
|
117
|
+
particular time and/or location. You can try ```sun=Sun()```, for instance. This works
|
|
118
|
+
and you can use it to explore Sun and what it can do, but in actual practice you want a
|
|
119
|
+
particular Sun, so you should use chart.rashi().planets().sun() and then whatever you
|
|
120
|
+
want to know, e.g., ```chart.rashi().planets().sun().dignity()```
|
|
121
|
+
|
|
122
|
+
Most of this is meant to be self explanatory. The one thing I need to document better is
|
|
123
|
+
how to input information. It is through EphContext, from libaditya.objects.context. It
|
|
124
|
+
takes a JulianDay and a Location, then a bunch of options.
|
|
125
|
+
|
|
126
|
+
## Entering a Chart
|
|
127
|
+
|
|
128
|
+
It is now possible to enter chart information "interactively", not really, which will
|
|
129
|
+
produce a ```.toml``` chart file.
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
>>> write.new_chart_interactive()
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
In order, it will expect:
|
|
136
|
+
```
|
|
137
|
+
name: str (optional)
|
|
138
|
+
date: MM/DD/YYYY
|
|
139
|
+
hour: (HH:MM(:SS)) (UTC)
|
|
140
|
+
utcoffset: float
|
|
141
|
+
lat: float, N is positive
|
|
142
|
+
long: float, E is positive
|
|
143
|
+
three formats: 1) decimal float
|
|
144
|
+
2) DD:MM(:SS)
|
|
145
|
+
// below is how Kala represents these in their .chtk file
|
|
146
|
+
3) 0DD(E/W)MM'SS(.SS)
|
|
147
|
+
3) DD(N/S)MM'SS(.SS)
|
|
148
|
+
note: lat and long can each individual be entered with any of these three formats
|
|
149
|
+
alt: float - meters
|
|
150
|
+
placename: str (optional)
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
The file that will be written is "name", all lowercase, with any spaces replaced by
|
|
154
|
+
"-". Call the function with argument ```outfile="your-filename.toml```" to specify the
|
|
155
|
+
filename.
|
|
156
|
+
|
|
157
|
+
The only software I know of that does astrology like this is Kala, produced by Ernst
|
|
158
|
+
Wilhelm and his wife; I believe she did the actual programming. I have been using it and
|
|
159
|
+
thus the ```.chtk``` format. It is now possible to convert between them. However, the
|
|
160
|
+
```.toml``` format has a place for altitude of the Location. The Kala format doesn't.
|
|
161
|
+
Right now ```read.chtk_to_toml``` will write it as 0..need to change that.
|
|
162
|
+
|
|
163
|
+
## Reading a Chart from a File
|
|
164
|
+
|
|
165
|
+
```read.toml_to_context()``` takes a ```toml``` file such as produced by
|
|
166
|
+
```write.new_chart_interactive()```. You can use that to instantiate a Chart:
|
|
167
|
+
```
|
|
168
|
+
>>> context = read.toml_to_context("chart.toml")
|
|
169
|
+
>>> chart = Chart(context)
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Likewise for ```.chtk``` files
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
>>> context = read.chtk_to_context(infile)
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
this returns an ```EphContext``` that you can then use to instantiate a Chart.
|
|
179
|
+
|
|
180
|
+
An ```EphContext``` also includes all the options for the chart.
|
|
181
|
+
|
|
182
|
+
## Chart Types and Options
|
|
183
|
+
|
|
184
|
+
Plus basic Python if you are new to this.
|
|
185
|
+
|
|
186
|
+
### EphContext
|
|
187
|
+
|
|
188
|
+
The first basic building block of ```libaditya``` is the ```EphContext```. This holds
|
|
189
|
+
all of the time, location, calculation option, and disply option information for the
|
|
190
|
+
entire chart. This is a dataclass, i.e., it is essentially information. It has all the
|
|
191
|
+
information that is needed to instantiate a ```Chart```.
|
|
192
|
+
|
|
193
|
+
In Python, "to instantiate" means to make a specific instance of. On the day of your
|
|
194
|
+
birth, the Sun was at a particular place in the sky, you were born at a particular
|
|
195
|
+
location. The time and place are necessary to "instatiate" you as a human. In Python,
|
|
196
|
+
there is such a thing as a generic "Human" object:
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
class Human:
|
|
200
|
+
|
|
201
|
+
def __init__(self, time, place):
|
|
202
|
+
self.time = time
|
|
203
|
+
self.place = place
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
That is how we define a "Human" object. To instantiate it, we need to say:
|
|
207
|
+
```
|
|
208
|
+
>>> josh = Human("15:08","Indiana")
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
```Human``` just has a time and place "in theory". ```josh``` has an actual time and
|
|
212
|
+
place (you can check them by entering ```josh.time```). (btw, that code is valid Python
|
|
213
|
+
code, which you can copy-paste and run in the ```repl```).
|
|
214
|
+
|
|
215
|
+
An ```EphContext``` allows us to instantiate a ```Chart```, because it knows all of the
|
|
216
|
+
information necessary to allow a specific ```Chart``` to come into existence.
|
|
217
|
+
|
|
218
|
+
TODO: write a more detailed section elsewhere going over ```EphContext``` in detail
|
|
219
|
+
|
|
220
|
+
### Chart
|
|
221
|
+
|
|
222
|
+
We have already seen how to instantiate a ```Chart```:
|
|
223
|
+
```
|
|
224
|
+
>>> c = Chart(EphContext()) /// which is the same as c = Chart()
|
|
225
|
+
```
|
|
226
|
+
this gives a ```Chart``` for right now at the default place, which is defined in the
|
|
227
|
+
definition of the class ```Location``` (```libaditya/objects/location.py```). The default
|
|
228
|
+
location is Yamakoti.
|
|
229
|
+
|
|
230
|
+
The other default chart options are all defined in ```libaditya/objects/context.py``` in
|
|
231
|
+
the class definition for ```EphContext```. The base default for ```libaditya``` is
|
|
232
|
+
tropical coordinates with the Aditya Circle (sign 1 = Dhata, 330 ecliptic longitude),
|
|
233
|
+
with ayanamsa 98 for nakshatras (see ayanamsas below).
|
|
234
|
+
|
|
235
|
+
Other default sets of chart options can be easily used with your instantiated ```Chart```:
|
|
236
|
+
```
|
|
237
|
+
>>> chart = Chart()
|
|
238
|
+
>>> chart /// this will show a string representation of the chart. at the top is a
|
|
239
|
+
/// header will all of the information and options used for that chart
|
|
240
|
+
>>> chart.tropical()
|
|
241
|
+
>>> chart.sidereal()
|
|
242
|
+
>>> chart.heliocentric()
|
|
243
|
+
>>> chart.now()
|
|
244
|
+
...
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
There are more than just those...see if you can find all of the possibilities.
|
|
248
|
+
|
|
249
|
+
```Chart().sidereal()``` defaults to ayanamsa 27, True Citra Paksha. You can choose a
|
|
250
|
+
different ayanamsa like this:
|
|
251
|
+
```
|
|
252
|
+
>>> chart.sidereal(ayanamsa=29)
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### Ayanamsas
|
|
256
|
+
|
|
257
|
+
```libaditya``` at the core is a wrapper for Swiss Ephemeris functions. Thus, it
|
|
258
|
+
supports any ayanamsa the Swiss Ephemeris does. There are also some custom ayanamsa that
|
|
259
|
+
```libaditya``` can use.
|
|
260
|
+
|
|
261
|
+
Check [here](https://www.astro.com/swisseph/swisseph.htm#_Toc112511738) for an
|
|
262
|
+
interesting and techincal discussion of ayanamsa by the programmers of the Swiss
|
|
263
|
+
Ephemeris.
|
|
264
|
+
|
|
265
|
+
Follows a list of all the Swiss Ephemeris ayanamsas. To set the ayanamsa in
|
|
266
|
+
```libaditya```, use the proper integer that is in the middle column below. You can also
|
|
267
|
+
use ```swe.NAME```, where ```NAME``` is what follows the integer in the proper row, but
|
|
268
|
+
with the ```SE_```. Thus, for "Fagan/Bradley", you can do
|
|
269
|
+
```chart.sidereal(ayanama=swe.SE_SIDM_FAGAN_BRADLEY)``` or
|
|
270
|
+
```chart.sidereal(ayanamsa=0)```.
|
|
271
|
+
|
|
272
|
+
From [here](https://www.astro.com/swisseph/swephprg.htm#_Toc112949016)
|
|
273
|
+
|
|
274
|
+
```
|
|
275
|
+
"Fagan/Bradley”, 0 SE_SIDM_FAGAN_BRADLEY
|
|
276
|
+
"Lahiri”, 1 SE_SIDM_LAHIRI
|
|
277
|
+
"De Luce”, 2 SE_SIDM_DELUCE
|
|
278
|
+
"Raman”, 3 SE_SIDM_RAMAN
|
|
279
|
+
"Usha/Shashi”, 4 SE_SIDM_USHASHASHI
|
|
280
|
+
"Krishnamurti”, 5 SE_SIDM_KRISHNAMURTI
|
|
281
|
+
"Djwhal Khul”, 6 SE_SIDM_DJWHAL_KHUL
|
|
282
|
+
"Yukteshwar”, 7 SE_SIDM_YUKTESHWAR
|
|
283
|
+
"J.N. Bhasin”, 8 SE_SIDM_JN_BHASIN
|
|
284
|
+
"Babylonian/Kugler 1”, 9 SE_SIDM_BABYL_KUGLER1
|
|
285
|
+
"Babylonian/Kugler 2”, 10 SE_SIDM_BABYL_KUGLER2
|
|
286
|
+
"Babylonian/Kugler 3”, 11 SE_SIDM_BABYL_KUGLER3
|
|
287
|
+
"Babylonian/Huber”, 12 SE_SIDM_BABYL_HUBER
|
|
288
|
+
"Babylonian/Eta Piscium”, 13 SE_SIDM_BABYL_ETPSC
|
|
289
|
+
"Babylonian/Aldebaran = 15 Tau”, 14 SE_SIDM_ALDEBARAN_15TAU
|
|
290
|
+
"Hipparchos”, 15 SE_SIDM_HIPPARCHOS
|
|
291
|
+
"Sassanian”, 16 SE_SIDM_SASSANIAN
|
|
292
|
+
"Galact. Center = 0 Sag”, 17 SE_SIDM_GALCENT_0SAG
|
|
293
|
+
"J2000”, 18 SE_SIDM_J2000
|
|
294
|
+
"J1900”, 19 SE_SIDM_J1900
|
|
295
|
+
"B1950”, 20 SE_SIDM_B1950
|
|
296
|
+
"Suryasiddhanta”, 21 SE_SIDM_SURYASIDDHANTA
|
|
297
|
+
"Suryasiddhanta, mean Sun”, 22 SE_SIDM_SURYASIDDHANTA_MSUN
|
|
298
|
+
"Aryabhata”, 23 SE_SIDM_ARYABHATA
|
|
299
|
+
"Aryabhata, mean Sun”, 24 SE_SIDM_ARYABHATA_MSUN
|
|
300
|
+
"SS Revati”, 25 SE_SIDM_SS_REVATI
|
|
301
|
+
"SS Citra”, 26 SE_SIDM_SS_CITRA
|
|
302
|
+
"True Citra”, 27 SE_SIDM_TRUE_CITRA
|
|
303
|
+
"True Revati”, 28 SE_SIDM_TRUE_REVATI
|
|
304
|
+
"True Pushya (PVRN Rao) ”, 29 SE_SIDM_TRUE_PUSHYA
|
|
305
|
+
"Galactic Center (Gil Brand) ”, 30 SE_SIDM_GALCENT_RGBRAND
|
|
306
|
+
"Galactic Equator (IAU1958) ”, 31 SE_SIDM_GALEQU_IAU1958
|
|
307
|
+
"Galactic Equator”, 32 SE_SIDM_GALEQU_TRUE
|
|
308
|
+
"Galactic Equator mid-Mula”, 33 SE_SIDM_GALEQU_MULA
|
|
309
|
+
"Skydram (Mardyks) ”, 34 SE_SIDM_GALALIGN_MARDYKS
|
|
310
|
+
"True Mula (Chandra Hari) ”, 35 SE_SIDM_TRUE_MULA
|
|
311
|
+
"Dhruva/Gal.Center/Mula (Wilhelm) ”, 36 SE_SIDM_GALCENT_MULA_WILHELM
|
|
312
|
+
"Aryabhata 522”, 37 SE_SIDM_ARYABHATA_522
|
|
313
|
+
"Babylonian/Britton”, 38 SE_SIDM_BABYL_BRITTON
|
|
314
|
+
"\"Vedic\"/Sheoran 39 SE_SIDM_TRUE_SHEORAN
|
|
315
|
+
"Cochrane (Gal.Center = 0 Cap)" 40 SE_SIDM_GALCENT_COCHRANE
|
|
316
|
+
"Galactic Equator (Fiorenza)", 41 SE_SIDM_GALEQU_FIORENZA
|
|
317
|
+
"Vettius Valens", 42 SE_SIDM_VALENS_MOON
|
|
318
|
+
"Lahiri 1940", 43 SE_SIDM_LAHIRI_1940
|
|
319
|
+
"Lahiri VP285", 44 SE_SIDM_LAHIRI_VP285
|
|
320
|
+
"Krishnamurti-Senthilathiban", 45 SE_SIDM_KRISHNAMURTI_VP291
|
|
321
|
+
"Lahiri ICRC", 46 SE_SIDM_LAHIRI_ICRC
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
TODO: custom ayanamsas in ```libaditya```
|
|
325
|
+
|
|
326
|
+
### Chart Systems
|
|
327
|
+
|
|
328
|
+
TODO: explain how options for these are managed in ```EphContext```.
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
## Dignity example
|
|
332
|
+
|
|
333
|
+
for example
|
|
334
|
+
|
|
335
|
+
```
|
|
336
|
+
>>> rashi.dignities()
|
|
337
|
+
['GF', 'N', 'GF', 'OH', 'EX', 'N', 'MT']
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
```
|
|
341
|
+
>>> help(rashi.dignities)
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
you will see a help screen where you can read
|
|
345
|
+
|
|
346
|
+
```
|
|
347
|
+
dignities() -> [<class 'str'>]
|
|
348
|
+
return a list of dignities in the natural order
|
|
349
|
+
Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
so is returns a list of strings "EX", "DB", "GF", etc. for all the dignities of the
|
|
353
|
+
planets in normal Vedic order. So that is the data; it is use to you how to find it.
|
|
354
|
+
|
|
355
|
+
in libaditya.printf (which you should be able to use as printf if you did ```from
|
|
356
|
+
libaditya import *```), there are print functions for some things.
|
|
357
|
+
|
|
358
|
+
for example
|
|
359
|
+
```
|
|
360
|
+
printf.print_dignity_table(chart.rashi().dignities())
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
you can get a varga with ```.varga(n)```
|
|
364
|
+
|
|
365
|
+
get dignities in the navamsha
|
|
366
|
+
```
|
|
367
|
+
printf.print_dignity_table(chart.varga(9).dignities())
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
to find the chara karakas
|
|
371
|
+
```
|
|
372
|
+
printf.print_jaimini_karakas(chart.rashi().planets().jaimini_karakas())
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
so then you can find the AK in the d9
|
|
376
|
+
```
|
|
377
|
+
ak = chart.rashi().planets().jaimini_karakas()[0]
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
```Planets.jaimini_karakas()``` return a list of ```Planet``` classes. So if the AK is
|
|
381
|
+
Venus, then ```ak``` would the ```Venus``` class of the Venus of the Rashi chart.
|
|
382
|
+
|
|
383
|
+
get svamsha
|
|
384
|
+
```
|
|
385
|
+
svamsha = chart.varga(9).signs()[ak.sign()]
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
```Varga.signs()``` returns a dictionary, where the keys are integers 1-12, which
|
|
389
|
+
correspond to signs 1-12. This is true regardless of the system we are using. The system
|
|
390
|
+
is set by the ```sysflg``` and by the ```circle=Circle```. ```sysflg``` can be tropical
|
|
391
|
+
or sidereal (footnote: some others that aren't well implemeneted yet, e.g., helio, bary,
|
|
392
|
+
draconic, true sidereal) ```circle=Circle.ZODIAC``` or ```circle=Circle.ADITYA```. In
|
|
393
|
+
the former, sign 1 = Aries (whether tropical or sidereal). In the later, sign 1 = Dhata,
|
|
394
|
+
which is at 330 tropical ecliptic longitude.
|
|
395
|
+
|
|
396
|
+
This takes care of all necessary tropical, Aditya, sidereal calculations.
|
|
397
|
+
|
|
398
|
+
When accessed through ```Chart()``` all of these works as given by the ```EphContext```
|
|
399
|
+
parameters ```sysflg``` and ```circle``` with the options as just explained, and of
|
|
400
|
+
course ```ayanamsa```.
|
|
401
|
+
|
|
402
|
+
To see all the options in ```EphContext```:
|
|
403
|
+
```
|
|
404
|
+
help(EphContext)
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
# Vargas
|
|
408
|
+
|
|
409
|
+
Vargas can be accessed using ```Chart().varga(n)```.
|
|
410
|
+
|
|
411
|
+
If ```n``` is positive, the corresponding parivritti varga of that number will be
|
|
412
|
+
produced.
|
|
413
|
+
|
|
414
|
+
Other vargas will have negative numbers to indicate them. Here are the vargas currently
|
|
415
|
+
implemeneted:
|
|
416
|
+
```
|
|
417
|
+
-2 Hora
|
|
418
|
+
-3 Drekkana
|
|
419
|
+
-4 Chaturthamsha
|
|
420
|
+
-10 Dashamsha
|
|
421
|
+
-100 Dashamsha with Even Rashis going in reverse
|
|
422
|
+
-12 Dvadashamsha
|
|
423
|
+
-16 Shodashamsha
|
|
424
|
+
-20 Vimshamsha
|
|
425
|
+
-24 Parashara Chaturvimshamsha
|
|
426
|
+
-240 Siddhamsha
|
|
427
|
+
-27 Bhamsha
|
|
428
|
+
-40 Khdavedamsha
|
|
429
|
+
-45 Akshavedamsha
|
|
430
|
+
-60 Shashtyamsha
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
# Human Design
|
|
434
|
+
|
|
435
|
+
```libaditya``` currently has basic Human Design support and can draw Human Design natal
|
|
436
|
+
bodygraphs for a Chart. It can also disply all of the relevant information about the
|
|
437
|
+
Human Design properties of the planets, both conscious and unconscious, e.g., their
|
|
438
|
+
gate, line, etc.
|
|
439
|
+
|
|
440
|
+
How to get Human Design information about the planets:
|
|
441
|
+
```
|
|
442
|
+
>>> c = Chart()
|
|
443
|
+
>>> hdp = c.bodygraph().planets()
|
|
444
|
+
>>> print(hdp)
|
|
445
|
+
// c.bodygraph().(un)conscious_planets() returns a Planets class of all the Planet-s
|
|
446
|
+
>>> cp = c.bodygraph().conscious_planets().hd_planets()
|
|
447
|
+
>>> print(cp)
|
|
448
|
+
>>> ucp = c.bodygraph().unconscious_planets().hd_planets()
|
|
449
|
+
>>> print(ucp)
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
To draw a bodygraph:
|
|
453
|
+
```
|
|
454
|
+
>>> c.bodygraph().draw_svg(outfile="my-bodygraph.svg")
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
A reminder if you are new to Python: if you want to know can come after ```c.bodygraph()```,
|
|
458
|
+
then assign that object to a variable, then you can inspect it using ```dir()``` or tab
|
|
459
|
+
completion:
|
|
460
|
+
```
|
|
461
|
+
>>> bg = c.bodygraph()
|
|
462
|
+
>>> dir(bg)
|
|
463
|
+
>>> bg.(<TAB><TAB>)
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
TODO:
|
|
467
|
+
|
|
468
|
+
add Variables, the "arrows" that you can see on some bodygraphs on both sides of the
|
|
469
|
+
head center. also, all of the information that also comes from the color, tone, and base
|
|
470
|
+
from other planets, e.g., diet, environment, etc.
|
|
471
|
+
all of the calculations are necessary, i just need to figure out what thing specifies
|
|
472
|
+
what and write that into ```libaditya```.
|
|
473
|
+
|
|
474
|
+
# Sarvatobhadra Chakra
|
|
475
|
+
|
|
476
|
+
An early version of ```libaditya``` had a program that would draw a sarvatobhadra
|
|
477
|
+
chakra. I have started moving that over to work with ```libaditya```, so that any chart
|
|
478
|
+
will be able to draw a sarvatobhadra chakra for itself.
|
|
479
|
+
|
|
480
|
+
Right now, it only draws the base chart. When this is fully implemented, you will be
|
|
481
|
+
able to do something like ```chart.draw_sbc()``` and it will draw one for you.
|
|
482
|
+
```
|
|
483
|
+
/// english_letters: bool for whether or not to include small English equivalents of the
|
|
484
|
+
/// Sanskrit letters
|
|
485
|
+
/// right now, .draw_sbc() drawing a Drawing object from drawsvg
|
|
486
|
+
>>> d = c.rashi().draw_sbc(english_letters=True)
|
|
487
|
+
>>> d.save_svg("sbc-base.svg")
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
# Cards of Truth
|
|
491
|
+
|
|
492
|
+
I have just started an implementation of Cards of Truth in ```libaditya```.
|
|
493
|
+
|
|
494
|
+
Currently, it can do birth spreads and year spreads:
|
|
495
|
+
```
|
|
496
|
+
>>> c = Chart()
|
|
497
|
+
>>> births = c.cot().birth_spread()
|
|
498
|
+
/// gives current year spread
|
|
499
|
+
>>> thisys = c.cot().year_spread()
|
|
500
|
+
/// get year spreat at age 28
|
|
501
|
+
>>> ys28 = c.cot().year_spread(28)
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
This returns a ```Spread``` object. ```Spread``` currently does not have a ```__str__```
|
|
505
|
+
or a ```__repr__```, but you can view it using ```rich```:
|
|
506
|
+
```
|
|
507
|
+
>>> births.rich()
|
|
508
|
+
>>> thisys.rich()
|
|
509
|
+
>>> ys28.rich()
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
If you are new to Python, but know Cards of Truth, check out some of the objects
|
|
513
|
+
to see what further information you can get:
|
|
514
|
+
```
|
|
515
|
+
>>> cot = c.cot()
|
|
516
|
+
>>> cot
|
|
517
|
+
<libaditya.cards.cards_of_truth.CardsOfTruth object at 0x7f7547f86250>
|
|
518
|
+
>>> cot.(<TAB><TAB>)
|
|
519
|
+
cot.Spread( cot.jack_quadration()
|
|
520
|
+
cot.birth_card() cot.king_quadration()
|
|
521
|
+
cot.birth_spread() cot.master()
|
|
522
|
+
cot.context cot.quadrate(
|
|
523
|
+
cot.deck() cot.quadraten(
|
|
524
|
+
cot.get_birth_spread_with_card_in_position( cot.queen_quadration()
|
|
525
|
+
cot.get_birthspread_from_quadration( cot.year_spread(
|
|
526
|
+
cot.getbspreadwxcfromquad(
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
Notice that some of these names end with ```()```, some with ```(``` and some with
|
|
530
|
+
nothing. Those ending with ```()``` are methods that can be called with no arguments,
|
|
531
|
+
and in fact do not have any arguments. So by the list, you know you can properly call:
|
|
532
|
+
```
|
|
533
|
+
>>> cot.birth_card()
|
|
534
|
+
'KD'
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
The names with nothing are variables or objects in their own right. Check them out:
|
|
538
|
+
```
|
|
539
|
+
>>> cot.context
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
The names with ```(``` can take at least one argument, but may or may not need to have
|
|
543
|
+
one or more arguments. You can always try to call them without any (their argument(s)
|
|
544
|
+
may have defaults).
|
|
545
|
+
```
|
|
546
|
+
>>> cot.Spread()
|
|
547
|
+
Traceback (most recent call last):
|
|
548
|
+
File "<python-input-10>", line 1, in <module>
|
|
549
|
+
ja.cot().Spread()
|
|
550
|
+
~~~~~~~~~~~~~~~^^
|
|
551
|
+
TypeError: CardsOfTruth.Spread.__init__() missing 2 required positional arguments: 'spread_list' and 'master'
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
And we see that didn't really work. Python has a built-in documentation feature. Under
|
|
555
|
+
each class/function/method definition, you can put multi-line comments surrounded by
|
|
556
|
+
triple quotes (""") at beginning and end. I have been trying to put documentation into
|
|
557
|
+
these. With this, you can look up help in the Python ```repl``` itself:
|
|
558
|
+
```
|
|
559
|
+
>>> help(cot.Spread)
|
|
560
|
+
```
|
|
561
|
+
|
|
562
|
+
The first line says that ```cot.Spread``` "initializes a Spread object; the most important argument is spread_list, which is the list of numbers presenting the cards of the spread".
|
|
563
|
+
|
|
564
|
+
At the most fundamental layer, ```libaditya``` represents the cards as a list of
|
|
565
|
+
two-letter reprentations of the cards, starting with "AH", "Ace of Hearts" and ending
|
|
566
|
+
with "KS", "King of Spades". Consequently, the list index of card also represents that
|
|
567
|
+
card. Python lists are 0-indexed, meaning the first element of the list is accessed by
|
|
568
|
+
```ls[0]```.
|
|
569
|
+
|
|
570
|
+
You can see these representations since they live in
|
|
571
|
+
```libaditya/cards/cards_constants.py```. You can access them from the ```repl```:
|
|
572
|
+
```
|
|
573
|
+
>>> cards_constants.cards
|
|
574
|
+
>>> cards_constants.jackquad
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
# Projects
|
|
578
|
+
|
|
579
|
+
implement all swe functions
|
|
580
|
+
allow of swe functions to be used easily in an intuitive way through Chart interface
|
|
581
|
+
|
|
582
|
+
swe,
|
|
583
|
+
cards of truth,
|
|
584
|
+
human design (drawing bodygraphs),
|
|
585
|
+
true sidereal =>
|
|
586
|
+
fixed star nakshatras - spherical nakshatras?,
|
|
587
|
+
sbc,
|
|
588
|
+
swisseph cffi? take a good look at pyswisseph and see if it really needs to be replaced
|