Metadata-Version: 2.1
Name: sciscripttools
Version: 0.2.2
Summary: Small set of tools and functions for scientific code and scripts.
Home-page: UNKNOWN
Author: lifelemons
Author-email: 
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown

# SciScriptTools

Small set of tools and functions for scientific code and scripts.

## Install

### pip
```bash
pip install sciscripttools
```

### Build from Source
```
git clone https://github.com/lifelemons/sciscripttools.git
cd sciscripttools
python setup.py install
```
## Examples 
### IO
An example to get started with the IO tools.
It can save relatively basic python objects, such a values, strings, arrays, and 
dictionaries of those items.
```python
import sciscripttools as st

power = [4,5,6]
st.save_data("power_exp_01", power) # save a value, arrary, or dictionary

exp_info = {"id": 20200117, "wire_r" : 0.005, 
            "lengths_1": [0.1, 0.5, 1.5]}
st.save_data("exp_01", exp_info, directory="data/")

w1 = [0.1, 0.5, 1.5]
w2 = [0.1, 0.3, 1.7]
w3 = [0.1, 0.6, 1.2]
radii = st.create_dictionary("w1",w1, "w2", w2, "w3", w3)
st.save_data("radii", radii)
```
Load the previous saved data with
```python
import sciscripttools as st

exp_info = st.load_dictionary("exp_01", directory="data/")
keys, radii = st.load_data("radii", keys = ["w1", "w3"]) # load straight into arrays
power = st.load_item("power_exp_01")
```

### Plot
An example to get started with the plotting tools.
Note: `standard_font` class and the unit functions of the `standard_figure` class require LaTeX!

```python
import numpy as np
import matplotlib.pyplot as plt
import sciscripttools as st

# data
x = np.linspace(0, 2)
y = x + np.random.rand(len(x))
y2 = x + np.random.rand(len(x))

# figure

fig_params = st.figure_parameters() # generate parameters
st.standard_font(font_size = fig_params.font_size) # standarise the font

# normal matplotlib plotting
fig, axes = plt.subplots(1, 2, sharey = True) # create matplotlib figure
ax1, ax2 = axes

# plot data
ax1.plot(x, y)
ax2.plot(x, y2)
for ax in axes:
    ax.set_ylim(0, 3) 

fig.subplots_adjust(wspace = fig_params.adjust_subplot_wspace) # set subplot width spacing
sf = st.standard_figure(fig, axes, fig_params) # create standard_figure
sf.add_subplot_labels()

# add units
ylabel = "Power"; yunit = "\\watt"
sf.ylabel(ax1, ylabel, yunit)
xlabel = "Time"; xunit = "\\second"
sf.xlabel(axes, xlabel, xunit)

fig.savefig("quick_plot.png")
```
![example quick plot](examples/readme_plot_example.png)

## Contribute
Found a bug, want to add functionality, or fixed a bug?
Create an [issue](https://github.com/lifelemons/sciscripttools/issues) or [pull request](https://github.com/lifelemons/sciscripttools/pulls).
Any comments or feedback, please write them down in an [issue](https://github.com/lifelemons/sciscripttools/issues).

## Links
[GitHub](https://github.com/lifelemons/sciscripttools)

