Python API
Basepairバージョン2.0.0に合わせて更新しています
BasepairのAPIのPythonバインディングについて説明します。 このページの内容の概要は次のとおりです。
- 利用可能なデータのリスト
- サンプルの作成または削除
- 分析を作成する
- ダウンロード結果
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
このサンプルでは以下のことを行います:
- 分析結果からID10000のファイルをダウンロード
- タグ「bam」のないファイルのみを取得
- すべてのファイルを「test」ディレクトリにダウンロード
bp.download_analysis(
10000,
tags=[['bam']],
tagkind='diff',
outdir='./test/')
4.2 例 2
この例では、以下のことを行います:
- 分析結果からID10000のファイルをダウンロード
- 「fastqc」タグを含むファイルのみを取得
- すべてのファイルを「test」ディレクトリにダウンロード
bp.download_analysis(
10000,
tags=[['fastqc']],
tagkind='subset',
outdir='./test/')
4.3 例 3
この例では、以下のことを行います:
- 分析結果からID10000のファイルをダウンロード
- 「rnaseq_metrics」と「json」のいずれかでタグ付けされたファイル、または「fastqc」と「zip」でタグ付けされたファイルのみが含まれます。
- すべてのファイルを「test」ディレクトリにダウンロード
bp.download_analysis(
10000,
tags=[['rnaseq_metrics','json'],['fastqc','zip']],
tagkind='exact',
outdir='./test/')