Skip to main content

A library to perform machine reading over a model codebase in order to automatically extract key metadata.

Project description

Domain-Model-eXaminer (DMX)

Description

The goal of this process is to perform machine reading over the model codebase in order to automatically extract key metadata about:

  • Input files
  • Output files
  • System requirements
  • Software requirements
  • Model entry points
  • Model descriptions
  • Maintainer information

Installation

Pip package

The domain-model-examiner library can be installed via pip:

pip install domainmodelexaminer

Local installation from source

After cloning the repo, the recommended installation is to create a new conda environment and then install from requirements.txt:

conda create --name=dmx python=3.8
conda activate dmx
conda install -c conda-forge uvicorn
pip install -r requirements.txt

Docker installation from source

After cloining the repo, docker install and run:

docker build -t dmx .
docker run -p 80:80 dmx

The API docs will be available at http://0.0.0.0/docs.

Usage

Pip Package

The examine function of module dmx of package domainmodelexaminer takes the following parameters:

  • url (str) GitHub or GitLab repo url.
  • return_json (bool = True) Returns a JSON string if true, else a YAML string.

and returns either JSON (default) or a YAML string.

The examine function can be imported an executed as follows:

from domainmodelexaminer import dmx
dmx_json_output = dmx.examine("https://github.com/dojo-modeling/dojo")

Local install

List command line options

python dmx.py --help

Process Local Repository

Clone or download the repository of interest. For example:

cd /tmp
git clone https://github.com/jataware/dummy-model.git

Next, analyze this repo with:

python dmx.py --repo="/tmp/dummy-model"

Process Remote Repository

python dmx.py --url="https://github.com/jataware/dummy-model.git"

This creates and deletes a tempory folder 'tmp'.

Output

The application produces a .yaml file with prefix 'dmx-' concatenated with the repo name.

Running the API

Run API:

uvicorn domainmodelexaminer.api:app

The API docs will be available at http://127.0.0.1:8000/docs

Do not use the uvicorn --reload flag, since the app will download the repo to the api folder.

Testing Repositories

Note that Pythia is a highly abstracted Python version of the DSSAT model.

API Reference

Default port for Docker is 80. Default port for Uvicorn is 8000. Examples given below assume the Uvicorn server is running at port 8000.

Docs

  GET /docs
  e.g. http://127.0.0.1:8000/docs

Confirm the API is available:

  GET /
  e.g. http://127.0.0.1:8000/

Returns

{"status":"running"}

Examine URL

  GET /examine/${url}
  e.g. http://127.0.0.1:8000/examine/?url=https://github.com/jataware/dummy-model.git
Parameter Type Description
url string Required. URL of GitHub repo
return_json bool Default = False. Returns JSON true, else a YAML string.

Returns

JSON or YAML-formatted string e.g.

{
  "language": "Python",
  "owner": {
    "login": "dojo-modeling",
    "repo_url": "https://github.com/dojo-modeling/dojo",
    "type": "Organization",
    "name": null,
    "company": null,
    "blog": "",
    "location": null,
    "bio": null
  },
  "about": "not found",
  "docker_entrypoint": null,
  "model_types": [
    "Geospatial Data / Terrain Models"
  ],
  "imports": [
  ...

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

domainmodelexaminer-0.1.1.tar.gz (19.9 kB view hashes)

Uploaded Source

Built Distribution

domainmodelexaminer-0.1.1-py2.py3-none-any.whl (23.9 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page