{"id":47829314,"url":"https://github.com/basf/metis-backend","last_synced_at":"2026-04-03T20:07:15.198Z","repository":{"id":39490130,"uuid":"431291200","full_name":"basf/metis-backend","owner":"basf","description":"Scientific server implementation for the cloud environment","archived":false,"fork":false,"pushed_at":"2024-05-15T23:49:34.000Z","size":357,"stargazers_count":7,"open_issues_count":4,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-03-28T07:42:35.855Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/basf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-11-23T23:59:32.000Z","updated_at":"2025-02-15T11:48:55.000Z","dependencies_parsed_at":"2024-01-11T17:58:23.475Z","dependency_job_id":"5cca69c9-1ce2-4193-8d46-09abf3bb944d","html_url":"https://github.com/basf/metis-backend","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/basf/metis-backend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basf%2Fmetis-backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basf%2Fmetis-backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basf%2Fmetis-backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basf%2Fmetis-backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/basf","download_url":"https://codeload.github.com/basf/metis-backend/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basf%2Fmetis-backend/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31374101,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T17:53:18.093Z","status":"ssl_error","status_checked_at":"2026-04-03T17:53:17.617Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-03T20:07:15.108Z","updated_at":"2026-04-03T20:07:15.175Z","avatar_url":"https://github.com/basf.png","language":"Python","readme":"# Metis scientific backend\n\n\u003cp class=\"what_is_metis\"\u003e\u003cdfn\u003eMetis\u003c/dfn\u003e is an open scientific framework, materials data organizer, and collaborative online platform for the nanotechnology research. It was designed for the offline physical and online virtual autonomous laboratories dealing with the materials science. Metis is an AI-ready solution, aiming to bring the recent advances of computer science into a rather conservative area of new materials development and quality control. Metis currently focuses on the X-ray powder diffraction and atomistic simulations. Its development was started in 2021 in BASF (Ludwigshafen am Rhein, Germany) by Bernd Hinrichsen and Evgeny Blokhin.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"https://github.com/basf/metis-backend/blob/master/logo.png\" width=\"300\" /\u003e\u003c/p\u003e\n\n**This is the third part of the whole Metis infra: [GUI](https://github.com/basf/metis-gui) \u0026rlarr; [BFF](https://github.com/basf/metis-bff) \u0026rlarr; [backend](https://github.com/basf/metis-backend).**\n\nMetis backend presents minimalistic utility toolset in materials informatics and Flask-based CRUD-server for the nano-scale crystalline data, XRPD measurements, and cloud simulations.\n\n\n### Requirements\n\nThe basic requirements are **Python**, **Numpy**, and **PostgreSQL**. Note that the Numpy depends on the low-level Fortran numeric system libraries, which might be absent in your system. The Python dependency `xylib-py` requires C++ Boost stack to compile, install it on Debian with `apt-get install libboost-all-dev`.\n\n\nA scientific cloud scheduler [yascheduler](https://github.com/tilde-lab/yascheduler) is required for a separate cloud orchestration. An optional requirement is [AiiDA](https://github.com/aiidateam/aiida-core), which can be linked to the cloud scheduler. The AiiDA is a Python framework for the complex scientific workflows, requiring PostgreSQL database and **RabbitMQ** message broker.\n\nThus, `metis-backend` consists of the 3 independent parts, each using PostgreSQL:\n\n- `metis-backend` Python server per se\n- `aiida_core` workflow engine\n- `yascheduler` cloud scheduler\n\nOptionally, a frontend server is **Nginx** (`conf/nginx.conf` goes to `/etc/nginx`), and all these guys are controlled by the **Supervisor** daemon (`conf/supervisord.conf` goes to `/etc/supervisor`).\n\n\n## Installation\n\nRefer to `conf/install.sh` for installation of Nginx, PostgreSQL, RabbitMQ, and Supervisor, as well as configuring them. Run `conf/install.sh` and then modify global options `conf/env.ini`. Alternatively, feel free to install each component on your own (or all together in a container, see below).\n\nThe AiiDA can be installed and configured separately. First, a possibility for _ssh-ing_ into a localhost should be ensured:\n\n```shell\nssh-keygen -t rsa\ncat ~/.ssh/id_rsa.pub \u003e\u003e ~/.ssh/authorized_keys\nssh $USER@localhost\n```\n\nThen a `yascheduler` plugin is configured (`conf/yascheduler.conf` goes to `/etc/yascheduler`). After that run `yainit` to start a `yascheduler` service. Then, if you have already run `conf/install.sh` script, it should be enought to do:\n\n```shell\npip install aiida_core\nbash conf/aiida_setup.sh\n```\n\nThen setup your virtual env, if needed, and install the Python requirements as simply as`pip install -r requirements.txt`.\n\nFinally, apply the database schema: `/data/pg/bin/psql -U postgres -d metis -f schema/schema.sql`.\n\n\n## Running\n\nRun `supervisorctl status` to see all the services in Supervisor.\n\nOne by one, all the parts are managed as follows:\n\n- `metis-backend` server is started with `index.py`\n- `yascheduler` is started simply with `yascheduler` command\n- AiiDA is managed with `verdi`, e.g. `verdi process list` or `verdi node show`\n- AiiDA daemon is started separately with `verdi daemon start`\n- PostgreSQL database(s) can be seen with `/data/pg/bin/psql -U postgres -l`\n- RabbitMQ is controlled with `rabbitmqctl status`\n- (Nginx can be added to Supervisor as well depending on your taste)\n\n### Regular tasks\n\nA script `scripts/assign_phases.py` should be run regularly to organize users' uploaded data, e.g. in cron job scheduler\n\n`*/5 * * * * /path/to/metis-backend/scripts/assign_phases.py`\n\n\n## Run in containers\n\nThis is an experimental feature intended primarily for the development and testing.\n\nIt is assumed that you have the `metis-backend`, `metis-bff`, and `metis-gui`\nrepositories cloned on the same level. Also, you need `docker` (or `podman`\nand `podman-compose`) installed.\n\nNow, you can run `docker compose up` (`podman-compose up`) in `metis-backend`\ndirectory. This should start all dependencies and services.\n\n`metis-gui` should be available at `http://localhost:10000/`\n\n`metis-bff` should be available at `http://localhost:3000/`\n\n\n## Recognized data formats\n\n\n### Crystalline structures\n\n- CIF\n- POSCAR\n- Optimade JSON\n\n\n### XRPD data\n\n- XY and XYE patterns (TSV-alike)\n- Bruker's RAW (*binary*)\n- Bruker's Topas CLI modeling\n- Synchrotron HDF5 NeXus (*binary*)\n\n\n## License\n\nCopyright 2021-2023 BASF SE\n\nBSD 3-Clause\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasf%2Fmetis-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbasf%2Fmetis-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasf%2Fmetis-backend/lists"}