Semsimian Server
A simple web server for the Semsimian project, written in Rust.
Requirements:
-
- rustup >= 1.28
- rustc >= 1.89
- cargo >= 1.89
Installation:
-
Semsimian Server requires a local copy of the Phenio DB.
It will check for the existence of$HOME/.data.oaklib/phenio.db, and automatically download the latest version if it is missing.
However, if you wish to use a specific version, you may manually download a copy ofphenio.db.gz
from https://data.monarchinitiative.org and unpack it into$HOME/.data/oaklib:
From crates.io
Semsimian Server is published to crates.io.
To install it for local usage, you can run:
This will install the binary to your ~/.cargo/bin directory,
which can be run from any directory by calling:
From Source
- Clone the repository:
- Build the project:
- Run the server:
Docker Image
A Dockerfile is provided for convenience. While it is hosted on Google Cloud Platform,
it can be built locally.
To build the image, run the following command from the root of the repository:
To run the image, run the following command:
Usage:
In debug mode (ie. cargo build), the server will be running on http://localhost:9999.
The address and port can be configured in the Rocket.toml file, or by setting the ROCKET_ADDRESS and ROCKET_PORT environment variables.
The server exposes two endpoints:
-
/compare/<termset1>/<termset2>/<metric>:
Returns a JSON object containing the similarity score between the two termsets.termset1andtermset2: comma-separated lists of ontology terms.metric: (optional) the similarity method to use, one of:ancestor_information_content(default)jaccard_similarityphenodigm_scorecosine_similarity
-
/search/<termset>/<prefix>/<metric>?<limit>&<direction>:
Returns a JSON object containing a list of ontology terms that match the search term and prefix.termset: comma-separated list of ontology terms.prefix: string that will be used to filter the results.metric: (optional) the similarity method to use, one of:ancestor_information_content(default)jaccard_similarityphenodigm_scorecosine_similarity
limit: number, limit the number of resultsdirection: the direction of the associations to search for, one of:
bidirectional,subject_to_object,object_to_subject
Example endpoints:
- http://localhost:9999/compare/HP:0000001,HP:0000002/HP:0000003,HP:0000004
- http://localhost:9999/compare/HP:0000001,HP:0000002/HP:0000003,HP:0000004/jaccard_similarity
- http://localhost:9999/search/HP:0000001,HP:0000002/zfin/ancestor_information_content?limit=5&direction=bidirectional
- http://localhost:9999/search/HP:0000001,HP:0000002/zfin?limit=3&direction=bidirectional