Help/ Collaborators Wanted - Cassini, a lab book inside JupyterLab

Hiya, I’m Hugh.


TLDR:

JLab extension: GitHub - 0Hughman0/jupyter_cassini: Jupyter extension for interfacing with Cassini
Python-side: GitHub - 0Hughman0/Cassini: A virtual lab-book framework, using Jupyter Lab and Python.

Feedback/ help wanted.


Background

I recently finished a PhD in Material Science. During my PhD I developed a tool (working name!)- Cassini to help me structure my projects, data and analysis. The ambition was to create a virtual lab book where proceedures, data and analysis could all be harmonised together.

The tool operates completely inside JupyterLab.

Projects are split into a heirachy of WorkPackages → Experiments → Samples → DataSets (by default).

Cassini understands your sample naming scheme, so data can be easily retrieved:

>>> sample = project['WP3.2f']
>>> sample['XRD'] / 'data.csv'
Path('.../WorkPackages/WP3/WP3.2/XRD/f/data.csv')

It also supports cool things like creating templates for experiments and analysis, so the same proceedure is easy to follow.

In the version I used for my PhD, I created a bunch of GUIs using ipywidgets. This allowed data from numerous samples to be summarised at once, and provided some basic navigation.

This makes exploring your data much easier and speeds up analysis and reporting.

However, using ipywidgets has limitations in terms of what they can do, and performance.

Therefore I set out to create a jupyterlab extension to provide a more performant and powerful gui for the cassini back end.

Where it’s at

Pythons-side

This is fully functional and (here).

There are a few changes I think might be good to make e.g. using Pydantic for validation of metadata files. Some other changes need to be made to accommodate the new JL gui.

I am very open to discussions on the implementation, potential new features etc.

Browser-side

I have created a prototype JLab extension here: jupyter_cassini.

I’m very new to typescript and not the best at gui programming in general, but it does work and has a bare-bones set of features that I think make it a viable GUI to cassini.

The help I’d appreciate

  1. Feedback.
    • What do you think?
    • How does it look?
    • How easy is it to use?
    • How is the documentation?
    • Feature ideas?
  2. Coding help.
    • Particularly suggestions and improvements to the implementation of both the GUI and back-end
    • Bug reports - there are lots of bugs
    • Contributions - if others could start adding new features and squashing bugs, that would be :heart_eyes:
  3. Guidance.
    • What do I need to do so the above can happen? - better documentation? better test-suite? (almost certainly yes!)
    • How do I look after a big project like this?

I’m really excited by the tool. I think most scientists experience the issue that their data and analysis end up a complete mess and I think Cassini could be a great solution to this.

Thanks for reading this far,

Hugh