Installing neurosymbolic programming tools for NX 2: Clojure and Python-Java Bindings

As noted in a previous posting, work continues on integrating newer symbolic AI programming tools with with the tremendous L4T + JetPack CV and D/CDNN development environment. Installing Symbolic Programming Tools on NX
This includes linking to Python for use with Jupyter Notebooks and other NVIDIA Jetson/NGC dev resources.

Our main project dev objective involves creating a laboratory computing ‘edge appliance’ environment that can provide AI research, development, and deployment for microscopic through macroscopic and 3D imaging applications etc.

The AI research part includes continuing my legacy academic AI work on symbolic modeling, biological process simulations, and structural ontologies, on the way to new neural-symbolic fusion applications on Jetson Xaviers.

This note deals with installing Clojure, an evolved Lisp functional language system that uses OpenJVM for optimized execution.

My collaborator supported adopting Clojure for coding our new intelligent systems, and our prior qualitative process modeling immunogenetics projects used CLIPS’ Lisp-like (Scheme) programs for inference.

For brevity, there will be a followup on integrating Python with JVM apps like Clojure, ImageJ, CLIPSJNI, and Protege as previously installed.

There were few issues with installing Clojure on my Xeon + RTX NVIDIA SDK workstation using standard Ubuntu 18.04 software sources for most of this. Special care was taken for obtaining ARM64 sources when appropriate and building and installing on a Jetson NX.

Also note: although Java app code should be relatively platform-independant, installations may require different JAVA_HOME PATH settings for calling the JVM (e.g., usr/lib/jvm/java-8-openjdk-arm64).
Clojure uses the OpenJDK JVM for compiling optimized byte code, and /usr/lib/jvm can include other OpenJRE runtime JVMs.

Clojure- - Getting Started lists several ways to install Clojure.

I chose the Maven install to start on the workstation. This depended on prior apt installs of git, ant and maven with the existing Ubuntu 18.04 amd64 OpenJDK environment.

3 bash commands cloned the current GitHub Clojure master for Maven (mvn) to install the clojure-master app directory locally (HOME):

git clone
cd clojure
mvn -Plocal -Dmaven.test.skip=true package in /clojure-master

After this, the Java binary could be launched by bash from the clojure-master directory:

java -jar clojure.jar

Pretty much the same process was followed for installing Clojure on the Xavier NX. EZPZ, eh?

Wait until next time: It got a bit complicated trying to find out how to install Python bindings for use with Clojure, but the easiest solution for all .jars turned out to be installing a popular Clojure development library.

1 Like

Hi @trelease, thanks for sharing your work! Moving this to the Jetson Projects forum for others to see.

OK, great!
I’ll post the Leiningen + Python javabridge install follow up there when I get finished.


1 Like