Skip to main content

A robust sexagesimal, metrological, and astronomical engine for Babylonian mathematics. From the Eduba to the Jupyter Notebook.

Project description

🏺 MesoMath v2.2

The Mesopotamian Computational Engine for Python.

PyPI - Version PyPI - Status Python 3.11+ Hatch project Documentation Status Binder

MesoMath is a high-precision computational framework engineered for the rigorous study of ancient Mesopotamian:

  • Mathematics
    • Sexagesimal integer arithmetic (absolute and floating)
    • Fraction arithmetic
  • Metrology
    • Old Babylonian Period metrology (length, surface, volume, weight, capacity, and bricks)
    • User-extensible framework for other historical periods
    • NPVS Systems S, G, C, and K
    • Socio-economic applications
  • Chronology
    • Based on Parker and Dubberstein (1971) for the period 626 B.C. – A.D. 75
    • Proleptic lunar calendar engine for other historical eras
  • Timekeeping & Archaeoastronomy
    • Lunar and Planetary Ephemerides
    • Heliacal and Acronychal Rising of stars (Atmospheric 3D scattering models)
    • Built-in catalog of relevant Mesopotamian astronomical sites
    • Built-in catalog of critical historical stars
    • Custom user-defined sites and stars support

MesoMath provides:

  • Native Command-Line Environments (CLI): babcalc (basic) and ibabcalc (full-featured interactive shell).
  • Jupyter Notebook Integration for reproducible research.
  • Authentic Epigraphic Support: Old Babylonian transliteration standards and Unicode cuneiform rendering.

✨ What's New in v2.2.0?

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.


🚀 Quick Start

Installation

Install the complete environment globally using pipx (recommended for CLI apps):

$ pipx install mesomath

The Scribal Console

Launch the pre-configured advanced interactive environment:

$ ibabcalc

1. Dimensional Arithmetic & Fractions

MesoMath manages geometric dimensions and base-60 rational numbers natively:

from mesomath import Blen, Bsur

# Objects understand localized metrological ratios
width = Blen('3 ninda')
area = Bsur('1 sar')

# Dimensional descent via division engine
length = area / width
print(length.prtf())  # Output: '1/3 ninda'

2. Epigraphic Authenticity

Export mathematical computations directly into cuneiform strings or scholarly transliterations:

from mesomath import Bcap

vol = Bcap('3 bariga 2 ban')
print(vol.translit)   # Output: '3(barig) 2(ban2) še'
print(vol.cuneiform)  # Output: itri  samot 𒊺

3. Chronology & Archaeoastronomy

Translate continuous timeline anchors into historical calendars and calculate complex planetary visibilities:

from mesomath import ChronDate

# Instantiate a target Julian date
date = ChronDate.from_julian(-378, 5, 17)
print(date.babylonian)
# Output: 'Year 26 of Artaxerxes II, month: 2 (Aiaru), day: 14'
# Generate localized micro-historical data grids
date.day_ephemeris(city='Susa')
=================================================================
                MESOPOTAMIAN DAILY EPHEMERIS: SUSA                
=================================================================
  Julian Day:  1583129.5       | Civil Calendar: Julian (-378/5/17)
  Chronology:  Year 26 of Artaxerxes II, month: 2 (Aiaru), day: 14
-----------------------------------------------------------------
  SOLAR CONTEXT:
    Sunrise : 01:46 UT | Sunset : 15:32 UT
    Transit : 08:39 UT | Season : Day: 52 of spring
-----------------------------------------------------------------
  LUNAR INTERVALS (Phenomena in current lunation):
    [Neomenia] NA Interval: -68.35 min (Time from Sunset to Moonset)
    [Mid-Month] MI-MUSH:    19.77 min (Simultaneous visibility)
    [End-Month] KUR:        -894.34 min (Dawn crescent disappearance)
-----------------------------------------------------------------
  PLANETARY VISIBILITY ( Twilight vs. Arc of Vision ):
    * Mercury    -> Invisible / Glare          (Required Av: 12.0°)
    * Venus      -> VISIBLE (Morning Star)     (Required Av: 6.0°)
    * Mars       -> VISIBLE (Morning Star)     (Required Av: 14.0°)
    * Jupiter    -> VISIBLE (Evening Star)     (Required Av: 9.0°)
    * Saturn     -> VISIBLE (Evening Star)     (Required Av: 11.0°)
=================================================================
# Visualize the sky timeline across ancient nocturnal watches
date.night_at_a_glance(city='Susa')
===================================================================
    Night at a Glance: Susa (-378-05-17)
===================================================================
UT Hours:  09  11  13  15  17  19  21  23  01  03  05  07  09  
Local H.:  12  14  16  18  20  22  00  02  04  06  08  10  12  
-------------------------------------------------------------------
 Sky/Sun :  #############::.               .::###############
-------------------------------------------------------------------
 Moon    :               =====================                 
-------------------------------------------------------------------
 Mercury :  ----------                     -----------------
 Venus   :  ------------                   ----------------
 Mars    :  -                           --------------------- 
 Jupiter :            -----------------------                  
 Saturn  :  ------------------------                     -----
===================================================================
Legend:  # Day  : Civ/Nav Twilight  . Ast Twilight    Night
         - Planet above horizon     = Moon above horizon
# Search for Sirius' Heliacal Rising in 378 BCE
from mesomath import BabStar

sirius = BabStar.from_catalog("Sirius")
sirius.search_phenomena(-378)
Search for Sirius Heliacal Appearance in the East before sunrise:
======================================================================
Search starting at Babylon:  -378-01-1.0
   First sight found at:  -378-07-23.08 (JD= 1583196.582765)
           Rising angle:  55.912d
----------------------------------------------------------------------
# Generates a 2-day contrast time-series report at 6-minute intervals
sirius.twilight_tomography(year=-378, phenomena="heliacal", city="Babylon", k=0.20, day_offset=(0, 1))
Search for Sirius Heliacal Appearance in the East before sunrise:
======================================================================
Search starting at Babylon:  -378-01-1.0
   First sight found at:  -378-07-23.08 (JD= 1583196.582765)
           Rising angle:  55.912d
----------------------------------------------------------------------
Scanning Sirius visibility in Babylon ( -378-07-23.0)
at 6 sidereal minutes interval (backward)
Day Offset: 0
Current Extinction Coefficient value: k = 0.2
|sun_ele |star_ele |     phi |Vis. |m_real | m_lim | Contrast
|--------|---------|---------|-----|-------|-------|---------------------
| -0.041 |  10.885 |  54.736 | No  | -0.43 | -5.78 | 
| -2.014 |   9.766 |  54.943 | No  | -0.32 | -3.69 | 
| -3.131 |   8.641 |  54.949 | No  | -0.18 | -2.52 | 
| -4.239 |   7.510 |  54.956 | No  | -0.00 | -1.35 | 
| -5.338 |   6.376 |  54.965 | No  |  0.23 | -0.19 | 
| -6.428 |   5.242 |  54.975 | Yes |  0.54 |  0.96 | ###
| -7.507 |   4.112 |  54.988 | Yes |  0.99 |  2.08 | ########
| -8.576 |   2.995 |  55.006 | Yes |  1.65 |  3.15 | ############
| -9.635 |   1.910 |  55.033 | Yes |  2.68 |  4.14 | ###########
|-10.681 |   0.897 |  55.081 | Yes |  4.33 |  4.94 | ####
-------------------------------------------------------------------------
Scanning Sirius visibility in Babylon ( -378-07-22.0)
at 6 sidereal minutes interval (backward)
Day Offset: 1
Current Extinction Coefficient value: k = 0.2
|sun_ele |star_ele |     phi |Vis. |m_real | m_lim | Contrast
|--------|---------|---------|-----|-------|-------|---------------------
| -1.888 |   9.028 |  54.332 | No  | -0.23 | -3.84 | 
| -3.004 |   7.899 |  54.339 | No  | -0.07 | -2.66 | 
| -4.111 |   6.765 |  54.347 | No  |  0.14 | -1.49 | 
| -5.209 |   5.631 |  54.356 | No  |  0.42 | -0.33 | 
| -6.298 |   4.498 |  54.367 | No  |  0.81 |  0.81 | 
| -7.376 |   3.376 |  54.382 | Yes |  1.39 |  1.93 | ####
| -8.444 |   2.277 |  54.404 | Yes |  2.27 |  3.01 | #####
| -9.501 |   1.232 |  54.441 | Yes |  3.68 |  4.01 | ##
|-10.546 |   0.297 |  54.506 | No  |  5.89 |  4.85 | 
-------------------------------------------------------------------------

📚 Documentation

The complete user manual, tutorials, and mathematical references are available at mesomath.readthedocs.io.


🏛️ Acknowledgments & Sources

  • Mathematical Metrology: Structured upon the breakthrough historical analyses of Christine Proust (Tablettes mathématiques de Nippur, 2007) and canonical scribal lexical lists.
  • 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.
  • 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).
  • 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.

**Developed by jccsvq**

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mesomath-2.2.0.tar.gz (602.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mesomath-2.2.0-py3-none-any.whl (361.9 kB view details)

Uploaded Python 3

File details

Details for the file mesomath-2.2.0.tar.gz.

File metadata

  • Download URL: mesomath-2.2.0.tar.gz
  • Upload date:
  • Size: 602.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.1 cpython/3.11.2 HTTPX/0.28.1

File hashes

Hashes for mesomath-2.2.0.tar.gz
Algorithm Hash digest
SHA256 f06e086a69ccfa1697e37b1ab0aeb30aabb8ae68e75a09b15f6181e25b7fd8cb
MD5 466c6c7c5658bbff240fb94ebc0f7591
BLAKE2b-256 4140bfe6c3795347b02832613fe494ddd044896d7de4d4e91237557164adca26

See more details on using hashes here.

File details

Details for the file mesomath-2.2.0-py3-none-any.whl.

File metadata

  • Download URL: mesomath-2.2.0-py3-none-any.whl
  • Upload date:
  • Size: 361.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.1 cpython/3.11.2 HTTPX/0.28.1

File hashes

Hashes for mesomath-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7a34db27788fc6c2e5e52a978b629caea93458a3b71f9e063d7caec08d66aa40
MD5 971ac7fd8874c564ff24d43120e9cd5b
BLAKE2b-256 19725b277002c7c5cdb4828a704b3e396fd1c2d8b43809f4d19233115a5f386d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page