Python utilities, including material definition and unit system handling with pint
Project description
pyMatUnits - Python Materials and Units handling package
Package for handling units systems and conversion, leveraging the pint package, as well as material property definition for use with in physics-based modeling.
Installation
Once the appropriate conda or virtual environment is activated, navigate to the main directory and run:
pip install --editable .
This should install the dependencies if not already installed
Documentation
The formatted documentation for this package can be found at https://github.gatech.edu/pages/acox37/pymatunits/
If the documentation has been modified in your current branch, you can do the following to view the detailed documentation as a website:
- Verify that mkdocs is installed
- Navigate to main folder (same folder as mkdocs.yml)
- Either:
- Run
mkdocs serveand open http://127.0.0.1:8000/ - OR run
mkdocs buildwhich will compile it into asitefolder, then just opensite/index.html
- Run
Changelog
v1.5: UnitMixin and updated style, other fixes and refactors
Adds UnitMixin class and further conversion to new style of inputs. As a reminder:
- Save default unit system
units = UnitSystem.mks() - Require inputs as quantities
- New: Inherit UnitMixin and use UnitMixin.convert
- Save quantity as
<attribute-name> - Saves converted float magnitude as
<attribute-name>_with underscore
- Save quantity as
Refactors where correction factors are saved
- Fixes:
- Material example format and units
- Fix to units.UnitSystem.to_dict : 088a78a
- More robust input handling
- Reference temperature arg unit issue
v1.4: New attribute storing procedure
- Remove optional
Union[float, Quantity]inputs, assume Quantity is provided- Base attributes (e.g.
material.E) are saved as provided- This means that it is up the user to provide a quantity
- Either way that quantity is saved as is
- The extension attribute (e.g.
material.E_) is converted to the provided unit system and saved as a float- When setting/changing the unit system, only the extension attributes (with trailing
_) are modified
- When setting/changing the unit system, only the extension attributes (with trailing
- This means values can be accessed without dealing with
.magnitudeor theconvertfunction - Suggesting to propagate this format to other packages that use pyMatUnits
- Allows for tracking original input units while allowing for access to a magnitude for internal purposes
- Base attributes (e.g.
- Also updates docstrings, typing, unit tests (which pass)
- Other minor changes: Add hash to UnitSystem
v1.3.1: Dynamic versioning, streamline unit corrections
- Add dynamic versioning to pyproject.toml
- Save unit corrections after running check_consistency once to not have to call every time
convertis used
v1.3: Installation and documentation update
- Move from setup.py to pyproject.toml
- Add mkdocs setup and files for initial version of documentation website
v1.2: Encoding improvements, material unit system conversion
to/read_json: allow for saving unit string in JSON files
Material.unit_system can be set, which will convert all quantities
Built-In/Saved Materials and Unit Systems
mat_prop and units modules have builtin_dir and builtin_paths to lead to saved JSON files
Unit Systems
Module name : units
Works on top of the pint package. UnitSystem class allows for
storage of system of units (length, mass, time, etc.), as well as the ability to check for internal
consistency of said system using check_consistency method. Logs consistency issues as well as returning
conversion factors to be used when converting inconsistent units.
Unit systems can be stored or read from JSON file format using .to_json/.read_json, similar to Pandas.
- Main class :
UnitSystem - Unit conversion function :
convert
Materials
Module name : mat_prop
Allows for material definitions, based on those defined in Abaqus. Can create materials in Abaqus CAE or Nastran input file (bdf) if the appropriate dependencies are in place (Abaqus API or Nastran Utils package).
Materials can be stored or read from JSON file format using .to_json/.read_json, similar to Pandas.
Apps
Dash apps (units_app.py and mat_app.py) for creating, reading, or writing unit systems or material
objects.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pymatunits-1.5.tar.gz.
File metadata
- Download URL: pymatunits-1.5.tar.gz
- Upload date:
- Size: 46.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fb0d1ad6c2a6ad11d5c2ed6cafcc5ffcc6939244b6ae2922d101cab73fd1213
|
|
| MD5 |
3247495ff2a2664ac1c4d7c7d1ce23e0
|
|
| BLAKE2b-256 |
af46f9109962cb205539436c1320f21d0cba8fa90ffe1f8e64a9acd1577d8a0a
|
File details
Details for the file pymatunits-1.5-py3-none-any.whl.
File metadata
- Download URL: pymatunits-1.5-py3-none-any.whl
- Upload date:
- Size: 44.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce8d04d051b5d9cbcf73bf4f8ccb688f51bdb051e27c275426887a62279f6118
|
|
| MD5 |
5ca980ef32b6f4bb0974d4904ff5ed09
|
|
| BLAKE2b-256 |
b5aaf2a863dedf7559b47feb709d442028f62e970cada9bce4e6ec095fa355d0
|