Skip to content

monarch-initiative/semsimian-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Semsimian Server

A simple web server for the Semsimian project, written in Rust.

Requirements:

  • Rust

    • rustup >= 1.28
    • rustc >= 1.87
    • cargo >= 1.87

Installation:

  1. Semsimian Server requires a local copy of the Phenio DB.
    Download a copy of phenio.db.gz from https://data.monarchinitiative.org and unpack it into $HOME/.data/oaklib:

    mkdir -p ~/.data/oaklib
    cd ~/.data/oaklib
    wget https://data.monarchinitiative.org/monarch-kg/latest/phenio.db.gz
    gunzip phenio

From crates.io

Semsimian Server is published to crates.io.
To install it for local usage, you can run:

cargo install semsimian_server

This will install the binary to your ~/.cargo/bin directory,
which can be run from any directory by calling:

semserver

From Source

  1. Clone the repository:
    git clone https://github.com/monarch-initiative/semsimian-server
  2. Build the project:
    cd semsimian-server
    cargo build
  3. Run the server:
    cargo run

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:

docker build -t semsimian-server .

To run the image, run the following command:

docker run -p 9999:9999 semsimian-server

Usage:

In debug mode (ie. cargo build), the server will be running on http://localhost:18811.
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.

    • termset1 and termset2: comma-separated lists of ontology terms.
    • metric: the similarity method to use, one of:
      ancestor_information_content, jaccard_similarity, phenodigm_score, cosine_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: the similarity method to use, one of:
      ancestor_information_content, jaccard_similarity, phenodigm_score, cosine_similarity
    • limit: number, limit the number of results
    • direction: the direction of the associations to search for, one of:
      bidirectional, subject_to_object, object_to_subject

Examples: http://localhost:18811/compare/HP:0000001,HP:0000002/HP:0000003,HP:0000004/ancestor_information_content http://localhost:18811/search/HP:0000001,HP:0000002/zfin/ancestor_information_content

About

Rust web server for Semsimian - a semantic similarity implementation

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5