diff --git a/README.md b/README.md index fa92a13..517e2ec 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ A python modeling framework for Aerie. ### TODO: + - [ ] Daemon tasks - [ ] More interesting cells and resources - [x] Conditions on discrete cells @@ -14,6 +15,7 @@ A python modeling framework for Aerie. - [ ] build Aerie-compatible jars and provide docker-compose file with python ## Prerequisites + - python >=3.6.3 (only tested on 3.12 so far...) - java >=21 @@ -24,20 +26,30 @@ A python modeling framework for Aerie. 3. Install requirements `python -m pip install -r requirements.txt` 4. Start jupyter lab `jupyter-lab` 5. When jupyter opens, navigate to `demo/simulation_example.py` -6. Update the path in the first cell to point to your cloned `pymerlin` directory (we should eliminate the need for this hack) +6. Update the path in the first cell to point to your cloned `pymerlin` directory (we should eliminate the need for this + hack) 7. Run all cells ## Architecture + pymerlin is to merlin as pyspark is to spark. This means that pymerlin uses [py4j](https://www.py4j.org/) as a bridge between a python process and a java process. This allows pymerlin to use the Aerie simulation engine directly, without having to re-implement it in python. This means that running `simulate` starts a subprocess using `java -jar /path/to/pymerlin.jar`. - ### Approachability over performance + The main tenet of pymerlin is approachability, and its aim is to enable rapid prototyping of models and activities. While where possible, performance will be considered, it is expected that someone who wants to seriously engineer the performance of their simulation will port their code to Java - which has the double benefit of removing socket -communication overhead, as well as giving the engineer a single Java process to instrument and analyze, rather than a -hybrid system, which may be more difficult to characterize. \ No newline at end of file +communication overhead, as well as giving the engineer a single Java process to instrument and analyze, rather than a +hybrid system, which may be more difficult to characterize. + +## Building pymerlin.jar + +```shell +cd java +./gradlew assemble +mv pymerlin/build/libs/pymerlin.jar .. +``` \ No newline at end of file diff --git a/java/app/build.gradle b/java/pymerlin/build.gradle similarity index 96% rename from java/app/build.gradle rename to java/pymerlin/build.gradle index 2d101f0..0fdce11 100644 --- a/java/app/build.gradle +++ b/java/pymerlin/build.gradle @@ -39,6 +39,7 @@ dependencies { } jar { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE manifest { attributes( 'Class-Path': configurations.runtimeClasspath.files.collect { it.getName() }.join(' '), diff --git a/java/app/src/main/java/gov/nasa/ammos/aerie/merlin/python/ContextContainer.java b/java/pymerlin/src/main/java/gov/nasa/ammos/aerie/merlin/python/ContextContainer.java similarity index 100% rename from java/app/src/main/java/gov/nasa/ammos/aerie/merlin/python/ContextContainer.java rename to java/pymerlin/src/main/java/gov/nasa/ammos/aerie/merlin/python/ContextContainer.java diff --git a/java/app/src/main/java/gov/nasa/ammos/aerie/merlin/python/Directive.java b/java/pymerlin/src/main/java/gov/nasa/ammos/aerie/merlin/python/Directive.java similarity index 100% rename from java/app/src/main/java/gov/nasa/ammos/aerie/merlin/python/Directive.java rename to java/pymerlin/src/main/java/gov/nasa/ammos/aerie/merlin/python/Directive.java diff --git a/java/app/src/main/java/gov/nasa/ammos/aerie/merlin/python/Merlin.java b/java/pymerlin/src/main/java/gov/nasa/ammos/aerie/merlin/python/Merlin.java similarity index 100% rename from java/app/src/main/java/gov/nasa/ammos/aerie/merlin/python/Merlin.java rename to java/pymerlin/src/main/java/gov/nasa/ammos/aerie/merlin/python/Merlin.java diff --git a/java/app/src/main/java/gov/nasa/ammos/aerie/merlin/python/MerlinEntryPoint.java b/java/pymerlin/src/main/java/gov/nasa/ammos/aerie/merlin/python/MerlinEntryPoint.java similarity index 100% rename from java/app/src/main/java/gov/nasa/ammos/aerie/merlin/python/MerlinEntryPoint.java rename to java/pymerlin/src/main/java/gov/nasa/ammos/aerie/merlin/python/MerlinEntryPoint.java diff --git a/java/app/src/main/java/gov/nasa/ammos/aerie/merlin/python/Registrar.java b/java/pymerlin/src/main/java/gov/nasa/ammos/aerie/merlin/python/Registrar.java similarity index 100% rename from java/app/src/main/java/gov/nasa/ammos/aerie/merlin/python/Registrar.java rename to java/pymerlin/src/main/java/gov/nasa/ammos/aerie/merlin/python/Registrar.java diff --git a/java/app/src/main/java/gov/nasa/ammos/aerie/merlin/python/Schedule.java b/java/pymerlin/src/main/java/gov/nasa/ammos/aerie/merlin/python/Schedule.java similarity index 100% rename from java/app/src/main/java/gov/nasa/ammos/aerie/merlin/python/Schedule.java rename to java/pymerlin/src/main/java/gov/nasa/ammos/aerie/merlin/python/Schedule.java diff --git a/java/app/src/main/java/gov/nasa/ammos/aerie/merlin/python/SideBySideTest.java b/java/pymerlin/src/main/java/gov/nasa/ammos/aerie/merlin/python/SideBySideTest.java similarity index 100% rename from java/app/src/main/java/gov/nasa/ammos/aerie/merlin/python/SideBySideTest.java rename to java/pymerlin/src/main/java/gov/nasa/ammos/aerie/merlin/python/SideBySideTest.java diff --git a/java/app/src/main/java/gov/nasa/ammos/aerie/merlin/python/Stubs.java b/java/pymerlin/src/main/java/gov/nasa/ammos/aerie/merlin/python/Stubs.java similarity index 100% rename from java/app/src/main/java/gov/nasa/ammos/aerie/merlin/python/Stubs.java rename to java/pymerlin/src/main/java/gov/nasa/ammos/aerie/merlin/python/Stubs.java diff --git a/java/app/src/test/java/org/example/app/MessageUtilsTest.java b/java/pymerlin/src/test/java/org/example/app/MessageUtilsTest.java similarity index 100% rename from java/app/src/test/java/org/example/app/MessageUtilsTest.java rename to java/pymerlin/src/test/java/org/example/app/MessageUtilsTest.java diff --git a/java/settings.gradle b/java/settings.gradle index 4349672..4524857 100644 --- a/java/settings.gradle +++ b/java/settings.gradle @@ -11,4 +11,4 @@ plugins { } rootProject.name = 'java' -include('app') +include('pymerlin') diff --git a/pymerlin.jar b/pymerlin.jar index b8359cf..94abb03 100644 Binary files a/pymerlin.jar and b/pymerlin.jar differ