Metadata-Version: 2.1
Name: expnbk
Version: 0.0.2
Summary: expnbk provides a class for creating an experiment with its own results directory that automatically contains a copy of the code used to run the experiment. Super useful for reproducibility.
Home-page: https://github.com/KaiyanPengNJU/Experiment_Notebook
Author: Kaiyan Peng
Author-email: kaiyanpeng@gmail.com
License: MIT
Keywords: expnbk
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Science/Research 
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: matplotlib
Provides-Extra: all
Requires-Dist: matplotlib ; extra == 'all'
Requires-Dist: bump2version (>=1.0.0) ; extra == 'all'
Requires-Dist: ipython (>=7.5.0) ; extra == 'all'
Requires-Dist: twine (>=1.13.0) ; extra == 'all'
Requires-Dist: wheel (>=0.33.1) ; extra == 'all'
Provides-Extra: dev
Requires-Dist: bump2version (>=1.0.0) ; extra == 'dev'
Requires-Dist: ipython (>=7.5.0) ; extra == 'dev'
Requires-Dist: twine (>=1.13.0) ; extra == 'dev'
Requires-Dist: wheel (>=0.33.1) ; extra == 'dev'
Provides-Extra: docs
Provides-Extra: setup
Provides-Extra: test

# Experiment_Notebook

[![PyPI Version](https://img.shields.io/pypi/v/Experiment_Notebook.svg)](https://pypi.org/project/Experiment_Notebook/)
[![Supported Python Versions](https://img.shields.io/pypi/pyversions/Experiment_Notebook.svg)](https://pypi.org/project/Experiment_Notebook/)

`expnbk` provides a class for creating an experiment with its own results directory that automatically contains a copy of the code used to run the experiment. Super useful for reproducibility.

---

## Installation

To install Experiment_Notebook, run this command in your terminal:

```bash
$ pip install -U Experiment_Notebook
```

This is the preferred method to install Experiment_Notebook, as it will always install the most recent stable release.

If you don't have [pip](https://pip.pypa.io) installed, these [installation instructions](http://docs.python-guide.org/en/latest/starting/installation/) can guide you through the process.



## Quick Start

The `expnbk` package provides a class `Experiment`. Upon instantiation,  it takes a snapshot of the current working directory and saves all files into a `results/current_time` folder within the current directory (see `Usage` for variations). It also provides functions that automatically save figures to the same output directory. Check out the following example and you shall see similar changes in your directories.  
```
$ tree
    .
    ├── file1        
    └── dir1
        └── file2
```
```python
>>> from expnbk import Experiment
>>> exp = Experiment()
>>> fig = exp.figure()
>>> fig.savefig("image1.png") 
```
```
$ tree
    .
    ├── file1
    ├── dir1
    │   └── file2
    └── results
        └── 2020-12-31_123006
            ├── <project_name>
            │   ├── file1
            │   └── dir1
            │       └── file2
            └── image1.png
```



## Usage

- Import the `expnk` package:
```python
>>> from expnbk import Experiment
```



- Create an `Experiment` class with attributes:

```python
>>> exp = Experiment(expname='some_experiemnt', results_dir='path_to_results_directory', copy_code=True, ignore_dirs=None):
```
`expname`: str, optional

>> A name identifying the type of experiment run.


`results_dir` : str, optional

>> Path to the desired results directory for storing experiment details.

`copy_code` : bool, optional

>> Should the experiment results include the code used to generate them?

`ignore_dirs` : list(str), optional

>> Any directories that should not be copied with the code.



- Save figures to the same output directory as above: 
```python
>>> fig = exp.figure() //Get a matplotlib figure
>>> fig.savefig("image1.png") //`savefig` function will put it in the experiment directory
```


