mesomath 2.1.1__tar.gz → 2.2.0__tar.gz

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.
Files changed (128) hide show
  1. mesomath-2.2.0/.webui_secret_key +1 -0
  2. {mesomath-2.1.1 → mesomath-2.2.0}/CHANGELOG.md +25 -0
  3. {mesomath-2.1.1 → mesomath-2.2.0}/PKG-INFO +108 -26
  4. mesomath-2.2.0/README.md +253 -0
  5. {mesomath-2.1.1 → mesomath-2.2.0}/docs/source/api_mesotimes.rst +11 -1
  6. {mesomath-2.1.1 → mesomath-2.2.0}/docs/source/intro.md +4 -3
  7. {mesomath-2.1.1 → mesomath-2.2.0}/docs/source/references.md +27 -1
  8. {mesomath-2.1.1 → mesomath-2.2.0}/docs/source/tutorial.md +445 -11
  9. {mesomath-2.1.1 → mesomath-2.2.0}/pyproject.toml +6 -2
  10. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/__about__.py +1 -1
  11. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/__init__.py +3 -0
  12. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/babcalc.py +8 -0
  13. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/ibabcalc.py +6 -0
  14. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesotimes/__init__.py +3 -0
  15. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesotimes/almanac.py +5 -5
  16. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesotimes/astronomy/__init__.py +5 -0
  17. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesotimes/astronomy/core.py +208 -26
  18. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesotimes/astronomy/moon.py +33 -32
  19. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesotimes/astronomy/planets/base.py +8 -8
  20. mesomath-2.2.0/src/mesotimes/astronomy/planets/finder.py +191 -0
  21. mesomath-2.2.0/src/mesotimes/astronomy/stars.py +570 -0
  22. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesotimes/astronomy/sun.py +9 -9
  23. mesomath-2.2.0/src/mesotimes/astronomy/visibility.py +478 -0
  24. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesotimes/babday.py +1 -1
  25. mesomath-2.2.0/src/mesotimes/constants.py +514 -0
  26. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesotimes/date.py +105 -64
  27. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesotimes/proleptic.py +2 -2
  28. {mesomath-2.1.1 → mesomath-2.2.0}/tests/astronomy/test_moon.py +2 -2
  29. mesomath-2.2.0/tests/astronomy/test_phenomena.py +70 -0
  30. {mesomath-2.1.1 → mesomath-2.2.0}/tests/astronomy/test_planets.py +2 -2
  31. mesomath-2.1.1/README.md +0 -171
  32. mesomath-2.1.1/notebooks/test_cunei.py +0 -162
  33. mesomath-2.1.1/src/mesotimes/astronomy/planets/finder.py +0 -163
  34. mesomath-2.1.1/src/mesotimes/constants.py +0 -41
  35. {mesomath-2.1.1 → mesomath-2.2.0}/.readthedocs.yaml +0 -0
  36. {mesomath-2.1.1 → mesomath-2.2.0}/LICENSE +0 -0
  37. {mesomath-2.1.1 → mesomath-2.2.0}/Makefile +0 -0
  38. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/Kish_lun.csv +0 -0
  39. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/Kish_sol.csv +0 -0
  40. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/buildDB.sh +0 -0
  41. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/createDB.sql +0 -0
  42. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/normalize_pd.py +0 -0
  43. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K001.csv +0 -0
  44. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K002.csv +0 -0
  45. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K003.csv +0 -0
  46. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K004.csv +0 -0
  47. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K005.csv +0 -0
  48. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K006.csv +0 -0
  49. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K007.csv +0 -0
  50. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K008.csv +0 -0
  51. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K009.csv +0 -0
  52. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K010.csv +0 -0
  53. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K011.csv +0 -0
  54. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K012.csv +0 -0
  55. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K013.csv +0 -0
  56. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K014.csv +0 -0
  57. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K015.csv +0 -0
  58. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K016.csv +0 -0
  59. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K017.csv +0 -0
  60. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/K018.csv +0 -0
  61. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/kings.csv +0 -0
  62. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/seleuc1.csv +0 -0
  63. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/orig/seleuc2.csv +0 -0
  64. {mesomath-2.1.1 → mesomath-2.2.0}/db_data/PD71/process_allkings.py +0 -0
  65. {mesomath-2.1.1 → mesomath-2.2.0}/docs/Makefile +0 -0
  66. {mesomath-2.1.1 → mesomath-2.2.0}/docs/make.bat +0 -0
  67. {mesomath-2.1.1 → mesomath-2.2.0}/docs/source/_static/custom.css +0 -0
  68. {mesomath-2.1.1 → mesomath-2.2.0}/docs/source/_static/favicon.svg +0 -0
  69. {mesomath-2.1.1 → mesomath-2.2.0}/docs/source/_static/mesomath.png +0 -0
  70. {mesomath-2.1.1 → mesomath-2.2.0}/docs/source/_static/mesomath.svg +0 -0
  71. {mesomath-2.1.1 → mesomath-2.2.0}/docs/source/_static/mesomath2.png +0 -0
  72. {mesomath-2.1.1 → mesomath-2.2.0}/docs/source/api_mesomath.rst +0 -0
  73. {mesomath-2.1.1 → mesomath-2.2.0}/docs/source/changelog.md +0 -0
  74. {mesomath-2.1.1 → mesomath-2.2.0}/docs/source/conf.py +0 -0
  75. {mesomath-2.1.1 → mesomath-2.2.0}/docs/source/index.md +0 -0
  76. {mesomath-2.1.1 → mesomath-2.2.0}/docs/source/install.md +0 -0
  77. {mesomath-2.1.1 → mesomath-2.2.0}/docs/source/progs/apps.rst +0 -0
  78. {mesomath-2.1.1 → mesomath-2.2.0}/notebooks/BabN.py +0 -0
  79. {mesomath-2.1.1 → mesomath-2.2.0}/notebooks/ChronDate.py +0 -0
  80. {mesomath-2.1.1 → mesomath-2.2.0}/notebooks/ChronDate2.py +0 -0
  81. {mesomath-2.1.1 → mesomath-2.2.0}/notebooks/Melville.py +0 -0
  82. {mesomath-2.1.1 → mesomath-2.2.0}/notebooks/Metrology.py +0 -0
  83. {mesomath-2.1.1 → mesomath-2.2.0}/notebooks/Plimpton322.py +0 -0
  84. {mesomath-2.1.1 → mesomath-2.2.0}/notebooks/babcalc.py +0 -0
  85. {mesomath-2.1.1 → mesomath-2.2.0}/notebooks/economics.py +0 -0
  86. {mesomath-2.1.1 → mesomath-2.2.0}/notebooks/extension.py +0 -0
  87. {mesomath-2.1.1 → mesomath-2.2.0}/notebooks/fractions.py +0 -0
  88. {mesomath-2.1.1 → mesomath-2.2.0}/notebooks/hamming.py +0 -0
  89. {mesomath-2.1.1 → mesomath-2.2.0}/notebooks/index.py +0 -0
  90. {mesomath-2.1.1 → mesomath-2.2.0}/notebooks/lookup.py +0 -0
  91. {mesomath-2.1.1 → mesomath-2.2.0}/notebooks/metrolist.py +0 -0
  92. {mesomath-2.1.1 → mesomath-2.2.0}/notebooks/multable.py +0 -0
  93. {mesomath-2.1.1 → mesomath-2.2.0}/notebooks/squares.py +0 -0
  94. {mesomath-2.1.1 → mesomath-2.2.0}/requirements.txt +0 -0
  95. {mesomath-2.1.1 → mesomath-2.2.0}/requirements_rtd.txt +0 -0
  96. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/babf.py +0 -0
  97. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/babn.py +0 -0
  98. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/data/proust/__init__.py +0 -0
  99. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/data/proust/capacities.py +0 -0
  100. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/data/proust/lengths.py +0 -0
  101. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/data/proust/surfaces.py +0 -0
  102. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/data/proust/weights.py +0 -0
  103. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/glyphs.py +0 -0
  104. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/hamming.py +0 -0
  105. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/metrology_presets.py +0 -0
  106. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/nb_utils.py +0 -0
  107. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/npvs.py +0 -0
  108. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/parser/__init__.py +0 -0
  109. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/parser/interpreter.py +0 -0
  110. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/utils.py +0 -0
  111. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesomath/wisdom.py +0 -0
  112. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesotimes/__about__.py +0 -0
  113. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesotimes/astronomy/planets/__init__.py +0 -0
  114. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesotimes/astronomy/planets/inferiors.py +0 -0
  115. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesotimes/astronomy/planets/superiors.py +0 -0
  116. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesotimes/calendars.py +0 -0
  117. {mesomath-2.1.1 → mesomath-2.2.0}/src/mesotimes/db/mesotimes.sqlite +0 -0
  118. {mesomath-2.1.1 → mesomath-2.2.0}/tests/__init__.py +0 -0
  119. {mesomath-2.1.1 → mesomath-2.2.0}/tests/astronomy/__init__.py +0 -0
  120. {mesomath-2.1.1 → mesomath-2.2.0}/tests/astronomy/test_chrondate.py +0 -0
  121. {mesomath-2.1.1 → mesomath-2.2.0}/tests/astronomy/test_sun.py +0 -0
  122. {mesomath-2.1.1 → mesomath-2.2.0}/tests/test_babf.py +0 -0
  123. {mesomath-2.1.1 → mesomath-2.2.0}/tests/test_babn.py +0 -0
  124. {mesomath-2.1.1 → mesomath-2.2.0}/tests/test_babn2.py +0 -0
  125. {mesomath-2.1.1 → mesomath-2.2.0}/tests/test_blen.py +0 -0
  126. {mesomath-2.1.1 → mesomath-2.2.0}/tests/test_bsur.py +0 -0
  127. {mesomath-2.1.1 → mesomath-2.2.0}/tests/test_npvs.py +0 -0
  128. {mesomath-2.1.1 → mesomath-2.2.0}/tests/test_parser.py +0 -0
@@ -0,0 +1 @@
1
+ 8jwRclFzu7ELjH+s
@@ -1,3 +1,28 @@
1
+ ## [2.2.0] - 2026-06-29
2
+
3
+ ### Added
4
+ * **User-defined locations**: Added support for custom archaeological sites and observation platforms by allowing user-defined coordinate overrides (latitude, longitude, and altitude) in core astronomical functions.
5
+ * **`mesotimes.astronomy.stars` module**: Introduced the `BabStar` class, enabling high-precision tracking of ancient stars. Includes native catalog parsing (`from_catalog`), automatic extraction of photometric magnitudes ($V$, $B-V$), and geometric event finders (`search_phenomena`).
6
+ * **`mesotimes.astronomy.visibility` module**: Implemented a comprehensive twilight visibility simulation framework. Features 3D scattering models for crepuscular sky brightness, customizable air-mass functions (Pickering, Kasten-Young), and atmospheric extinction profiling (`scan_twilight_visibility`).
7
+ * **Object-Oriented Analysis Interface**: Integrated `twilight_tomography` directly into `BabStar`, allowing researchers to generate multi-day visual contrast time-series reports with a single method call.
8
+
9
+ ---
10
+
11
+ ## [2.1.2] - 2026-06-07
12
+
13
+ ### Fixed
14
+ * **Bug in date.py**: Chrondate.day_ephemeris() returned the day of the season based only on the Julian calendar. Fixed.
15
+
16
+ ---
17
+
18
+
19
+ ## [2.1.1] - 2026-06-06
20
+
21
+ ### Fixed
22
+ * **README.md**: Incorrect badges. Fixed.
23
+
24
+ ---
25
+
1
26
 
2
27
  ## [2.1.0] - 2026-06-06
3
28
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mesomath
3
- Version: 2.1.1
3
+ Version: 2.2.0
4
4
  Summary: A robust sexagesimal, metrological, and astronomical engine for Babylonian mathematics. From the Eduba to the Jupyter Notebook.
5
5
  Project-URL: Changelog, https://github.com/jccsvq/mesomath/blob/main/CHANGELOG.md
6
6
  Project-URL: Documentation, https://mesomath.readthedocs.io/
@@ -30,14 +30,13 @@ Requires-Python: >=3.11
30
30
  Requires-Dist: ipython>=9.0.0
31
31
  Requires-Dist: juliandate
32
32
  Requires-Dist: parsimonious==0.11.0
33
- Requires-Dist: pymeeus>=0.5.12
33
+ Requires-Dist: pymeeus==0.5.12
34
34
  Requires-Dist: traitlets>=5.0.0
35
35
  Requires-Dist: typing-extensions>=4.0.0
36
36
  Requires-Dist: wcwidth
37
37
  Description-Content-Type: text/markdown
38
38
 
39
-
40
- # 🏺 MesoMath v2.1.0
39
+ # 🏺 MesoMath v2.2
41
40
  **The Mesopotamian Computational Engine for Python.**
42
41
 
43
42
  [![PyPI - Version](https://img.shields.io/pypi/v/mesomath.svg)](https://pypi.org/project/mesomath/)
@@ -47,19 +46,36 @@ Description-Content-Type: text/markdown
47
46
  [![Documentation Status](https://readthedocs.org/projects/mesomath/badge/?version=latest)](https://mesomath.readthedocs.io)
48
47
  [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jccsvq/mesomath-nb/main?labpath=notebooks%2Findex.ipynb)
49
48
 
50
- MesoMath is a high-precision computational framework engineered for the rigorous study of ancient Mesopotamian mathematics, metrology, chronology, timekeeping, and archaeoastronomy. It provides native command-line environments (CLI), Jupyter integration, and authentic epigraphic support (Old Babylonian transliteration and Unicode cuneiform rendering).
49
+ MesoMath is a high-precision computational framework engineered for the rigorous study of ancient Mesopotamian:
50
+
51
+ * **Mathematics**
52
+ * Sexagesimal integer arithmetic (absolute and floating)
53
+ * Fraction arithmetic
54
+ * **Metrology**
55
+ * Old Babylonian Period metrology (length, surface, volume, weight, capacity, and bricks)
56
+ * User-extensible framework for other historical periods
57
+ * NPVS Systems S, G, C, and K
58
+ * Socio-economic applications
59
+ * **Chronology**
60
+ * Based on Parker and Dubberstein (1971) for the period 626 B.C. – A.D. 75
61
+ * *Proleptic* lunar calendar engine for other historical eras
62
+ * **Timekeeping & Archaeoastronomy**
63
+ * Lunar and Planetary Ephemerides
64
+ * Heliacal and Acronychal Rising of stars (Atmospheric 3D scattering models)
65
+ * Built-in catalog of relevant Mesopotamian astronomical sites
66
+ * Built-in catalog of critical historical stars
67
+ * Custom user-defined sites and stars support
68
+
69
+ MesoMath provides:
70
+ * **Native Command-Line Environments (CLI)**: `babcalc` (basic) and `ibabcalc` (full-featured interactive shell).
71
+ * **Jupyter Notebook Integration** for reproducible research.
72
+ * **Authentic Epigraphic Support**: Old Babylonian transliteration standards and Unicode cuneiform rendering.
51
73
 
52
74
  ---
53
75
 
54
- ## ✨ What's New in v2.1.0?
55
-
56
- MesoMath has evolved into a unified metapackage, structurally decoupling core arithmetic from chronological anchoring systems:
76
+ ## ✨ What's New in v2.2.0?
57
77
 
58
- * **`mesomath` Core**: Introduces the **`BabF`** class for native sexagesimal (base-60) fractional arithmetic without floating-point rounding artifacts.
59
- * **`mesotimes` Subsystem**: A dedicated historical engine driving:
60
- * **Empirical & Proleptic Chronology**: Seamless alignment with historical cuneiform registers.
61
- * **Elastic Timekeeping**: Shifting horizon-based day boundaries (Sunset-to-Sunset) and dynamic nocturnal watches (*maṣṣarātu*).
62
- * **Archaeoastronomy**: High-fidelity celestial positioning and eclipse matrices.
78
+ MesoMath v2.2.0 introduces the `BabStar` class, enabling high-fidelity search, physical contrast tracking, and multi-day **Twilight Tomography** for Heliacal and Acronychal stellar phenomena.
63
79
 
64
80
  ---
65
81
 
@@ -109,7 +125,7 @@ from mesomath import Bcap
109
125
 
110
126
  vol = Bcap('3 bariga 2 ban')
111
127
  print(vol.translit) # Output: '3(barig) 2(ban2) še'
112
- print(vol.cuneiform) # Output: 𒑗 𒑐 𒊺
128
+ print(vol.cuneiform) # Output: itri samot 𒊺
113
129
 
114
130
  ```
115
131
 
@@ -135,7 +151,7 @@ date.day_ephemeris(city='Susa')
135
151
 
136
152
  ```text
137
153
  =================================================================
138
- MESOPOTAMIAN DAILY EPHEMERIS: SUSA
154
+ MESOPOTAMIAN DAILY EPHEMERIS: SUSA
139
155
  =================================================================
140
156
  Julian Day: 1583129.5 | Civil Calendar: Julian (-378/5/17)
141
157
  Chronology: Year 26 of Artaxerxes II, month: 2 (Aiaru), day: 14
@@ -150,14 +166,13 @@ date.day_ephemeris(city='Susa')
150
166
  [End-Month] KUR: -894.34 min (Dawn crescent disappearance)
151
167
  -----------------------------------------------------------------
152
168
  PLANETARY VISIBILITY ( Twilight vs. Arc of Vision ):
153
- * Mercury -> Invisible / Glare (Required Av: 12.0°)
169
+ * Mercury -> Invisible / Glare (Required Av: 12.0°)
154
170
  * Venus -> VISIBLE (Morning Star) (Required Av: 6.0°)
155
171
  * Mars -> VISIBLE (Morning Star) (Required Av: 14.0°)
156
172
  * Jupiter -> VISIBLE (Evening Star) (Required Av: 9.0°)
157
173
  * Saturn -> VISIBLE (Evening Star) (Required Av: 11.0°)
158
174
  =================================================================
159
175
 
160
-
161
176
  ```
162
177
 
163
178
  ```python
@@ -168,24 +183,91 @@ date.night_at_a_glance(city='Susa')
168
183
 
169
184
  ```text
170
185
  ===================================================================
171
- NIGHT AT A GLANCE: SUSA (-378-05-17)
186
+ Night at a Glance: Susa (-378-05-17)
172
187
  ===================================================================
173
188
  UT Hours: 09 11 13 15 17 19 21 23 01 03 05 07 09
174
189
  Local H.: 12 14 16 18 20 22 00 02 04 06 08 10 12
175
190
  -------------------------------------------------------------------
176
191
  Sky/Sun : #############::. .::###############
177
192
  -------------------------------------------------------------------
178
- Moon : =====================
193
+ Moon : =====================
179
194
  -------------------------------------------------------------------
180
- Mercury : ---------- -----------------
181
- Venus : ------------ ----------------
182
- Mars : - ---------------------
183
- Jupiter : -----------------------
184
- Saturn : ------------------------ -----
195
+ Mercury : ---------- -----------------
196
+ Venus : ------------ ----------------
197
+ Mars : - ---------------------
198
+ Jupiter : -----------------------
199
+ Saturn : ------------------------ -----
185
200
  ===================================================================
186
201
  Legend: # Day : Civ/Nav Twilight . Ast Twilight Night
187
202
  - Planet above horizon = Moon above horizon
188
203
 
204
+ ```
205
+
206
+ ```python
207
+ # Search for Sirius' Heliacal Rising in 378 BCE
208
+ from mesomath import BabStar
209
+
210
+ sirius = BabStar.from_catalog("Sirius")
211
+ sirius.search_phenomena(-378)
212
+
213
+ ```
214
+
215
+ ```text
216
+ Search for Sirius Heliacal Appearance in the East before sunrise:
217
+ ======================================================================
218
+ Search starting at Babylon: -378-01-1.0
219
+ First sight found at: -378-07-23.08 (JD= 1583196.582765)
220
+ Rising angle: 55.912d
221
+ ----------------------------------------------------------------------
222
+
223
+ ```
224
+
225
+ ```python
226
+ # Generates a 2-day contrast time-series report at 6-minute intervals
227
+ sirius.twilight_tomography(year=-378, phenomena="heliacal", city="Babylon", k=0.20, day_offset=(0, 1))
228
+
229
+ ```
230
+
231
+ ```text
232
+ Search for Sirius Heliacal Appearance in the East before sunrise:
233
+ ======================================================================
234
+ Search starting at Babylon: -378-01-1.0
235
+ First sight found at: -378-07-23.08 (JD= 1583196.582765)
236
+ Rising angle: 55.912d
237
+ ----------------------------------------------------------------------
238
+ Scanning Sirius visibility in Babylon ( -378-07-23.0)
239
+ at 6 sidereal minutes interval (backward)
240
+ Day Offset: 0
241
+ Current Extinction Coefficient value: k = 0.2
242
+ |sun_ele |star_ele | phi |Vis. |m_real | m_lim | Contrast
243
+ |--------|---------|---------|-----|-------|-------|---------------------
244
+ | -0.041 | 10.885 | 54.736 | No | -0.43 | -5.78 |
245
+ | -2.014 | 9.766 | 54.943 | No | -0.32 | -3.69 |
246
+ | -3.131 | 8.641 | 54.949 | No | -0.18 | -2.52 |
247
+ | -4.239 | 7.510 | 54.956 | No | -0.00 | -1.35 |
248
+ | -5.338 | 6.376 | 54.965 | No | 0.23 | -0.19 |
249
+ | -6.428 | 5.242 | 54.975 | Yes | 0.54 | 0.96 | ###
250
+ | -7.507 | 4.112 | 54.988 | Yes | 0.99 | 2.08 | ########
251
+ | -8.576 | 2.995 | 55.006 | Yes | 1.65 | 3.15 | ############
252
+ | -9.635 | 1.910 | 55.033 | Yes | 2.68 | 4.14 | ###########
253
+ |-10.681 | 0.897 | 55.081 | Yes | 4.33 | 4.94 | ####
254
+ -------------------------------------------------------------------------
255
+ Scanning Sirius visibility in Babylon ( -378-07-22.0)
256
+ at 6 sidereal minutes interval (backward)
257
+ Day Offset: 1
258
+ Current Extinction Coefficient value: k = 0.2
259
+ |sun_ele |star_ele | phi |Vis. |m_real | m_lim | Contrast
260
+ |--------|---------|---------|-----|-------|-------|---------------------
261
+ | -1.888 | 9.028 | 54.332 | No | -0.23 | -3.84 |
262
+ | -3.004 | 7.899 | 54.339 | No | -0.07 | -2.66 |
263
+ | -4.111 | 6.765 | 54.347 | No | 0.14 | -1.49 |
264
+ | -5.209 | 5.631 | 54.356 | No | 0.42 | -0.33 |
265
+ | -6.298 | 4.498 | 54.367 | No | 0.81 | 0.81 |
266
+ | -7.376 | 3.376 | 54.382 | Yes | 1.39 | 1.93 | ####
267
+ | -8.444 | 2.277 | 54.404 | Yes | 2.27 | 3.01 | #####
268
+ | -9.501 | 1.232 | 54.441 | Yes | 3.68 | 4.01 | ##
269
+ |-10.546 | 0.297 | 54.506 | No | 5.89 | 4.85 |
270
+ -------------------------------------------------------------------------
189
271
 
190
272
  ```
191
273
 
@@ -202,8 +284,8 @@ The complete user manual, tutorials, and mathematical references are available a
202
284
  * **Mathematical Metrology**: Structured upon the breakthrough historical analyses of **Christine Proust** (*Tablettes mathématiques de Nippur*, 2007) and canonical scribal lexical lists.
203
285
  * **Archaeoastronomy & Eclipses**: Driven by the raw ephemeris computational methods and historical eclipse logs compiled in NASA's *Five Millennium Canon of Eclipses* by **Fred Espenak and Jean Meeus**.
204
286
  * **Chronological Registers**: Grounded on the empirical data frameworks from *Babylonian Chronology: 626 B.C. – A.D. 75*, by **Richard A. Parker and Waldo H. Dubberstein** (2nd edition, Brown University Press, 1971).
287
+ * **Ephemeris Validation**: Elwood C. Downey's **XEphem** has been continuously utilized during development as an independent computational baseline to audit the mathematical accuracy of the underlying engine.
205
288
 
206
289
  ---
207
290
 
208
- **Developed by [jccsvq](https://github.com/jccsvq?tab=repositories)**
209
-
291
+ **Developed by [jccsvq**](https://github.com/jccsvq?tab=repositories)
@@ -0,0 +1,253 @@
1
+ # 🏺 MesoMath v2.2
2
+ **The Mesopotamian Computational Engine for Python.**
3
+
4
+ [![PyPI - Version](https://img.shields.io/pypi/v/mesomath.svg)](https://pypi.org/project/mesomath/)
5
+ [![PyPI - Status](https://img.shields.io/pypi/status/mesomath.svg)](https://pypi.org/project/mesomath/)
6
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
7
+ [![Hatch project](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/pypa/hatch/master/docs/assets/badge/v0.json)](https://github.com/pypa/hatch)
8
+ [![Documentation Status](https://readthedocs.org/projects/mesomath/badge/?version=latest)](https://mesomath.readthedocs.io)
9
+ [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jccsvq/mesomath-nb/main?labpath=notebooks%2Findex.ipynb)
10
+
11
+ MesoMath is a high-precision computational framework engineered for the rigorous study of ancient Mesopotamian:
12
+
13
+ * **Mathematics**
14
+ * Sexagesimal integer arithmetic (absolute and floating)
15
+ * Fraction arithmetic
16
+ * **Metrology**
17
+ * Old Babylonian Period metrology (length, surface, volume, weight, capacity, and bricks)
18
+ * User-extensible framework for other historical periods
19
+ * NPVS Systems S, G, C, and K
20
+ * Socio-economic applications
21
+ * **Chronology**
22
+ * Based on Parker and Dubberstein (1971) for the period 626 B.C. – A.D. 75
23
+ * *Proleptic* lunar calendar engine for other historical eras
24
+ * **Timekeeping & Archaeoastronomy**
25
+ * Lunar and Planetary Ephemerides
26
+ * Heliacal and Acronychal Rising of stars (Atmospheric 3D scattering models)
27
+ * Built-in catalog of relevant Mesopotamian astronomical sites
28
+ * Built-in catalog of critical historical stars
29
+ * Custom user-defined sites and stars support
30
+
31
+ MesoMath provides:
32
+ * **Native Command-Line Environments (CLI)**: `babcalc` (basic) and `ibabcalc` (full-featured interactive shell).
33
+ * **Jupyter Notebook Integration** for reproducible research.
34
+ * **Authentic Epigraphic Support**: Old Babylonian transliteration standards and Unicode cuneiform rendering.
35
+
36
+ ---
37
+
38
+ ## ✨ What's New in v2.2.0?
39
+
40
+ MesoMath v2.2.0 introduces the `BabStar` class, enabling high-fidelity search, physical contrast tracking, and multi-day **Twilight Tomography** for Heliacal and Acronychal stellar phenomena.
41
+
42
+ ---
43
+
44
+ ## 🚀 Quick Start
45
+
46
+ ### Installation
47
+
48
+ Install the complete environment globally using `pipx` (recommended for CLI apps):
49
+
50
+ ```bash
51
+ $ pipx install mesomath
52
+
53
+ ```
54
+
55
+ ### The Scribal Console
56
+
57
+ Launch the pre-configured advanced interactive environment:
58
+
59
+ ```bash
60
+ $ ibabcalc
61
+
62
+ ```
63
+
64
+ ### 1. Dimensional Arithmetic & Fractions
65
+
66
+ MesoMath manages geometric dimensions and base-60 rational numbers natively:
67
+
68
+ ```python
69
+ from mesomath import Blen, Bsur
70
+
71
+ # Objects understand localized metrological ratios
72
+ width = Blen('3 ninda')
73
+ area = Bsur('1 sar')
74
+
75
+ # Dimensional descent via division engine
76
+ length = area / width
77
+ print(length.prtf()) # Output: '1/3 ninda'
78
+
79
+ ```
80
+
81
+ ### 2. Epigraphic Authenticity
82
+
83
+ Export mathematical computations directly into cuneiform strings or scholarly transliterations:
84
+
85
+ ```python
86
+ from mesomath import Bcap
87
+
88
+ vol = Bcap('3 bariga 2 ban')
89
+ print(vol.translit) # Output: '3(barig) 2(ban2) še'
90
+ print(vol.cuneiform) # Output: itri samot 𒊺
91
+
92
+ ```
93
+
94
+ ### 3. Chronology & Archaeoastronomy
95
+
96
+ Translate continuous timeline anchors into historical calendars and calculate complex planetary visibilities:
97
+
98
+ ```python
99
+ from mesomath import ChronDate
100
+
101
+ # Instantiate a target Julian date
102
+ date = ChronDate.from_julian(-378, 5, 17)
103
+ print(date.babylonian)
104
+ # Output: 'Year 26 of Artaxerxes II, month: 2 (Aiaru), day: 14'
105
+
106
+ ```
107
+
108
+ ```python
109
+ # Generate localized micro-historical data grids
110
+ date.day_ephemeris(city='Susa')
111
+
112
+ ```
113
+
114
+ ```text
115
+ =================================================================
116
+ MESOPOTAMIAN DAILY EPHEMERIS: SUSA
117
+ =================================================================
118
+ Julian Day: 1583129.5 | Civil Calendar: Julian (-378/5/17)
119
+ Chronology: Year 26 of Artaxerxes II, month: 2 (Aiaru), day: 14
120
+ -----------------------------------------------------------------
121
+ SOLAR CONTEXT:
122
+ Sunrise : 01:46 UT | Sunset : 15:32 UT
123
+ Transit : 08:39 UT | Season : Day: 52 of spring
124
+ -----------------------------------------------------------------
125
+ LUNAR INTERVALS (Phenomena in current lunation):
126
+ [Neomenia] NA Interval: -68.35 min (Time from Sunset to Moonset)
127
+ [Mid-Month] MI-MUSH: 19.77 min (Simultaneous visibility)
128
+ [End-Month] KUR: -894.34 min (Dawn crescent disappearance)
129
+ -----------------------------------------------------------------
130
+ PLANETARY VISIBILITY ( Twilight vs. Arc of Vision ):
131
+ * Mercury -> Invisible / Glare (Required Av: 12.0°)
132
+ * Venus -> VISIBLE (Morning Star) (Required Av: 6.0°)
133
+ * Mars -> VISIBLE (Morning Star) (Required Av: 14.0°)
134
+ * Jupiter -> VISIBLE (Evening Star) (Required Av: 9.0°)
135
+ * Saturn -> VISIBLE (Evening Star) (Required Av: 11.0°)
136
+ =================================================================
137
+
138
+ ```
139
+
140
+ ```python
141
+ # Visualize the sky timeline across ancient nocturnal watches
142
+ date.night_at_a_glance(city='Susa')
143
+
144
+ ```
145
+
146
+ ```text
147
+ ===================================================================
148
+ Night at a Glance: Susa (-378-05-17)
149
+ ===================================================================
150
+ UT Hours: 09 11 13 15 17 19 21 23 01 03 05 07 09
151
+ Local H.: 12 14 16 18 20 22 00 02 04 06 08 10 12
152
+ -------------------------------------------------------------------
153
+ Sky/Sun : #############::. .::###############
154
+ -------------------------------------------------------------------
155
+ Moon : =====================
156
+ -------------------------------------------------------------------
157
+ Mercury : ---------- -----------------
158
+ Venus : ------------ ----------------
159
+ Mars : - ---------------------
160
+ Jupiter : -----------------------
161
+ Saturn : ------------------------ -----
162
+ ===================================================================
163
+ Legend: # Day : Civ/Nav Twilight . Ast Twilight Night
164
+ - Planet above horizon = Moon above horizon
165
+
166
+ ```
167
+
168
+ ```python
169
+ # Search for Sirius' Heliacal Rising in 378 BCE
170
+ from mesomath import BabStar
171
+
172
+ sirius = BabStar.from_catalog("Sirius")
173
+ sirius.search_phenomena(-378)
174
+
175
+ ```
176
+
177
+ ```text
178
+ Search for Sirius Heliacal Appearance in the East before sunrise:
179
+ ======================================================================
180
+ Search starting at Babylon: -378-01-1.0
181
+ First sight found at: -378-07-23.08 (JD= 1583196.582765)
182
+ Rising angle: 55.912d
183
+ ----------------------------------------------------------------------
184
+
185
+ ```
186
+
187
+ ```python
188
+ # Generates a 2-day contrast time-series report at 6-minute intervals
189
+ sirius.twilight_tomography(year=-378, phenomena="heliacal", city="Babylon", k=0.20, day_offset=(0, 1))
190
+
191
+ ```
192
+
193
+ ```text
194
+ Search for Sirius Heliacal Appearance in the East before sunrise:
195
+ ======================================================================
196
+ Search starting at Babylon: -378-01-1.0
197
+ First sight found at: -378-07-23.08 (JD= 1583196.582765)
198
+ Rising angle: 55.912d
199
+ ----------------------------------------------------------------------
200
+ Scanning Sirius visibility in Babylon ( -378-07-23.0)
201
+ at 6 sidereal minutes interval (backward)
202
+ Day Offset: 0
203
+ Current Extinction Coefficient value: k = 0.2
204
+ |sun_ele |star_ele | phi |Vis. |m_real | m_lim | Contrast
205
+ |--------|---------|---------|-----|-------|-------|---------------------
206
+ | -0.041 | 10.885 | 54.736 | No | -0.43 | -5.78 |
207
+ | -2.014 | 9.766 | 54.943 | No | -0.32 | -3.69 |
208
+ | -3.131 | 8.641 | 54.949 | No | -0.18 | -2.52 |
209
+ | -4.239 | 7.510 | 54.956 | No | -0.00 | -1.35 |
210
+ | -5.338 | 6.376 | 54.965 | No | 0.23 | -0.19 |
211
+ | -6.428 | 5.242 | 54.975 | Yes | 0.54 | 0.96 | ###
212
+ | -7.507 | 4.112 | 54.988 | Yes | 0.99 | 2.08 | ########
213
+ | -8.576 | 2.995 | 55.006 | Yes | 1.65 | 3.15 | ############
214
+ | -9.635 | 1.910 | 55.033 | Yes | 2.68 | 4.14 | ###########
215
+ |-10.681 | 0.897 | 55.081 | Yes | 4.33 | 4.94 | ####
216
+ -------------------------------------------------------------------------
217
+ Scanning Sirius visibility in Babylon ( -378-07-22.0)
218
+ at 6 sidereal minutes interval (backward)
219
+ Day Offset: 1
220
+ Current Extinction Coefficient value: k = 0.2
221
+ |sun_ele |star_ele | phi |Vis. |m_real | m_lim | Contrast
222
+ |--------|---------|---------|-----|-------|-------|---------------------
223
+ | -1.888 | 9.028 | 54.332 | No | -0.23 | -3.84 |
224
+ | -3.004 | 7.899 | 54.339 | No | -0.07 | -2.66 |
225
+ | -4.111 | 6.765 | 54.347 | No | 0.14 | -1.49 |
226
+ | -5.209 | 5.631 | 54.356 | No | 0.42 | -0.33 |
227
+ | -6.298 | 4.498 | 54.367 | No | 0.81 | 0.81 |
228
+ | -7.376 | 3.376 | 54.382 | Yes | 1.39 | 1.93 | ####
229
+ | -8.444 | 2.277 | 54.404 | Yes | 2.27 | 3.01 | #####
230
+ | -9.501 | 1.232 | 54.441 | Yes | 3.68 | 4.01 | ##
231
+ |-10.546 | 0.297 | 54.506 | No | 5.89 | 4.85 |
232
+ -------------------------------------------------------------------------
233
+
234
+ ```
235
+
236
+ ---
237
+
238
+ ## 📚 Documentation
239
+
240
+ The complete user manual, tutorials, and mathematical references are available at [mesomath.readthedocs.io](https://mesomath.readthedocs.io).
241
+
242
+ ---
243
+
244
+ ## 🏛️ Acknowledgments & Sources
245
+
246
+ * **Mathematical Metrology**: Structured upon the breakthrough historical analyses of **Christine Proust** (*Tablettes mathématiques de Nippur*, 2007) and canonical scribal lexical lists.
247
+ * **Archaeoastronomy & Eclipses**: Driven by the raw ephemeris computational methods and historical eclipse logs compiled in NASA's *Five Millennium Canon of Eclipses* by **Fred Espenak and Jean Meeus**.
248
+ * **Chronological Registers**: Grounded on the empirical data frameworks from *Babylonian Chronology: 626 B.C. – A.D. 75*, by **Richard A. Parker and Waldo H. Dubberstein** (2nd edition, Brown University Press, 1971).
249
+ * **Ephemeris Validation**: Elwood C. Downey's **XEphem** has been continuously utilized during development as an independent computational baseline to audit the mathematical accuracy of the underlying engine.
250
+
251
+ ---
252
+
253
+ **Developed by [jccsvq**](https://github.com/jccsvq?tab=repositories)
@@ -54,7 +54,6 @@ Core
54
54
  Sun
55
55
  ...
56
56
 
57
-
58
57
  .. automodule:: mesotimes.astronomy.sun
59
58
  :members:
60
59
 
@@ -78,3 +77,14 @@ Planets
78
77
  .. automodule:: mesotimes.astronomy.planets.superiors
79
78
  :members:
80
79
  :show-inheritance:
80
+
81
+ Stars (BabStar)
82
+ ...............
83
+
84
+ .. autoclass:: mesotimes.BabStar
85
+ :members:
86
+ :special-members: __init__
87
+ :undoc-members:
88
+
89
+ .. automodule:: mesotimes.astronomy.visibility
90
+ :members:
@@ -1,11 +1,11 @@
1
1
 
2
- # Introduction to MesoMath (v2.1.0)
2
+ # Introduction to MesoMath ({{ release }})
3
3
 
4
4
  **MesoMath** is more than just a calculator; it is a digital bridge to the mathematical and astronomical mind of the ancient Mesopotamian scribe. While modern mathematics relies on abstract decimal notation, the Old Babylonian period (c. 1900–1600 BCE) developed a sophisticated sexagesimal (base-60) system that combined floating-point arithmetic with a complex web of metrological units and elastic, horizon-based timekeeping frameworks.
5
5
 
6
6
  ## The MesoMath Ecosystem
7
7
 
8
- MesoMath 2.1.0 expands its unified workflow by transitioning into a comprehensive metapackage. It couples core scribal mathematics with advanced historical chronology and archaeoastronomy, tailored to the needs of researchers from quick terminal calculations to reproducible academic analysis:
8
+ Since version 2.1.0 MesoMath expands its unified workflow by transitioning into a comprehensive metapackage. It couples core scribal mathematics with advanced historical chronology and archaeoastronomy, tailored to the needs of researchers from quick terminal calculations to reproducible academic analysis:
9
9
 
10
10
  ### 1. Command-Line Environments (CLI)
11
11
 
@@ -44,7 +44,7 @@ The MesoMath engine does not merely compute; it documents. All results can be ex
44
44
 
45
45
  * **Precise Event Ephemeris**: Calculated directly with the [`pymeeus` library](https://github.com/architest/pymeeus) (VSOP87, ELP85) up to the current limit of knowledge of the parameter `Delta T`.
46
46
  * **Internal Database of Historical Eclipses**: Solar and Lunar eclipses visible at Kish (total and partial) based on the [*Five Millennium Canon of Eclipses* by Fred Espenak and Jean Meeus](https://eclipse.gsfc.nasa.gov/SEpubs/5MCSE.html).
47
-
47
+ * **Heliacal and Acronychal Rising of Stars**: Precise dating and dissection/tomography of twilight lights to reveal the temporal evolution of the contrast between the star and the twilight background.
48
48
  -----
49
49
 
50
50
  ## Project Architecture
@@ -59,6 +59,7 @@ MesoMath has shifted into a structural metapackage architecture, decoupling core
59
59
 
60
60
  2. **The `mesotimes` Package Core Engine**:
61
61
  * `date.py`: Chronological, calendrical, and astronomical dispatchers (`ChronDate`).
62
+ * `stars.py` and `visibility.py`: Search and analysis of heliacal/acronychal star phenomena.
62
63
 
63
64
  3. **Unified API**: Legacy standalone utilities (formerly `mtlookup`, `bmultable`) are integrated directly into the core classes, streamlining the developer experience. Methods like `Blen.lookup()` or `BabN.multable()` are now standard.
64
65
 
@@ -114,4 +114,30 @@ This bibliography provides the academic and historical foundations for the metro
114
114
 
115
115
  (ref-PyMeeus)=
116
116
  * **Arribas, J. L.** (2020). *PyMeeus: Astronomical Algorithms in Python*. Python Software Foundation. Available at: https://github.com/leasw/pymeeus
117
- > *Note: Python implementation of Meeus' algorithms used as a validation layer for specific internal ephemeris loops.*
117
+ > *Note: Python implementation of Meeus' algorithms used as a validation layer for specific internal ephemeris loops.*
118
+
119
+ ## Stellar Visibility
120
+
121
+ (ref-Schoch1924)=
122
+ * **Schoch, C.** (1924). *The Arcus Visionis of the Planets in Babylonian Astronomy*. Monthly Notices of the Royal Astronomical Society, 84(9), 731–734.
123
+ > *Note: Traditional geometric baseline for Babylonian stellar and planetary visibility calculations.*
124
+
125
+ (ref-Schaefer1993)=
126
+ * **Schaefer, B. E.** (1993). *Astronomy and the Limiting Magnitude of the Naked Eye*. Publications of the Astronomical Society of the Pacific, 105(688), 651–661.
127
+ > *Note: Fundamental paper for the 1D ramp model and human visual contrast threshold equations against sky brightness.*
128
+
129
+ (ref-Schaefer2000)=
130
+ * **Schaefer, B. E.** (2000). *The Heliacal Rise of Sirius and Ancient Chronology*. Journal for the History of Astronomy, 31(2), 149–155.
131
+ > *Note: Direct application of atmospheric extinction and scattering models to the specific historical problem of the rising of Sirius.*
132
+
133
+ (ref-Garstang1989)=
134
+ * **Garstang, R. H.** (1989). *Night-sky Brightness at Observatories and Sites*. Publications of the Astronomical Society of the Pacific, 101, 306–329.
135
+ > *Note: Mathematical foundation for the 3D visibility framework, containing Rayleigh and aerosol scattering phase functions.*
136
+
137
+ (ref-Pickering2002)=
138
+ * **Pickering, K. A.** (2002). *The Southern Limits of the Ancient Star Catalog and the Commentary of Hipparchos*. DIO, 12, 3–27.
139
+ > *Note: Reference study for ancient star catalog boundaries and historical stellar visibility constraints.*
140
+
141
+ (ref-KastenYoung1989)=
142
+ * **Kasten, F. and Young, A. T.** (1989). *Revised optical air mass tables and approximation formula*. Applied Optics, 28(22), 4735–4738.
143
+ > *Note: Reference formulation for atmospheric optical air mass calculations at low horizons and high zenith angles.*