metamist


Namemetamist JSON
Version 6.10.1 PyPI version JSON
download
home_pagehttps://github.com/populationgenomics/metamist
SummaryPython API for interacting with the Sample API system
upload_time2024-05-01 05:56:28
maintainerNone
docs_urlNone
authorNone
requires_pythonNone
licenseMIT
keywords bioinformatics
VCS
bugtrack_url
requirements boto3 botocore cpg-utils aiohttp async_lru cloudpathlib requests google-auth google-cloud-secret-manager google-cloud-bigquery google-cloud-logging google-cloud-pubsub google-cloud-storage uvicorn fastapi strawberry-graphql python-multipart databases SQLAlchemy cryptography python-dateutil slack-sdk
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 0.29817s