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项目
  • 每个实例,terra API设置:

    • 使用google帐户和帐单项目为terra api设置凭据。
        gcloud auth login <google-account>
        gcloud auth application-default set-quota-project <billing-project-id>   
      
  • 验证

    ^{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)

sso sequence diagram

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', ...]

数据仪表板

notebook example

贡献

  • 设置虚拟环境

    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/

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
添加组件后,java JTable为空   java将json发送到php并插入mysql,但返回null   java Spring引导JNDI CommonJ资源   从不同PC创建和合并后的Java servlet问题   java如何在使用findelements时从xpath获取文本   java使用spring boot使用gmail smtp发送电子邮件   java在不使用pojo、bean或getter和setter的情况下获取Json标题的Json数组   Java中的OpenFile对话框将null作为响应   JavaBuilder模式。扩展接口   java中无需替换的数据结构选取   java如何评价Encog中的预测神经网络   java如何在安卓中使用实际的HttpURLConnection进行单元测试?   java使用XML配置禁用WebSocket中的CSRF保护   java如何通过hibernate从多表查询中获取数据?   mysql如何在java中获取更新的行Id   java AEM/CQ组件单一组件/有限组件   java FFmpeg Javacv延迟问题   显示整数数组的java不起作用