How can I contribute to the ELN?

All contributions are more than welcome! If you have a problem/found a bug you can open an issue on the bug tracker or let us know in the Slack workspace).

Where can I contribute to?

Cheminfo maintains project along different scopes and welcomes contributions to all of them:

Visualization/Front-End

React

We currently re-develop the ELN using the React framework. The most mature project is nmrium which is a fully-fledged tool for NMR data analysis and processing. Use our project generator with yo cheminfo:react-frontend to start a new React project.

Legacy

The ELN that is currently in production uses the visualizer library, which cheminfo developers maintain. Some examples of how the visualizer library can be used can be found in the “Tutorial” section on cheminfo.org. Most graphical interfaces in the ELN are developed using this library. You can contribute new interfaces via my.cheminfo.org, where you can log in using a Google account. You will see that this system uses its own version control system. Some background on how this library can be used without JavaScript is given in one of our articles and the accompanying code.

The visualizer can be used in a React component using the react-visualizer library.

Cheminfo also hosts the development version of the JSME editor.

Parsers

A lot of effort in the cheminfo organization goes into the development of parsers for chemical data. Some examples are the netcdfjs and mrz parsers. We maintain parsers for NMR spectroscopy (Bruker, NMReData, JEOL), chromatography, thermogravimetry, gas adsorption isotherms, x-ray diffraction, XPS, and many more. Most of the data in the ELN is stored as JCAMP, a IUPAC recommended format, and we maintain the jcampconverter library to deal with this filetype.

To contribute a new parser, use our project generator with yo cheminfo:module. We try to use common-spectrum as the base for all new parsers. Common spectrum provides basic utilities that like toJCAMP, peak picking, or baseline correction.

Mining chemical data

We maintain several projects that aim to “harvest” or to provide programmatic access to chemical data. A recent example is a wrapper around the PubChem API. We also mine all the molecules on Wikipedia and PubChem.

Data processing and machine learning

For chemical structure information we maintain openchemlib-js. This is a library that also takes care of stereochemistry information.

The cheminfo lead developers also maintain the ml.js GitHub organization, which provides array methods and libraries with machine learning algorithms. One library that is particular useful in the ELN is the global spectral deconvolution as well as the peak shape generator. But also the PCA library can be used via the ELN. An interesting side note is that our neural network library is used in browser benchmarks.

Core ELN

The ELN in production uses CouchDB and cheminfo maintains the rest-on-couch library that provides an interface to CouchDB that allows the control of permissions on the documents and also allows setting up automatic importation of files into the folder. This library also powers the API of the ELN.

The ELN deployment is currently orchestrated via Docker compose, with the code being maintained in its own repository.

We are in the process of migrating to a new data schema, which is based on TypesScript types.

Documentation

The ELN documentation is based on Markdown files. We are in the process of migrating to a docusaurus-based system. The legacy repository uses GitBooks.

How can I make contributions to code and documentation?

For contributions to code and documentation you will need a GitHub accounts, you will fork a repository, make a new branch, edit the code, and then make a pull request. In the following, we will go through all these steps.

  1. If you do not already have one, create a GitHub account: To create a GitHub account, follow the instructions on the GitHub page.
  2. If you do not already have Git installed on your machine, you’ll need to install it.

    • On Windows you can go to GIT-SCM and download the executable.
    • On Mac, the most convenient way is to use Homebrew. For this you’ll need to install homebrew and then run brew install git from the terminal
    • On Ubuntu (i.e., also Windows subsystem for Linux) you can just run apt-get install git from the terminal
  3. We recommend that you install VSCode and some plugins. We wrote a blog post describing how to set up the development environment and the first section discusses the VSCode setup.
  4. Once you have your GitHub account and your coding setup ready, you can fork the repository you want to make a contribution to. “Forking” just means that you make a copy of the repository. To do so, you just need to click on the fork button in the top right corner. For contributions to the documentation, you’ll need to fork the c6h6-documentation repository.
  5. Clone the fork to your local computer and make a new branch.
  6. Make changes to the code or documentation. And commit them. We have a blog post describing how the documentation works.
  7. Push the changes to the remote and make a pull request.

We go through steps 4–7 in a video tutorial in the blog post.

We maintain a list of tools we like to use.