# Metamist
[![codecov](https://codecov.io/gh/populationgenomics/metamist/branch/dev/graph/badge.svg?token=OI3XZYR9HK)](https://codecov.io/gh/populationgenomics/metamist)
## Introduction
**Metamist** is a database designed for storing **de-identified** -omics metadata.
## Purpose
The project provides an interface to interact with the -omics database via the Python client as well as the GraphQL + HTTP APIs.
## Features
- **Project-Based Resource Organization**: Every resource in Metamist is associated with a specific project.
- **Access Control**: Access to resources is controlled through membership in specific Google Groups:
- `dataset-sample-metadata-main-read`: For read-only access.
- `dataset-sample-metadata-main-write`: For write access.
- **Efficiency Note**: Members of Google Groups are cached in a blob to optimize performance, as group-membership identity lookups can be slow.
## High-Level Architecture
It comprises three key components:
1. **System-Versioned MariaDB Database**: A robust database system for managing -omics metadata.
2. **Python Web API**: This component is responsible for:
- Managing permissions.
- Storing frequently used queries.
- Providing a GraphQL/HTTP API for efficient querying of the database.
3. **Installable Python Library**: Wraps the Python Web API using the OpenAPI generator, facilitating easier interaction with the system.
### Schema
As of Jan 15, 2024 this schema should reflect the data structure on the tables:
![Database Structure](resources/schemav7.7.png.png)
You can also find this at [DbDiagram](https://dbdiagram.io/d/Metamist-Schema-v7-7-6600c875ae072629ced6a1fc).
The codebase contains the following modules worth noting:
- `models` -> General data models + enums
- `db/python/tables` -> Interaction with MariaDB / BigQuery
- `db/python/layers` -> Logic
- `api/graphql` : GraphQL
- `api/routes`: HTTP + OpenAPI
And metamist maintains two clients:
- `web` -> React app that consumes a generated Typescript API + GraphQL
- `metamist` -> autogenerated Python API
## Installation and Running Locally
- [Installation and developer setup](docs/installation.md)
## License
This project is licensed under the MIT License. You can see it in the [LICENSE](LICENSE) file in the root directory of this source tree.
Raw data
{
"_id": null,
"home_page": "https://github.com/populationgenomics/metamist",
"name": "metamist",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "bioinformatics",
"author": null,
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/08/50/4bc8c5dd82f3a4dd81c55fb5021f6bcb806e48ce54702c8b94d361f9875b/metamist-6.10.1.tar.gz",
"platform": null,
"description": "# Metamist\n\n[![codecov](https://codecov.io/gh/populationgenomics/metamist/branch/dev/graph/badge.svg?token=OI3XZYR9HK)](https://codecov.io/gh/populationgenomics/metamist)\n\n\n## Introduction\n\n**Metamist** is a database designed for storing **de-identified** -omics metadata.\n\n## Purpose\n\nThe project provides an interface to interact with the -omics database via the Python client as well as the GraphQL + HTTP APIs.\n\n## Features\n\n- **Project-Based Resource Organization**: Every resource in Metamist is associated with a specific project.\n- **Access Control**: Access to resources is controlled through membership in specific Google Groups:\n - `dataset-sample-metadata-main-read`: For read-only access.\n - `dataset-sample-metadata-main-write`: For write access.\n- **Efficiency Note**: Members of Google Groups are cached in a blob to optimize performance, as group-membership identity lookups can be slow.\n\n## High-Level Architecture\n\nIt comprises three key components:\n\n1. **System-Versioned MariaDB Database**: A robust database system for managing -omics metadata.\n\n2. **Python Web API**: This component is responsible for:\n - Managing permissions.\n - Storing frequently used queries.\n - Providing a GraphQL/HTTP API for efficient querying of the database.\n\n3. **Installable Python Library**: Wraps the Python Web API using the OpenAPI generator, facilitating easier interaction with the system.\n\n### Schema\n\nAs of Jan 15, 2024 this schema should reflect the data structure on the tables:\n\n![Database Structure](resources/schemav7.7.png.png)\n\nYou can also find this at [DbDiagram](https://dbdiagram.io/d/Metamist-Schema-v7-7-6600c875ae072629ced6a1fc).\n\nThe codebase contains the following modules worth noting:\n\n- `models` -> General data models + enums\n- `db/python/tables` -> Interaction with MariaDB / BigQuery\n- `db/python/layers` -> Logic\n- `api/graphql` : GraphQL\n- `api/routes`: HTTP + OpenAPI\n\nAnd metamist maintains two clients:\n\n- `web` -> React app that consumes a generated Typescript API + GraphQL\n- `metamist` -> autogenerated Python API\n\n## Installation and Running Locally\n\n- [Installation and developer setup](docs/installation.md)\n\n## License\n\nThis project is licensed under the MIT License. You can see it in the [LICENSE](LICENSE) file in the root directory of this source tree.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python API for interacting with the Sample API system",
"version": "6.10.1",
"project_urls": {
"Homepage": "https://github.com/populationgenomics/metamist"
},
"split_keywords": [
"bioinformatics"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "08504bc8c5dd82f3a4dd81c55fb5021f6bcb806e48ce54702c8b94d361f9875b",
"md5": "debb48c7a5e01b2375a1479335e77f4f",
"sha256": "93a7bd13b89e64b14c92320f37e6b908bdba68b4f3faa461b939998ae5469d9c"
},
"downloads": -1,
"filename": "metamist-6.10.1.tar.gz",
"has_sig": false,
"md5_digest": "debb48c7a5e01b2375a1479335e77f4f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 176253,
"upload_time": "2024-05-01T05:56:28",
"upload_time_iso_8601": "2024-05-01T05:56:28.764903Z",
"url": "https://files.pythonhosted.org/packages/08/50/4bc8c5dd82f3a4dd81c55fb5021f6bcb806e48ce54702c8b94d361f9875b/metamist-6.10.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-01 05:56:28",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "populationgenomics",
"github_project": "metamist",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "boto3",
"specs": [
[
"==",
"1.28.56"
]
]
},
{
"name": "botocore",
"specs": [
[
"==",
"1.31.56"
]
]
},
{
"name": "cpg-utils",
"specs": [
[
">=",
"5.0.5"
]
]
},
{
"name": "aiohttp",
"specs": []
},
{
"name": "async_lru",
"specs": []
},
{
"name": "cloudpathlib",
"specs": []
},
{
"name": "requests",
"specs": []
},
{
"name": "google-auth",
"specs": [
[
">=",
"2.19.0"
]
]
},
{
"name": "google-cloud-secret-manager",
"specs": [
[
"==",
"2.8.0"
]
]
},
{
"name": "google-cloud-bigquery",
"specs": [
[
"==",
"3.11.4"
]
]
},
{
"name": "google-cloud-logging",
"specs": [
[
"==",
"2.7.0"
]
]
},
{
"name": "google-cloud-pubsub",
"specs": [
[
"==",
"2.18.3"
]
]
},
{
"name": "google-cloud-storage",
"specs": [
[
"==",
"1.43.0"
]
]
},
{
"name": "uvicorn",
"specs": [
[
"==",
"0.18.3"
]
]
},
{
"name": "fastapi",
"specs": [
[
"==",
"0.85.1"
]
]
},
{
"name": "strawberry-graphql",
"specs": [
[
"==",
"0.206.0"
]
]
},
{
"name": "python-multipart",
"specs": [
[
"==",
"0.0.5"
]
]
},
{
"name": "databases",
"specs": [
[
"==",
"0.9.0"
]
]
},
{
"name": "SQLAlchemy",
"specs": [
[
"==",
"2.0.28"
]
]
},
{
"name": "cryptography",
"specs": [
[
">=",
"41.0.0"
]
]
},
{
"name": "python-dateutil",
"specs": [
[
"==",
"2.8.2"
]
]
},
{
"name": "slack-sdk",
"specs": [
[
"==",
"3.20.2"
]
]
}
],
"lcname": "metamist"
}