NumpSy
Straight up mix between NumPy, SymPy and Pandas into a value single-declaration extendable framework to simulatenously perform symbolic and numerical operations.
Objectives:
- 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.
- Integrate mathematical analytical derivation Python toolchains into a single handy one that retains and expands each of the constituent packages methods. Retain intuitive compatibility.
- 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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.