Metadata-Version: 2.5
Name: picomats
Version: 0.1.3
Summary: A unit-informed, assumption-driven material ontology.
Project-URL: Homepage, https://github.com/Bowley-Systems/PicoMats
Project-URL: Bug Tracker, https://github.com/Bowley-Systems/PicoMats/issues
Author-email: William Bowley <wgrantbowley@gmail.com>
Maintainer-email: William Bowley <wgrantbowley@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: assumptions,materials,physics,units
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.10
Requires-Dist: numpy
Requires-Dist: picounits
Description-Content-Type: text/markdown

<!-- 
Color palette: 
#006d77ff -> deep, muted teal-green 
#d92c2aff -> bold, warm crimson-red 

It might seem risky to define a new ontology for materials,
but imagine for a second you're trying to do work across
electromagnetic, mechanical, and chemical systems.

And imagine your goal is to have a material backend that
has the same routing from v0.1 to vn.n. It needs to be
made general-purpose.

— William Bowley, 12th of August, 2026
-->

<p align="center">
    <img 
        src="https://raw.githubusercontent.com/Bowley-Systems/PicoMats/refs/heads/main/media/logo.png" 
        alt="PicoMats logo" 
        style="width:100%; max-width:100%; display:block;"
    >
</p>

<p align="center">
    <strong>Use the material. Sustain the assumptions.</strong> <br>
    Reduce uncertainty by making every assumption explicit.
</p>

### Overview

![Version](https://img.shields.io/badge/Version-0.1.3-006D77?style=flat-square)
![License](https://img.shields.io/badge/License-MIT-E14F4C?style=flat-square)
![Python Version](https://img.shields.io/badge/Python-3.10%2B-006D77?style=flat-square)
[![PyPI Downloads](https://img.shields.io/pepy/dt/picomats?label=downloads\&style=flat-square\&color=E14F4C)](https://pepy.tech/projects/picomats)

<!-- ![Coverage](https://img.shields.io/badge/coverage-N/A-E14F4C?style=flat-square) -->

<strong>PicoMats</strong> is an assumption-driven material ontology that sustains assumptions throughout your pipeline. 
It provides unit-informed material definitions with accompanying assumptions.  

> This is the demo/alpha release of <strong>PicoMats</strong>. The library and its ontology will be expanded.

```
- Follows a computational ontology called `Abstract-Fundamental Ontology`.
- Uses `UnitValues` and `PicoUnits` for encoding typed numerical definitions.
- Tracks assumptions alongside material definitions to reduce model uncertainty.
```

---
        
### What is the Abstract-Fundamental Ontology?

It is a computational abstraction for both reductionist and pragmatist applications.

The model is based on two categories:

```
Abstract:       Defined by what it does     (characteristics).
Fundamental:    Defined by what it is       (structure/state).
```

---

### Why does it exist?

The ontology emerges from this simple series:

```
Let's model a ball rolling down a ramp.
        ↓   
What forces act on the ball?
        ↓
Gravity, electromagnetic repulsion, and friction.
        ↓
How do we model friction?
        ↓
A coefficient? Isn't that arbitrary?
        ↓
Why not just model it?
        ↓
What exactly is friction?
        ↓
Oh, random microscopic interactions...
```

It's possible to model but computationally impractical for most applications. <br>
Hence, the `abstract` section exists for empirical measurements.


But `abstract` isn't always the right model...

```
I want to research superconductors.
        ↓
Oh, my temperature range is 0 K to 200 K.
        ↓
Where do I get material definitions for that range?
        ↓
I'll just interpolate the standard Niobium definition.
        ↓
Actually, how were these measurements obtained?
```

When asking a fundamental question, it's better to build from fundamental properties. <br>
Hence the `fundamental` section.

---

### Quick Start

A step-by-step introduction is available in [`example/`](https://github.com/Bowley-Systems/PicoMats/tree/main/tutorial). <br> 

```py
from picomats import m
from picomats import Materials

# Pulls materials into the simulation
copper = Materials.abstract.pure.copper

density = copper.physical.density
volume = 0.1 * m ** 3

mass = volume * density
# > 893.0 (kg)
```

---

### Installation 
 
To install:

```bash
pip install PicoMats
```

#### Documentation

Full documentation is available in the [`docs/`](https://github.com/Bowley-Systems/PicoMats/tree/main/docs) folder, 
including API reference, changelog, and contributors.

---