Metadata-Version: 2.1
Name: cassini
Version: 0.3.0a3
Summary: A tool to structure experimental work, data and analysis using Jupyter Lab.
License: GPL-3.0-only
Author: 0Hughman0
Author-email: rammers2@hotmail.co.uk
Requires-Python: >=3.8.1,<4.0.0
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: ipywidgets (>=8.0,<9.0)
Requires-Dist: jupyter_cassini_server (>=0.3.0a0,<0.4.0)
Requires-Dist: jupyterlab (>=4.0.0,<5.0.0)
Requires-Dist: pandas (>=1.0,<2.0)
Requires-Dist: pydantic (>=2.8.2,<3.0.0)
Requires-Dist: typing-extensions (>=4.7.1,<5.0.0)
Description-Content-Type: text/markdown

# Cassini

*Note Cassini is in it's alpha development stage, so things may not work perfectly - tell us about problems so we can fix them!*

An electronic laboratory notebook (ELN), built inside Jupyter Lab.

Cassini's goal is to help you explore, analyse and organise your data in an environment that's familiar.

![Screenshot](demo.gif)

## Features

* **Structures your project** into an easy to navigate hierarchy of workpackages, experiments, samples and datasets.
* Allows **retrieval of data by name** e.g. `project['WP3.2f-XRD'] / 'XRD_data.csv`.
* Create new sample, experiment (etc.) notebooks through **custom dialogs**.
* Create notebook templates for **standardised proceedures**.
* **Browse and explore** your project through a custom browser, including previewing cell outputs, such as plots in-browser.
* No magic! Everything is stored in regular **human navigatable folders**, cloud backups etc. work as expected.

Check out the demo binder for a walkthrough of features (note this can take a little while to load):

[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/0Hughman0/Cassini/HEAD?urlpath=lab/tree/Home.ipynb)

## Installation and Setup

    > pip install cassini

Create a `project.py`:

    # project.py
    from cassini import Project, DEFAULT_TIERS
    from cassini import jlgui

    project = Project(DEFAULT_TIERS, __file__)
    jlgui.extend_project(project)

    if __name__ == '__main__':
        project.launch()

And launch it:

    > python project.py

Head to [Quickstart](https://0hughman0.github.io/Cassini/latest/quickstart.html) for more info.

## Contributing

Contributing guidelines are found [here](https://0hughman0.github.io/Cassini/latest/contributing.html).

This includes development installation instructions and codebase orientation.

