AnVIL客户端库。将gen3、terra客户端api与单点登录和数据协调用例相结合。
pyAnVIL的Python项目详细描述
平砧:terra+gen3
gen3和terra的python客户端集成。在
对于需要同时访问terra和gen3平台的python开发人员来说,pyAnVIL是一个集成模块,它使用terra作为IDP(身份提供程序)提供SSO(单点登录),并管理依赖关系的分布,这与处理多个凭据和安装不同,pyAnVIL提供了开发人员友好的体验。在
安装
先决条件:
- 在
gcloud cli工具已安装并配置gcloud。在
在 - 在
Terra和Gen3中提供的Google Id:
- 一次性帐户链接:
- 先决条件:在Gen3和Terra中都提供了google帐户。在
- 登录https://gen3.theanvil.io/
- 登录https://anvil.terra.bio
- 在Terra中,导航到您的个人资料
- 在“IDENTITY&EXTERNAL SERVERS”下,登录到
NHGRI AnVIL Data Commons Framework Services
,系统应该为您提供一个gen3oauth流。在 - 注意用于计费的google项目
- 在“IDENTITY&EXTERNAL SERVERS”下,登录到
- 一次性帐户链接:
- 在
每个实例,terra API设置:
- 使用google帐户和帐单项目为terra api设置凭据。
在gcloud auth login <google-account> gcloud auth application-default set-quota-project <billing-project-id>
- 使用google帐户和帐单项目为terra api设置凭据。
- 在
验证
^{pr2}$ 在 - 在
设置
在pip install pyAnVIL
用例
SSO
from anvil.gen3_auth import Gen3TerraAuth
from gen3.submission import Gen3Submission
auth = Gen3TerraAuth()
gen3_endpoint = "https://gen3.theanvil.io"
submission_client = Gen3Submission(gen3_endpoint, auth)
API包装
第3代
query = '{project(first:0) {code, subjects {submitter_id}, programs {name} }}'
results = submission_client.query(query)
[p['code'] for p in results['data']['project']]
>>> ['GTEx', '1000Genomes']
地形
from anvil.terra import FAPI
FAPI.whoami()
>>> 'anvil.user@gmail.com'
Terra公用事业公司
from anvil.terra import get_projects
projects = get_projects(namespaces=['anvil-datastorage'], project_pattern='AnVIL_CCDG.*')
[p['workspace']['name'] for p in projects]
>>> ['AnVIL_CCDG_WashU_CVD_EOCAD_BioMe_WGS',
'AnVIL_CCDG_Broad_CVD_EOCAD_TaiChi_WGS',
'AnVIL_CCDG_Broad_AI_IBD_Brant_DS-IBD_WGS', ...]
数据仪表板
query = '{project(first:0) {code, subjects {submitter_id}, programs {name} }}'
results = submission_client.query(query)
[p['code'] for p in results['data']['project']]
>>> ['GTEx', '1000Genomes']
from anvil.terra import FAPI
FAPI.whoami()
>>> 'anvil.user@gmail.com'
from anvil.terra import get_projects
projects = get_projects(namespaces=['anvil-datastorage'], project_pattern='AnVIL_CCDG.*')
[p['workspace']['name'] for p in projects]
>>> ['AnVIL_CCDG_WashU_CVD_EOCAD_BioMe_WGS',
'AnVIL_CCDG_Broad_CVD_EOCAD_TaiChi_WGS',
'AnVIL_CCDG_Broad_AI_IBD_Brant_DS-IBD_WGS', ...]
贡献
- 在
设置虚拟环境
在python3 -m venv venv source venv/bin/activate python3 -m pip install -r requirements.txt python3 -m pip install -r requirements-dev.txt
- 在
测试gen3授权
在python3 -m pytest --user_email <GMAIL ACCOUNT> --log-level DEBUG --gen3_endpoint <GEN3_ENDPOINT> tests/integration/test_gen3_auth.py
- 在
持续集成
在# see https://github.com/broadinstitute/firecloud-tools/tree/master/scripts/register_service_account docker run --rm -it -v "$HOME"/.config:/.config -v /Users/walsbr/client-apis/pyAnVIL/client_secret.json:/svc.json broadinstitute/firecloud-tools python /scripts/register_service_account/register_service_account.py -j /svc.json -e brian@bwalsh.com The service account pyanvil@api-project-807881269549.bwalsh.com.iam.gserviceaccount.com is now registered with FireCloud. You can share workspaces with this address, or use it to call APIs.
分配
- PyPi公司
# refresh from data ingestion tracker spread sheet, update pypi
export TWINE_USERNAME= # the username to use for authentication to the repository.
export TWINE_PASSWORD= # the password to use for authentication to the repository.
rm -r dist/
python3 setup.py data_ingestion_tracker sdist bdist_wheel
twine upload dist/*
- 阅读文档
https://readthedocs.org/projects/pyanvil/
- 项目
标签: