io.github.sanctuuary

Tool for automated generation of computational workflows.

https://github.com/sanctuuary/ape

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.1%) to scientific vocabulary

Keywords

automated-pipeline java program-synthesis workflow-synthesis
Last synced: 6 months ago · JSON representation ·

Repository

Tool for automated generation of computational workflows.

Basic Info
Statistics
  • Stars: 17
  • Watchers: 3
  • Forks: 7
  • Open Issues: 16
  • Releases: 22
Topics
automated-pipeline java program-synthesis workflow-synthesis
Created about 6 years ago · Last pushed 9 months ago
Metadata Files
Readme Changelog License Code of conduct Citation Security

README.md

logo

APE (Automated Pipeline Explorer)

| Badges | | |:----:|----| | Fairness | fair-software.eu OpenSSF Best Practices | | Packages and Releases | Latest release Maven Central Static Badge | Build Status | Build CodeQL Analysis | | Documentation | Documentation Status | | DOI | DOI | | License | GitHub license |

APE is a command line tool and Java API for the automated exploration of possible computational pipelines (scientific workflows) from large collections of computational tools. Generated workflows can be exported in CWL format, as well as in graphical (PNG, SVG) formats.

APE relies on a semantic domain model that includes tool and type taxonomies as controlled vocabularies for the description of computational tools, and functional tool annotations (inputs, outputs, operations performed) using terms from these taxonomies. Based on this domain model and a specification of the available workflow inputs, the intended workflow outputs and possibly additional constraints, APE then computes possible workflows.

Internally, APE uses a component-based program synthesis approach. It translates the domain knowledge and workflow specification into logical formulas that are then fed to a SAT solver to compute satisfying instances. These solutions are then translated into the actual candidate workflows. For a detailed description, we refer to [1].

For our paper at ICCS 2020 [2] we created a video that explains APE in 5 minutes:

APE - Youtube video

For detailed information please visit our page.

Requirements

To run APE locally you need to have Java 1.8 (or higher) installed on your system (use the command $ java -version to check your local version).

To build APE from source, Maven 3.3+ has to be installed as well (use the command $ mvn -version to check your local version).

Note: Building APE from source is not required to run it, as the latest stable version is available at maven repository.

Releases

Add APE to your Maven project

To add a dependency on APE using Maven, use the following:

xml <!-- https://mvnrepository.com/artifact/io.github.sanctuuary/APE --> <dependency> <groupId>io.github.sanctuuary</groupId> <artifactId>APE</artifactId> <version>2.x.x</version> </dependency>

For information regarding Gradle, Ivy, etc. we refer to the APE mvn repository.

Manually download releases

| Date | Version | Download | |------------|---------|--------------------------------------------------------------------------------------| | 15-07-2020 | 1.0.1 | jar, executable, javadoc, sources| | 02-05-2021 | 1.1.7 | jar, executable, javadoc, sources| | 20-12-2021 | 1.1.12 | jar, executable, javadoc, sources| | 17-05-2022 | 2.0.0 | jar, executable, javadoc, sources| | 19-02-2024 | 2.3.0 | jar, executable, javadoc, sources|

Build APE from source (using Maven)

From the project root, simply launch

shell $ mvn -DskipTests=true install

to build the APE modules from the source tree and the built files will be generated under the /target directory. All the dependencies will be gathered by Maven and the following stand-alone module will be generated: APE-[latest]-executable.jar

Using APE

Automated workflow composition with APE can be performed through its command line interface (CLI) or its application programming interface (API). While the CLI provides a simple means to interact and experiment with the system, the API provides more flexibility and control over the synthesis process. It can be used to integrate APE’s functionality into other systems.

How to run APE from the command line

APE-[latest]-executable.jar is available in maven repository.

When running APE-[latest]-executable.jar from the command line, it requires a JSON configuration file given as a parameter and executes the automated workflow composition process accordingly:

shell java -jar APE-[latest]-executable.jar [path-to-ape-configuration]

The configuration file (see APE cofiguration example and APE configuration documentation) provides references to all therefor required information: 1. Domain model - classification of the types and operations in the domain in form of an ontology (see ontology example in OWL) and a tool annotation file (see tool annotations example in JSON). 2. Workflow specification - including a list of workflow inputs/outputs and template-based (see constraint templates) workflow constraints (see workflow constraints example) 3. Parameters for the synthesis execution, such as the number of desired solutions, output directory, system configurations, etc. (see APE configuration documentation).

My first APE run

shell git clone git@github.com:sanctuuary/APE_UseCases.git

or

shell git clone https://github.com/sanctuuary/APE_UseCases.git

Download the latest version of APE-[latest]-executable.jar and add it to the APEUseCases directory (`~/git/APEUseCases`)

shell cd ~/git/APE_UseCases java -jar APE-[latest]-executable.jar ImageMagick/Example1/config.json

See ImageMagick: Example 1 for more information about the results and on how to execute the composed workflow.

More examples

Use cases contains all the details and examples regarding the composition setup and the composition execution using the existing use cases (such as composition of ImageMagick operations).

How to use the APE API

Like the CLI, the APE API relies on a configuration file that references the domain ontology, tool annotations, workflow specification and execution parameters:

```java // set up the framework APE ape = new APE("path/to/setup-configuration.json");

// run the synthesis SATsolutionsList solutions = ape.runSynthesis("path/to/run-configuration.json"); // write the solutions for the file system APE.writeSolutionToFile(solutions); APE.writeDataFlowGraphs(solutions, RankDir.TOPTOBOTTOM); APE.writeExecutableWorkflows(solutions); ```

However, the API allows to generate and edit the configuration file programmatically:

```java // set up the framework APECoreConfig coreConfig = new APECoreConfig(...); APE ape = new APE(coreConfig);

// run the synthesis APERunConfig runConfig = APERunConfig.builder().withSolutionMinLength(1).withSolutionMaxLength(10) .withMaxNoSolutions(100).withApeDomainSetup(ape.getDomainSetup()) .build(); SATsolutionsList solutions1 = ape.runSynthesis(runConfig);

// run the synthesis again with altered parameters runConfig.setUseWorkflowInput(ConfigEnum.ONE); SATsolutionsList solutions2 = ape.runSynthesis(runConfig); ```

For more information see APE javadoc.io page.

APE v2 architecture

The architecture of the APE v2 library is presented in the following figure. Components coloured light blue extend existing components in the APE v1 framework; dark blue components are new modules.

APE 2.0 Architecture

APE Web

Graphical Web Interface for the APE library is available at APE Web.

Use Cases and Demos

Our use cases are motivated by practical problems in various domains (e.g. bioinformatics, GIS [3]). Different examples are available at the APE Use Cases Repository.

The APE team

  • Vedran Kasalica (v.kasalica[at]esciencecenter.nl), lead developer
  • Maurin Voshol, student developer
  • Koen Haverkort, student developer
  • Anna-Lena Lamprecht (anna-lena.lamprecht[at]uni-potsdam.de), project initiator and principal investigator

Contact

For any questions concerning APE please get in touch with Vedran Kasalica (v.kasalica[at]esciencecenter.nl.nl).

Contributions

We welcome all contributions (bug reports, bug fixes, feature requests, extensions, use cases, etc.) to APE. Please get in touch with Vedran Kasalica (v.kasalica[at]esciencecenter.nl.nl) to coordinate your contribution. We expect all contributors to follow our Code of Conduct.

In case you have a specific request, want to report a bug or suggest a new constraint template please make an issue here.

Credits

APE has been inspired by the Loose Programming framework PROPHETS. It uses similar mechanisms for semantic domain modelling, workflow specification and synthesis, but strives to provide the automated exploration and composition functionality independent from a concrete workflow system.

We thank our brave first-generation users for their patience and constructive feedback that helped us to get APE into shape.

License

APE is licensed under the Apache 2.0 license.

Maven dependencies

  1. OWL API - LGPL or Apache 2.0
  2. SAT4J - EPL or GNu LGPL
  3. apache-common-lang - Apache 2.0
  4. graphviz-java - Apache 2.0
  5. org.json - JSON license

References

[1] Kasalica, V., & Lamprecht, A.-L. (2020). Workflow Discovery with Semantic Constraints: The SAT-Based Implementation of APE. Electronic Communications of the EASST, 78(0). https://doi.org/10.14279/tuj.eceasst.78.1092

[2] Kasalica V., Lamprecht AL. (2020) APE: A Command-Line Tool and API for Automated Workflow Composition. ICCS 2020. ICCS 2020. Lecture Notes in Computer Science, vol 12143. Springer, https://doi.org/10.1007/978-3-030-50436-6_34

[3] Kasalica, V., & Lamprecht, A.-L. (2019). Workflow discovery through semantic constraints: A geovisualization case study. In Computational science and its applications – ICCSA 2019 (pp. 473–488), Springer International Publishing, https://doi.org/10.1007/978-3-030-24302-9_53

Owner

  • Name: Sanctuuary
  • Login: sanctuuary
  • Kind: organization
  • Email: v.kasalica@esciencecenter.nl
  • Location: Netherlands

Citation (CITATION.cff)

cff-version: 1.2.0
title: APE (Automated Pipeline Explorer)
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Vedran
    family-names: Kasalica
    email: v.kasalica@esciencecenter.nl
    affiliation: Netherlands eScience Center, Netherlands
    orcid: 'https://orcid.org/0000-0002-0097-1056'
  - family-names: Anna-Lena
    given-names: Lamprecht
    email: anna-lena.lamprecht@uni-potsdam.de
    affiliation: University of Potsdam, Germany
    orcid: 'https://orcid.org/0000-0003-1953-5606'
  - family-names: Koen
    given-names: Haverkort
    affiliation: Utrect University, Netherlands
    orcid: 'https://orcid.org/0009-0005-4904-0868'
  - family-names: Maurin
    given-names: Voshol
identifiers:
  - type: doi
    value: 10.5281/zenodo.5638988
repository-code: 'https://github.com/sanctuuary/APE/'
url: 'https://ape-framework.readthedocs.io/en/latest/'
abstract: >-
  APE (Automated Pipeline Explorer) is a command line tool and Java API for the automated exploration of possible computational pipelines (scientific workflows) from large collections of computational tools.

  APE relies on a semantic domain model that includes tool and type taxonomies as controlled vocabularies for the description of computational tools, and functional tool annotations (inputs, outputs, operations performed) using terms from these taxonomies. Based on this domain model and a specification of the available workflow inputs, the intended workflow outputs and possibly additional constraints, APE then computes possible workflows.

  Internally, APE uses a component-based program synthesis approach. It translates the domain knowledge and workflow specification into logical formulas that are then fed to a SAT solver to compute satisfying instances. These solutions are then translated into the actual candidate workflows.
keywords:
  - automated workflow composition
  - workflow synthesis
license: Apache-2.0
commit: 8d13cb975dacf7e757cd5faf2276449bea16f93c
version: 2.2.0
date-released: '2023-11-14'

GitHub Events

Total
  • Create event: 3
  • Release event: 1
  • Issues event: 3
  • Watch event: 4
  • Delete event: 1
  • Push event: 5
  • Pull request event: 1
  • Pull request review event: 5
  • Pull request review comment event: 3
  • Fork event: 2
Last Year
  • Create event: 3
  • Release event: 1
  • Issues event: 3
  • Watch event: 4
  • Delete event: 1
  • Push event: 5
  • Pull request event: 1
  • Pull request review event: 5
  • Pull request review comment event: 3
  • Fork event: 2

Issues and Pull Requests

Last synced: 9 months ago

All Time
  • Total issues: 45
  • Total pull requests: 106
  • Average time to close issues: 6 months
  • Average time to close pull requests: 3 days
  • Total issue authors: 7
  • Total pull request authors: 6
  • Average comments per issue: 0.53
  • Average comments per pull request: 0.2
  • Merged pull requests: 99
  • Bot issues: 0
  • Bot pull requests: 8
Past Year
  • Issues: 7
  • Pull requests: 1
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 26 days
  • Issue authors: 3
  • Pull request authors: 1
  • Average comments per issue: 0.43
  • Average comments per pull request: 3.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • vedran-kasalica (27)
  • m4urin (3)
  • rensieeee (2)
  • ni-be (2)
  • Ambivalentalfa (2)
  • HelenParr (1)
  • 524D (1)
  • KoenHav (1)
Pull Request Authors
  • vedran-kasalica (52)
  • m4urin (16)
  • dependabot[bot] (8)
  • KoenHav (7)
  • rensieeee (1)
  • annalenalamprecht (1)
Top Labels
Issue Labels
enhancement (11) bug (10) documentation (3) good first issue (2) dependencies (2) faq (1)
Pull Request Labels
dependencies (8)

Packages

  • Total packages: 3
  • Total downloads: unknown
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 2
    (may contain duplicates)
  • Total versions: 72
proxy.golang.org: github.com/sanctuuary/ape
  • Versions: 23
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago
proxy.golang.org: github.com/sanctuuary/APE
  • Versions: 23
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago
repo1.maven.org: io.github.sanctuuary:APE

APE is a command line tool and an API for the automated exploration of possible computational pipelines (workflows) from large collections of computational tools.

  • Versions: 26
  • Dependent Packages: 0
  • Dependent Repositories: 2
Rankings
Dependent repos count: 16.1%
Average: 38.5%
Stargazers count: 41.7%
Forks count: 45.8%
Dependent packages count: 50.1%
Last synced: 6 months ago

Dependencies

pom.xml maven
  • guru.nidi:graphviz-java 0.17.0
  • net.sourceforge.owlapi:owlapi-distribution 5.1.20
  • org.antlr:antlr4-runtime 4.10.1
  • org.apache.commons:commons-lang3 3.12.0
  • org.apache.logging.log4j:log4j-core 2.17.2
  • org.json:json 20220320
  • org.sat4j:org.sat4j.core 2.3.1
  • org.slf4j:slf4j-simple 1.7.36
  • org.yaml:snakeyaml 1.30
  • org.junit.jupiter:junit-jupiter-api 5.8.2 test
.github/workflows/codeql.yml actions
  • actions/checkout v3 composite
  • github/codeql-action/analyze v2 composite
  • github/codeql-action/autobuild v2 composite
  • github/codeql-action/init v2 composite
.github/workflows/mvnbuild.yml actions
  • actions/checkout v3 composite
  • actions/setup-java v3 composite
  • advanced-security/maven-dependency-submission-action 571e99aab1055c2e71a1e2309b9691de18d6b7d6 composite
.github/workflows/fairsoftware.yml actions
  • fair-software/howfairis-github-action 0.2.1 composite