Noj gets you started with Clojure for data and science.
- You get a collection of good libraries out of the box which are tested and known-to-work-together
- .. and documentation that shows you how to use the different libraries together
- (and if you want: a 'devcontainer' setup which is known to work with the native parts of the libraries)
Noj is a Clojure library that is also released as a Jupyter kernel (see below). It includes the underlying libraries as dependencies, and adds documentation and integration tests (which are mostly derived from the documentation, thus verifying its correctness).
The included libraries
- use tech.ml.dataset directly for tabular data structures or provide high interoperability with it
- support kindly for visualisations of data
| Website | https://scicloj.github.io/noj/ |
| Source | |
| Deps | |
| Tests | |
| License | EPLv1.0 |
| Status | Beta stage. |
| Dev chat | #noj-dev at Clojurians Zulip |
| User chat | #data-science at Clojurians Zulip |
- 📖 notebook
- 📁 repo
- 💾 data source - the Clojure Events Calendar Feed
- 💡 main topics: Tablcloth (processing), Tableplot (datavis), Clay (notebooking), Emacs, CIDER
- 🎥 video:
Noj has Clay included, which takes a Clojure namespace and turns it into a notebook. To get started,
From [noj/releases](https://github.com/scicloj/noj/releases), download `noj-<version>-uber.jar` into a local directory of your choice (replacing `<version>` with e.g. `2-beta11.1`).
In your terminal, switch to that directory and run the following command:
java -cp noj-2-beta11.1-uber.jar clojupyter.cmdline eval '(str "Hello " "Noj!")'
A nice message should appear on your screen. In this way, without having to install the Clojure CLI, you can run a Clojure program, e.g. some hello.clj
java -cp noj-2-beta11.1-uber.jar clojupyter.cmdline eval '(load-file "hello.clj")'
that already has access to all Noj libraries. However, for a more readable output of your Clojure program files,
Clay renders Clojure files as notebooks in the browser. It live-reloads and watches whole directories. To get started with Clay, type
java -jar noj-2-beta11.1-uber.jar hello.clj
Clay has no editing environment, folks can keep using the editors they know and love. However, if you look for an editor, one option is to
Noj also provides a kernel for Jupyter. Compared to Clay, the kernel supports most but not all data visualization kinds. We also would like to mention the ongoing efforts to support Colab, the hosted Jupyter service. However, to start with the more mature local version, you best start using a Python environment:
python3 -m venv python_venv
source python_venv/bin/activate
python3 -m pip install jupyterlab
Then, install the Noj Jupyter Kernel
java -cp noj-2-beta11.1-uber.jar clojupyter.cmdline install --jarfile noj-2-beta11.1-uber.jar --ident noj-2-beta11.1
Verify,
java -cp noj-2-beta11.1-uber.jar clojupyter.cmdline list-installs
and run Jupyter
jupyter lab
(Technical note: every notebook starts its own NREPL server. For details, ask on Zulipchat)
Copyright © 2025 Scicloj
EPLv1.0 is just the default for projects generated by clj-new: you are not
required to open source this project, nor are you required to use EPLv1.0!
Feel free to remove or change the LICENSE file and remove or update this
section of the README.md file!
Distributed under the Eclipse Public License version 1.0.