Python API

Python API

Basepairバージョン2.0.0に合わせて更新しています

BasepairのAPIのPythonバインディングについて説明します。 このページの内容の概要は次のとおりです。

  1. 利用可能なデータのリスト
  2. サンプルの作成または削除
  3. 分析を作成する
  4. ダウンロード結果

Python3 対話型セッションを開始した後、次を実行します。

import basepair
import json
bp = basepair.connect(json.load(open('/path/to/basepair.config.json'))

1. 利用可能なデータをリストアップします。

“bp.print_data()”コマンドを使用して、利用可能なさまざまなタイプのデータを一覧表示できます。 デフォルトでは、人間が判読できる表形式でデータが印刷されます。これには、各項目に関連付けられたすべてのデータは含まれず、重要なデータのみが含まれます。 各項目に関連付けられたすべてのデータを表示したい場合は、json パラメーターを True に設定します。

1.1 ゲノムのリストを作成する

以下は、利用可能なゲノムをテーブルとして出力します。

bp.print_data('genomes')

# will return a list like so:
  id  name                     date_created
----  -----------------------  --------------------------
   1  hg19                     2018-04-18T14:58:15.865993
   2  mm10                     2018-04-18T15:05:39.770488
   3  mm9                      2018-04-18T15:10:33.438603
   4  danRer10                 2018-04-18T15:15:11.281866
   5  tair10                   2018-04-18T15:17:19.582104
   6  dm6                      2018-04-18T15:23:27.298556
   7  danRer7                  2018-04-18T15:28:12.977544
   8  sacCer3                  2018-04-18T15:30:50.993198
   9  SL2.40                   2018-04-18T15:31:50.603006
  10  Xla.v91                  2018-04-18T15:36:55.491452
  11  xenTro7                  2018-04-18T15:43:42.386466
  12  taeGut2                  2018-04-18T15:44:56.550366
  13  Streptococcus_sanguinis  2018-04-18T15:45:06.695995
  14  CENPK113-7D-RP           2018-04-18T15:45:26.305311
  15  rn6                      2018-04-18T15:46:13.155202
  16  susScr11                 2018-04-18T15:48:53.443899
  17  ce11                     2018-04-18T15:49:32.644737
  18  Manis_javanica           2018-04-18T16:09:05.805615
  19  Ictalurus_punctatus      2018-04-18T16:16:12.306990
  20  mouse_GRCm38_M18         2018-10-04T15:40:16.284047
  21  Citrus_clementina.v1     2018-10-04T15:46:23.320161
  22  Nematostella_vectensis   2018-10-26T18:06:36.340901
  23  Gallus_gallus            2018-10-30T14:02:58.811138

生のJSONデータを確認するには:

bp.genomes

# which will output something like this:

[{'date_created': '2018-04-18T14:58:15.865993',
  'id': 1,
  'name': 'hg19',
  'resource_uri': '/api/v1/genomes/1'},
 {'date_created': '2018-04-18T15:05:39.770488',
  'id': 2,
  'name': 'mm10',
  'resource_uri': '/api/v1/genomes/2'},
 {'date_created': '2018-04-18T15:10:33.438603',
  'id': 3,
  'name': 'mm9',
  'resource_uri': '/api/v1/genomes/3'},
...

1.2 ワークフローのリスト化

分析を構築するときは、このコマンドでどのようなワークフローが利用できるのかも知りたいでしょう。

ワークフローを美しいテーブルとして表示するには:

bp.print_data('workflows')

生の JSON を確認するには:

bp.get_workflows()

1.3 リストサンプル

Basepair アカウントにすでにあるサンプルをリストすることができます。

きれいなテーブルでサンプルを確認するには:

bp.print_data('samples')

生の JSON を確認するには:

bp.get_samples()

1.4 サンプルを入手する

JSON 形式の情報とサンプルの関連付けを使用することもできます。 以下の例では、ID 10000 のサンプルを取得します。

sample = bp.get_sample(10000)

1.4 リスト分析

すべての分析のリストを取得します。

分析をきれいな表で見るには:

bp.print_data('analyses')

生の JSON を確認するには:

bp.get_analyses()

1.5 List analysis detail

特定の分析に関連付けられたデータ (ファイルなど) を確認したいとします。 分析の詳細はURLで確認できます。 例: https://app.basepairtech.com/#/analyses/10000

分析の詳細をきれいな表で確認するには:

bp.print_data('analysis', uid=[10000])

生の JSON を確認するには:

bp.get_analysis(10000)

2. サンプルを作成または削除する

Basepair サンプルは、「BpSample」クラスを通じて処理されます。 これを使用して、新しいサンプルを作成したり、既存のサンプルに関連付けられた情報を取得するという2つの主な操作を行うことができます。

2.1 新しいサンプルを作成する

以下の例では、「hg19」ゲノムを使用し、「1-reads_1.fq.gz」と「2-reads_2.fq.gz」という 2 つのファイルを持つペアエンドデータである「test」という名前の新しいサンプルを作成します。サンプルを作成したら、Basepair にアップロードします。

data = {
    'name': 'Sample1',
    'genome':'hg19',
    'filepaths1': [
        'Sample1.lane1.R1.fastq.gz'
        'Sample1.lane2.R1.fastq.gz'],
    'filepaths2': [
        'Sample1.lane1.R2.fastq.gz'
        'Sample1.lane2.R2.fastq.gz'],
}

sample = bp.create_sample(data=data)

上記の例では、最低限の情報が提供されています。詳細を確認するには、Python コンソールで「?BpSample」を実行してください。

2.2 サンプルを削除する

サンプルを削除することもできます。成功すると、「<Response [204]>」が返されます。

bp.delete_sample(10000)

3. 分析の作成または削除

**このセクションはまだ作成中です***

分析を作成するには、ワークフロー「id」が必要です (「bp.get_workflows()」を実行することで取得できます)。 以下の例では、STAR を使用して読み取りをマッピングおよび定量化する分析を作成します。

bp.create_analysis(workflow_id='4',sample_id='3206')

次のようなカスタム パラメーターを使用して分析を実行することもできます。

bp.create_analysis(
    workflow_id = '5',
    sample_id = '1',
    params={
        'node':{
            'annotate':{
                'upstream':'5000',
                'downstream':'5000',
            }
        }
    }
)

params変数は、特定の分析モジュールのデフォルト パラメーターをオーバーライドするために使用されます。paramsの入力形式は {‘node’: {‘module_name’: {‘module_parameter’: ‘parameter_custom_value’}}} です。

3つ以上のグループを必要とするパイプラインの場合、これらの入力を使用する特定のモジュールの入力をオーバーライドする必要があります。 3つ以上のグループパイプラインを使用するdeseqとcuffdiffの場合と同様に:

bp.create_analysis(workflow_id='42', sample_ids=[5014, 5016, 5017, 5018], params={'node':{'deseq':{'group_ids':'5017,5018:5016:5014', 'group_names': 'group 1 name:group 2 name:group 3 name'}}})

bp.create_analysis(workflow_id='29', sample_ids=[5014, 5016, 5017, 5018], params={'node':{'cuffdiff':{'group_ids':'5017,5018:5016:5014', 'group_names': 'group 1 name:group 2 name:group 3 name'}}})

4. 結果をダウンロードする

1 つまたは複数の分析からファイルをダウンロードできます。 以下にいくつかの例を示します。

4.1 例 1

このサンプルでは以下のことを行います:

  1. 分析結果からID10000のファイルをダウンロード
  2. タグ「bam」のないファイルのみを取得
  3. すべてのファイルを「test」ディレクトリにダウンロード
bp.download_analysis(
    10000,
    tags=[['bam']],
    tagkind='diff',
    outdir='./test/')

4.2 例 2

この例では、以下のことを行います:

  1. 分析結果からID10000のファイルをダウンロード
  2. 「fastqc」タグを含むファイルのみを取得
  3. すべてのファイルを「test」ディレクトリにダウンロード
bp.download_analysis(
    10000,
    tags=[['fastqc']],
    tagkind='subset',
    outdir='./test/')

4.3 例 3

この例では、以下のことを行います:

  1. 分析結果からID10000のファイルをダウンロード
  2. 「rnaseq_metrics」と「json」のいずれかでタグ付けされたファイル、または「fastqc」と「zip」でタグ付けされたファイルのみが含まれます。
  3. すべてのファイルを「test」ディレクトリにダウンロード
bp.download_analysis(
    10000,
    tags=[['rnaseq_metrics','json'],['fastqc','zip']],
    tagkind='exact',
    outdir='./test/')