Skip to main content

NumpSy

Straight up mix between NumPy, SymPy and Pandas into a value single-declaration extendable framework to simulatenously perform symbolic and numerical operations.

Objectives:

  1. Ever think you wanted to simultaneously perform numerical and symbolic mathematics for an engineering or optimization derivation? Now you can pretty much intuitively derivate simultaneously whilst performing unit management automatically.
  2. Integrate mathematical analytical derivation Python toolchains into a single handy one that retains and expands each of the constituent packages methods. Retain intuitive compatibility.
  3. Have fun!

Is it any good?

I think it's an elegant mathematical representation to simultanously perform symbolic, numerical, and data science operations into a single system. It targets a minimal overhead to raw numpy, sympy or scipy operations.

Quick Start

Download the Anaconda distribution first.

Pip install:

$ pip install numpsy

Local install for most recent version:

$ git clone https://github.com/daquintero/numpsy.git
$ cd numpsy
$ python3 setup.py install

Quick Example

See the 10 minutes to NumpSy jupyter notebook for much more.

Installation

Import NumpSy

import numpsy as nsy

Units

Declare a Unit

meter = nsy.Unit(name="meter", symbol="m")
meter
Unit
name meter
symbol \begin{equation}m\end{equation}
symbolic_expression \begin{equation}Ø\end{equation}

Retrieve attributes from this Unit

meter.s

$\displaystyle m$

meter.symbol

$\displaystyle m$

meter.name
'meter'

Operate with this unit

farad_per_meter = nsy.Unit(name="Farad", symbol="F") / meter
farad_per_meter
Unit
name (Farad)per(meter)
symbol \begin{equation}Ø\end{equation}
symbolic_expression \begin{equation}\frac{F}{m}\end{equation}

Append to Unit Library

nsy.Units().data
Hertz     Unit       name name_expression               ...
Farad     Unit       name name_expression               ...
meter     Unit       name name_expression               ...
ohm       Unit     name name_expression                 ...
ratio     Unit       name name_expression               ...
second    Unit        name name_expression              ...
Name: 0, dtype: object
nsy.u
Hertz     Unit       name name_expression               ...
Farad     Unit       name name_expression               ...
meter     Unit       name name_expression               ...
ohm       Unit     name name_expression                 ...
ratio     Unit       name name_expression               ...
second    Unit        name name_expression              ...
Name: 0, dtype: object

Constant

e_0 = nsy.Constant(
    name="permittivity_vaccum",
    symbol= "\epsilon_0",
    numerical=8.8541878128e-12,
    unit=farad_per_meter
)
e_0
Constant
name permittivity_vaccum
symbol \begin{equation}\epsilon_0\end{equation}
symbolic_expression \begin{equation}Ø\end{equation}
numerical 8.8541878128e-12
unit Symbol: \begin{equation}Ø\end{equation}
Symbolic Expression: \begin{equation}\frac{F}{m}\end{equation}
e_0.s

$\displaystyle \epsilon_0$

e_0.n
8.8541878128e-12
e_d = nsy.Constant(
    name="dielectric_permittivity",
    symbol= "\epsilon_d",
    numerical=5,
    unit=nsy.u.ratio
)
e_d
Constant
name dielectric_permittivity
symbol \begin{equation}\epsilon_d\end{equation}
symbolic_expression \begin{equation}Ø\end{equation}
numerical 5
unit Symbol: \begin{equation}\end{equation}
Symbolic Expression: \begin{equation}Ø\end{equation}

Constants cannot be mutated

e_d.n = 10
Constant cannot be mutated. You cannot set any attribute value. Instantiate a new variable.

Variable

capacitor_plate_separation = nsy.Variable(
    name="capacitor_plate_separation",
    symbol= "d",
    numerical=None,
    unit=nsy.u.meter
)
capacitor_plate_separation
Variable
name capacitor_plate_separation
symbol \begin{equation}d\end{equation}
symbolic_expression \begin{equation}Ø\end{equation}
numerical
unit Symbol: \begin{equation}m\end{equation}
Symbolic Expression: \begin{equation}Ø\end{equation}
capacitor_plate_separation.s

$\displaystyle d$

capacitor_plate_separation.u
Unit
name meter
symbol \begin{equation}m\end{equation}
symbolic_expression \begin{equation}Ø\end{equation}

Variables can be mutated

capacitor_plate_separation.n = 1e-6
capacitor_plate_separation.n
1e-06
capacitor_plate_separation.numerical = 3e-5
capacitor_plate_separation.numerical
3e-05

Operate between Value objects

Constants and Variables are value objects.

capacitance_per_plate_cross_sectional_area = e_d / (e_0 * capacitor_plate_separation)
capacitance_per_plate_cross_sectional_area
Value
name
symbol \begin{equation}Ø\end{equation}
symbolic_expression \begin{equation}\frac{\epsilon_d}{\epsilon_0 d}\end{equation}
numerical 1.8823484456216984e+16
unit Symbol: \begin{equation}Ø\end{equation}
Symbolic Expression: \begin{equation}\frac{}{F}\end{equation}
capacitance_per_plate_cross_sectional_area.se

$\displaystyle \frac{\epsilon_d}{\epsilon_0 d}$

capacitance_per_plate_cross_sectional_area.n
1.8823484456216984e+16

Perform Flexible Class Operations

raw_capacitor_cross_sectional_area = (1e-6) ** 2
raw_capacitor_cross_sectional_area
1e-12
device_capacitance = capacitance_per_plate_cross_sectional_area * raw_capacitor_cross_sectional_area
device_capacitance
Value
name
symbol \begin{equation}Ø\end{equation}
symbolic_expression \begin{equation}\frac{\epsilon_d Ø}{\epsilon_0 d}\end{equation}
numerical 18823.484456216982
unit Symbol: \begin{equation}Ø\end{equation}
Symbolic Expression: \begin{equation}\frac{Ø}{F}\end{equation}
device_capacitance.name
''
device_capacitance.se

$\displaystyle \frac{\epsilon_d Ø}{\epsilon_0 d}$

device_capacitance.symbol = "F"
device_capacitance.symbol

$\displaystyle F$

raw_capacitor_cross_sectional_area
1e-12
Example Functions
nsy.sqrt(device_capacitance)
Value
name
symbol \begin{equation}Ø\end{equation}
symbolic_expression \begin{equation}\sqrt{F}\end{equation}
numerical 137.19870428038664
unit Symbol: \begin{equation}Ø\end{equation}
Symbolic Expression: \begin{equation}\sqrt{\frac{Ø}{F}}\end{equation}
nsy.sinh(device_capacitance)
Value
name
symbol \begin{equation}Ø\end{equation}
symbolic_expression \begin{equation}\sinh{\left(F \right)}\end{equation}
numerical inf
unit Symbol: \begin{equation}Ø\end{equation}
Symbolic Expression: \begin{equation}\sqrt{\frac{Ø}{F}}\end{equation}

Future plans

  • Extend unit management and verification.
  • Create a full constants list, probably even in Excel or as an importable CSV file into Pandas.

Open to contributions.

Metadata

Release files for numpsy 0.0.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for numpsy 0.0.12
File Size Uploaded Provenance Actions
numpsy-0.0.12.tar.gz 15.3 kB Without provenance Details for numpsy-0.0.12.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for numpsy 0.0.12
File Interpreter ABI Platform Actions
numpsy-0.0.12-py3-none-any.whl Python 3 none any Details for numpsy-0.0.12-py3-none-any.whl

Total release size: 29.3 kB

Release files / numpsy-0.0.12.tar.gz

Download URL numpsy-0.0.12.tar.gz
Size 15.3 kB
Tags Source
SHA-256 checksum
How to use checksums
1a8309fedb80e467b936d327eb0434e205af9418143bf33b3956b6493fcd4b8d
BLAKE2b-256 checksum
How to use checksums
6184d6a5283652dc47336c24e99cd16029e973271579eb93fa082a58a6c806a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.7

Release files / numpsy-0.0.12-py3-none-any.whl

Download URL numpsy-0.0.12-py3-none-any.whl
Size 14.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
76dd0a3a48b5c4da2f3cc80cbfdfe7ac0b7785d0969aec1115de259a9b884cd5
BLAKE2b-256 checksum
How to use checksums
b77f7bdf1a229d9be7626438b75b385d02e1eb05ea0a7095d4f825b85d6fc1db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.7

Security for numpsy 0.0.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page