遺伝子情報をDB横断的に検索するPythonパッケージ "gget"

ggetの使い方。

論文は以下。

[Laura Luebbert, Lior Pachter, Efficient querying of genomic reference databases with gget, Bioinformatics, 2023;, btac836, https://doi.org/10.1093/bioinformatics/btac836](https://doi.org/10.1093/bioinformatics/btac836)

ggetは Ensembl, UniProt, NCBI などの遺伝子配列データベースを対象にした遺伝子名や遺伝子IDによる配列検索、BLAST検索などを簡単に実行するインターフェースを提供してくれるPythonパッケージ。コマンドラインバージョンもあるがここでは解析プログラムにも組み込みやすいPython APIを紹介する。

R言語の場合は使いやすいツールとしてbiomaRtがあるけど、biomaRtが検索時にDBをひとつ固定するのに対して、ggetの場合はデータベース横断的に検索してくれるのが特徴。

ここでは遺伝子検索に関連する一連の操作として、以下の基本的な検索、

1. リファレンス生物種の情報取得（ gget ref ）
1. フリーテキストによる遺伝子検索（ gget search ）
1. 遺伝子メタ情報の取得（ gget info ）
1. 遺伝子配列の取得（ gget seq ）
1. BLAST検索（ gget blast ）

さらに、発展的な検索？というより外部ツールの簡単な利用インターフェースとして提供されている以下、

- マッピングによるゲノム座標取得（ gget blat ）
- KEGGやGOによるエンリッチメント解析（ gget enrichr ）
- ARCHS4を利用した発現相関遺伝子の探索（ gget archs4 ）
- タンパク質立体構造の取得（ gget pdb ）

などの機能も紹介する。

# インストール

```bash
pip install gget
```
でオーケー。パッケージ依存性は最小限で、依存してるのもbeautifulsoup4, MySQL-connector, requestsくらいなのでインストールも簡単。

# 基本的な検索


```python
import gget
```

## gget ref : リファレンス生物種の情報取得

リファレンス生物種のメタ情報の取得、ゲノム配列や遺伝子アノテーションファイルのダウンロードリンクなどの表示。

利用できるリファレンスゲノムのリストアップ。とくに指定しない場合はEnsemblの最新版から取得。


```python
gget.ref(species=None, list_species=True)[:10]
```

    ['acanthochromis_polyacanthus',
     'accipiter_nisus',
     'ailuropoda_melanoleuca',
     'amazona_collaria',
     'amphilophus_citrinellus',
     'amphiprion_ocellaris',
     'amphiprion_percula',
     'anabas_testudineus',
     'anas_platyrhynchos',
     'anas_platyrhynchos_platyrhynchos']



生物種名を指定すると、利用できるファイルのFTP LINKとファイルサイズなどを表示してくれる。


```python
gget.ref(species='mus_musculus')
```

    {'mus_musculus': {'transcriptome_cdna': {'ftp': 'http://ftp.ensembl.org/pub/release-108/fasta/mus_musculus/cdna/Mus_musculus.GRCm39.cdna.all.fa.gz',
       'ensembl_release': 108,
       'release_date': '2022-10-04',
       'release_time': '19:32',
       'bytes': '49M'},
      'genome_dna': {'ftp': 'http://ftp.ensembl.org/pub/release-108/fasta/mus_musculus/dna/Mus_musculus.GRCm39.dna.primary_assembly.fa.gz',
       'ensembl_release': 108,
       'release_date': '2022-10-04',
       'release_time': '18:37',
       'bytes': '769M'},
      'annotation_gtf': {'ftp': 'http://ftp.ensembl.org/pub/release-108/gtf/mus_musculus/Mus_musculus.GRCm39.108.gtf.gz',
       'ensembl_release': 108,
       'release_date': '2022-10-04',
       'release_time': '19:16',
       'bytes': '31M'},
      'coding_seq_cds': {'ftp': 'http://ftp.ensembl.org/pub/release-108/fasta/mus_musculus/cds/Mus_musculus.GRCm39.cds.all.fa.gz',
       'ensembl_release': 108,
       'release_date': '2022-10-04',
       'release_time': '19:32',
       'bytes': '16M'},
      'non-coding_seq_ncRNA': {'ftp': 'http://ftp.ensembl.org/pub/release-108/fasta/mus_musculus/ncrna/Mus_musculus.GRCm39.ncrna.fa.gz',
       'ensembl_release': 108,
       'release_date': '2022-10-04',
       'release_time': '19:45',
       'bytes': '7.6M'},
      'protein_translation_pep': {'ftp': 'http://ftp.ensembl.org/pub/release-108/fasta/mus_musculus/pep/Mus_musculus.GRCm39.pep.all.fa.gz',
       'ensembl_release': 108,
       'release_date': '2022-10-04',
       'release_time': '19:32',
       'bytes': '11M'}}}



ダウンロードする場合は以下のように指定すると簡単。whichで必要なファイルだけ指定。ftpフラグ立てるとリンクURLだけをリストで返す。


```python
dl_links = gget.ref(species='mus_musculus',
                    which=['ncrna'],
                    ftp=True)

import urllib.request
urllib.request.urlretrieve(dl_links[0], 
                           './GRCm39_rna.fa.gz')
```

    ('./GRCm39_rna.fa.gz', <http.client.HTTPMessage at 0x13d3b7430>)



## gget search : フリーテキストによる遺伝子検索

適当なフリーテキストでEnsemblを検索する。結果はpandasのデータフレームで返す。


```python
gget.search(searchwords='ACE2', species='homo_sapiens')
```

<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>ensembl_id</th>
      <th>gene_name</th>
      <th>ensembl_description</th>
      <th>ext_ref_description</th>
      <th>biotype</th>
      <th>url</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>ENSG00000130234</td>
      <td>ACE2</td>
      <td>angiotensin converting enzyme 2 [Source:HGNC S...</td>
      <td>angiotensin converting enzyme 2</td>
      <td>protein_coding</td>
      <td>https://uswest.ensembl.org/homo_sapiens/Gene/S...</td>
    </tr>
    <tr>
      <th>1</th>
      <td>ENSG00000182240</td>
      <td>BACE2</td>
      <td>beta-secretase 2 [Source:HGNC Symbol;Acc:HGNC:...</td>
      <td>beta-secretase 2</td>
      <td>protein_coding</td>
      <td>https://uswest.ensembl.org/homo_sapiens/Gene/S...</td>
    </tr>
    <tr>
      <th>2</th>
      <td>ENSG00000224388</td>
      <td>BACE2-IT1</td>
      <td>BACE2 intronic transcript 1 [Source:HGNC Symbo...</td>
      <td>BACE2 intronic transcript 1</td>
      <td>lncRNA</td>
      <td>https://uswest.ensembl.org/homo_sapiens/Gene/S...</td>
    </tr>
  </tbody>
</table>
</div>



もう少し長い英文でも可能。その場合は全単語を含むか、いずれかを含むか、AND/ORをコントロールできる。


```python
df = gget.search(searchwords='angiotensin converting enzyme 2',
                 species='homo_sapiens',
                 andor='and',
                 limit=1)
display(df)
```

<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>ensembl_id</th>
      <th>gene_name</th>
      <th>ensembl_description</th>
      <th>ext_ref_description</th>
      <th>biotype</th>
      <th>url</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>ENSG00000130234</td>
      <td>ACE2</td>
      <td>angiotensin converting enzyme 2 [Source:HGNC S...</td>
      <td>angiotensin converting enzyme 2</td>
      <td>protein_coding</td>
      <td>https://uswest.ensembl.org/homo_sapiens/Gene/S...</td>
    </tr>
  </tbody>
</table>
</div>



```python
ens_id = df['ensembl_id'][0]
ens_id
```




    'ENSG00000130234'



## gget info : 遺伝子メタ情報の取得

Ensembl IDを利用して、Ensembl, UniProt, NCBIから横断的に遺伝子のメタ情報を取得する。結果はpandasのデータフレームで返ってくる。


```python
df = gget.info(ens_ids=[ens_id])
```

以下のような情報が含まれる。この情報使うとensembl, uniprot, pdbなどとのID変換も容易。


```python
df.columns
```




    Index(['ensembl_id', 'uniprot_id', 'pdb_id', 'ncbi_gene_id', 'species',
           'assembly_name', 'primary_gene_name', 'ensembl_gene_name', 'synonyms',
           'parent_gene', 'protein_names', 'ensembl_description',
           'uniprot_description', 'ncbi_description', 'subcellular_localisation',
           'object_type', 'biotype', 'canonical_transcript', 'seq_region_name',
           'strand', 'start', 'end', 'all_transcripts', 'transcript_biotypes',
           'transcript_names', 'transcript_strands', 'transcript_starts',
           'transcript_ends', 'all_exons', 'exon_starts', 'exon_ends',
           'all_translations', 'translation_starts', 'translation_ends'],
          dtype='object')



たとえば以下のような感じ。


```python
df[['ensembl_gene_name', 'uniprot_id', 'uniprot_description']]
```




<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>ensembl_gene_name</th>
      <th>uniprot_id</th>
      <th>uniprot_description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>ENSG00000130234</th>
      <td>ACE2</td>
      <td>Q9BYF1</td>
      <td>(Microbial infection) Acts as a receptor for h...</td>
    </tr>
  </tbody>
</table>
</div>



## gget seq : 遺伝子配列の取得

Ensembl IDを利用して、遺伝子の配列をFASTAで返す。


```python
result = gget.seq(ens_ids=[ens_id])
print(result[0])
print(result[1][:60])
```

    >ENSG00000130234 chromosome:GRCh38:X:15494566:15607236:-1
    GTGTTTGTCTTGACTGGCTAGCAACTTAGAACTTTTTAAAAGAGGCAAAGGCAGAGGAGA


塩基配列、タンパク質配列どちらも取得できる。translateフラグを立てるとタンパク質配列。塩基配列の場合はEnsemblから、タンパク質配列の場合はUniProtから取得。

アイソフォームを全部取得する場合はisoformsフラグを立てる。saveフラグ立てるとカレントディレクトリにFASTAファイルを保存する。


```python
result = gget.seq(ens_ids=[ens_id],
                  translate=True,
                  isoforms=True,
                  save=True)
```

## gget blast : BLAST検索

たとえば以下の配列をBLAST検索してみる。


```python
test_seq = result[1]
test_seq[:60]
```




    'MSSSSWLLLSLVAVTAAQSTIEEQAKTFLDKFNHEAEDLFYQSSLASWNYNTNITEENVQ'



sequenceに遺伝子の配列、あるいは検索するFASTAファイルのパスを指定する。

program は、'blastn', 'blastp', 'blastx', 'tblastn', 'tblastx' から選び、

database は、'nt', 'nr', 'refseq_rna', 'refseq_protein', 'swissprot', 'pdbaa', 'pdbnt' から選ぶ。

デフォルトでは、塩基配列の場合、 'nt' に対する 'blastn' 、タンパク質配列の場合、 'nr' に対する 'blastp' となる。

トップNヒットに限定、E-valueによるフィルタリングも可能。詳細は help(gget.blast) で。

結果はBLAST結果を含むpandasのデータフレームで返ってくる。


```python
result = gget.blast(test_seq)
```




```python
result[:5]
```




<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Description</th>
      <th>Scientific Name</th>
      <th>Common Name</th>
      <th>Taxid</th>
      <th>Max Score</th>
      <th>Total Score</th>
      <th>Query Cover</th>
      <th>E value</th>
      <th>Per. Ident</th>
      <th>Acc. Len</th>
      <th>Accession</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>angiotensin-converting enzyme 2 isoform 1 prec...</td>
      <td>Homo sapiens</td>
      <td>human</td>
      <td>9606</td>
      <td>1614</td>
      <td>1614</td>
      <td>99%</td>
      <td>0.0</td>
      <td>98.60%</td>
      <td>805</td>
      <td>NP_001358344.1</td>
    </tr>
    <tr>
      <th>1</th>
      <td>angiotensin I converting enzyme (peptidyl-dipe...</td>
      <td>synthetic construct</td>
      <td>NaN</td>
      <td>32630</td>
      <td>1612</td>
      <td>1612</td>
      <td>99%</td>
      <td>0.0</td>
      <td>98.47%</td>
      <td>805</td>
      <td>BAJ21180.1</td>
    </tr>
    <tr>
      <th>2</th>
      <td>ACE2 [Homo sapiens]</td>
      <td>Homo sapiens</td>
      <td>human</td>
      <td>9606</td>
      <td>1612</td>
      <td>1612</td>
      <td>99%</td>
      <td>0.0</td>
      <td>98.47%</td>
      <td>805</td>
      <td>BAB40370.1</td>
    </tr>
    <tr>
      <th>3</th>
      <td>human ACE2/FLAGA(R) fusion protein [Vector pLe...</td>
      <td>Vector pLenti-hACE2</td>
      <td>NaN</td>
      <td>2913627</td>
      <td>1612</td>
      <td>1612</td>
      <td>99%</td>
      <td>0.0</td>
      <td>98.60%</td>
      <td>813</td>
      <td>UJZ92616.1</td>
    </tr>
    <tr>
      <th>4</th>
      <td>unnamed protein product [Homo sapiens]</td>
      <td>Homo sapiens</td>
      <td>human</td>
      <td>9606</td>
      <td>1612</td>
      <td>1612</td>
      <td>99%</td>
      <td>0.0</td>
      <td>98.47%</td>
      <td>805</td>
      <td>BAG37592.1</td>
    </tr>
  </tbody>
</table>
</div>



# 発展的な検索

## gget blat : マッピングによるゲノム座標取得

BLATによるマッピングを利用して、なんらかの配列のゲノム上の座標を推定する。

内部的には、[UCSCのウェブBLAT](https://genome.ucsc.edu/cgi-bin/hgBlat)を利用してるだけなので、リファレンスゲノムに制限がある。

たとえば以下のACE2遺伝子について。


```python
seq = gget.seq(ens_ids=[ens_id])
seq = seq[1][:60]
print(seq)
```

    GTGTTTGTCTTGACTGGCTAGCAACTTAGAACTTTTTAAAAGAGGCAAAGGCAGAGGAGA



```python
result = gget.blat(sequence=seq,
                   assembly='human')
```


結果はpandasのデータフレームで返る。


```python
result[:3]
```




<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>genome</th>
      <th>query_size</th>
      <th>aligned_start</th>
      <th>aligned_end</th>
      <th>matches</th>
      <th>mismatches</th>
      <th>%_aligned</th>
      <th>%_matched</th>
      <th>chromosome</th>
      <th>strand</th>
      <th>start</th>
      <th>end</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>hg38</td>
      <td>60</td>
      <td>1</td>
      <td>60</td>
      <td>60</td>
      <td>0</td>
      <td>100.0</td>
      <td>100.00</td>
      <td>chrX</td>
      <td>-</td>
      <td>15607177</td>
      <td>15607236</td>
    </tr>
    <tr>
      <th>1</th>
      <td>hg38</td>
      <td>60</td>
      <td>1</td>
      <td>60</td>
      <td>59</td>
      <td>1</td>
      <td>100.0</td>
      <td>98.33</td>
      <td>chr4</td>
      <td>-</td>
      <td>79206646</td>
      <td>79206705</td>
    </tr>
    <tr>
      <th>2</th>
      <td>hg38</td>
      <td>60</td>
      <td>1</td>
      <td>60</td>
      <td>58</td>
      <td>2</td>
      <td>100.0</td>
      <td>96.67</td>
      <td>chr4_GL000257v2_alt</td>
      <td>-</td>
      <td>531132</td>
      <td>531191</td>
    </tr>
  </tbody>
</table>
</div>



## gget enrichr : KEGGやGOによるエンリッチメント解析

遺伝子シンボルのリストで、[Enrichr](https://maayanlab.cloud/Enrichr/)ウェブAPIへのジョブサブミットを実行する。機能カテゴリのエンリッチメントをざっくりと確認したいときに便利。

たとえば以下のような適当な遺伝子セットを用意する。


```python
df = gget.search(searchwords='MAPK',
                 species='homo_sapiens')
df[:3]
```




<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>ensembl_id</th>
      <th>gene_name</th>
      <th>ensembl_description</th>
      <th>ext_ref_description</th>
      <th>biotype</th>
      <th>url</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>ENSG00000008735</td>
      <td>MAPK8IP2</td>
      <td>mitogen-activated protein kinase 8 interacting...</td>
      <td>mitogen-activated protein kinase 8 interacting...</td>
      <td>protein_coding</td>
      <td>https://uswest.ensembl.org/homo_sapiens/Gene/S...</td>
    </tr>
    <tr>
      <th>1</th>
      <td>ENSG00000050130</td>
      <td>JKAMP</td>
      <td>JNK1/MAPK8 associated membrane protein [Source...</td>
      <td>JNK1/MAPK8 associated membrane protein</td>
      <td>protein_coding</td>
      <td>https://uswest.ensembl.org/homo_sapiens/Gene/S...</td>
    </tr>
    <tr>
      <th>2</th>
      <td>ENSG00000050748</td>
      <td>MAPK9</td>
      <td>mitogen-activated protein kinase 9 [Source:HGN...</td>
      <td>mitogen-activated protein kinase 9</td>
      <td>protein_coding</td>
      <td>https://uswest.ensembl.org/homo_sapiens/Gene/S...</td>
    </tr>
  </tbody>
</table>
</div>



遺伝子のシンボルを渡して、データベースを設定して、Enrichrを実行する。

バックグラウンドのデータベースはEnrichrが提供している[一覧](https://maayanlab.cloud/Enrichr/#libraries)から選べる。

plot=True とすると、簡単なプロットを出力してくれる。


```python
gget.enrichr(genes=df['gene_name'].values,
             database='pathway',
             plot=True)
```



<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>rank</th>
      <th>path_name</th>
      <th>p_val</th>
      <th>z_score</th>
      <th>combined_score</th>
      <th>overlapping_genes</th>
      <th>adj_p_val</th>
      <th>database</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>MAPK signaling pathway</td>
      <td>6.389385e-22</td>
      <td>39.975187</td>
      <td>1950.878438</td>
      <td>[MAPK8IP2, MAPK14, MAPK8IP3, MAPK12, MAPK8IP1,...</td>
      <td>8.625670e-20</td>
      <td>KEGG_2021_Human</td>
    </tr>
    <tr>
      <th>1</th>
      <td>2</td>
      <td>IL-17 signaling pathway</td>
      <td>1.661678e-19</td>
      <td>79.709259</td>
      <td>3446.731116</td>
      <td>[MAPK14, MAPK15, MAPK12, MAPK13, MAPK10, MAPK1...</td>
      <td>1.121632e-17</td>
      <td>KEGG_2021_Human</td>
    </tr>
    <tr>
      <th>2</th>
      <td>3</td>
      <td>Neurotrophin signaling pathway</td>
      <td>1.274299e-14</td>
      <td>48.110450</td>
      <td>1539.235873</td>
      <td>[MAPK10, MAPK11, MAPK9, MAPK8, MAPK7, MAPKAPK2...</td>
      <td>5.734345e-13</td>
      <td>KEGG_2021_Human</td>
    </tr>
    <tr>
      <th>3</th>
      <td>4</td>
      <td>GnRH signaling pathway</td>
      <td>4.753301e-14</td>
      <td>55.657047</td>
      <td>1707.410809</td>
      <td>[MAPK10, MAPK11, MAPK9, MAPK8, MAPK7, MAPK1, M...</td>
      <td>1.604239e-12</td>
      <td>KEGG_2021_Human</td>
    </tr>
    <tr>
      <th>4</th>
      <td>5</td>
      <td>Fc epsilon RI signaling pathway</td>
      <td>1.378735e-13</td>
      <td>68.949153</td>
      <td>2041.752629</td>
      <td>[MAPK10, MAPK11, MAPK9, MAPK8, MAPK1, MAPK14, ...</td>
      <td>3.381377e-12</td>
      <td>KEGG_2021_Human</td>
    </tr>
    <tr>
      <th>...</th>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
    </tr>
    <tr>
      <th>130</th>
      <td>131</td>
      <td>Chemokine signaling pathway</td>
      <td>9.194986e-02</td>
      <td>4.077812</td>
      <td>9.731747</td>
      <td>[MAPK1, MAPK3]</td>
      <td>9.475749e-02</td>
      <td>KEGG_2021_Human</td>
    </tr>
    <tr>
      <th>131</th>
      <td>132</td>
      <td>Regulation of actin cytoskeleton</td>
      <td>1.136693e-01</td>
      <td>3.582244</td>
      <td>7.789452</td>
      <td>[MAPK1, MAPK3]</td>
      <td>1.162527e-01</td>
      <td>KEGG_2021_Human</td>
    </tr>
    <tr>
      <th>132</th>
      <td>133</td>
      <td>Chemical carcinogenesis</td>
      <td>1.320810e-01</td>
      <td>3.261355</td>
      <td>6.602091</td>
      <td>[MAPK1, MAPK3]</td>
      <td>1.340672e-01</td>
      <td>KEGG_2021_Human</td>
    </tr>
    <tr>
      <th>133</th>
      <td>134</td>
      <td>Human papillomavirus infection</td>
      <td>2.187139e-01</td>
      <td>2.338399</td>
      <td>3.554345</td>
      <td>[MAPK1, MAPK3]</td>
      <td>2.203461e-01</td>
      <td>KEGG_2021_Human</td>
    </tr>
    <tr>
      <th>134</th>
      <td>135</td>
      <td>PI3K-Akt signaling pathway</td>
      <td>2.412301e-01</td>
      <td>2.183044</td>
      <td>3.104297</td>
      <td>[MAPK1, MAPK3]</td>
      <td>2.412301e-01</td>
      <td>KEGG_2021_Human</td>
    </tr>
  </tbody>
</table>
<p>135 rows × 8 columns</p>
</div>


![output_47_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176102/9943c695-f700-893d-12bd-1e93e916c708.png)


    


## gget archs4 : ARCHS4を利用した発現相関遺伝子の探索

[ARCHS4](https://maayanlab.cloud/archs4/)検索の実行。

統一パイプラインで処理された大量の公共RNA-seqデータ（ヒトかマウス）を対象に、全サンプルで発現量相関の高い遺伝子を検索する。


```python
gget.archs4('ACE2')[:10]
```


<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>gene_symbol</th>
      <th>pearson_correlation</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>1</th>
      <td>SLC5A1</td>
      <td>0.579634</td>
    </tr>
    <tr>
      <th>2</th>
      <td>CYP2C18</td>
      <td>0.576577</td>
    </tr>
    <tr>
      <th>3</th>
      <td>ADH1C</td>
      <td>0.565597</td>
    </tr>
    <tr>
      <th>4</th>
      <td>SLC13A2</td>
      <td>0.563400</td>
    </tr>
    <tr>
      <th>5</th>
      <td>TSPAN8</td>
      <td>0.562570</td>
    </tr>
    <tr>
      <th>6</th>
      <td>GSTA1</td>
      <td>0.561725</td>
    </tr>
    <tr>
      <th>7</th>
      <td>MOGAT2</td>
      <td>0.557799</td>
    </tr>
    <tr>
      <th>8</th>
      <td>SLC44A3</td>
      <td>0.554614</td>
    </tr>
    <tr>
      <th>9</th>
      <td>S100A14</td>
      <td>0.553783</td>
    </tr>
    <tr>
      <th>10</th>
      <td>HMGCS2</td>
      <td>0.553401</td>
    </tr>
  </tbody>
</table>
</div>



## gget pdb : タンパク質立体構造の取得

PDBからタンパク質の構造情報を取得。PDB IDが必要なので、遺伝子名から検索する場合はたとえば以下のようにPDB IDまで辿ってダウンロードする。


```python
ens_id = gget.search(searchwords='ACE2', species='homo_sapiens').loc[0, 'ensembl_id']
```


```python
pdb_id = gget.info(ens_ids=ens_id)['pdb_id'].values[0][0]
```


```python
result = gget.pdb(pdb_id=pdb_id,
                  save=True)
```


```python
!head ./7fdi.pdb
```

    HEADER    VIRAL PROTEIN                           16-JUL-21   7FDI              
    TITLE     SARS-COV-2 SPIKE RBDMACSP36 BINDING TO HACE2                          
    COMPND    MOL_ID: 1;                                                            
    COMPND   2 MOLECULE: ANGIOTENSIN-CONVERTING ENZYME 2;                           
    COMPND   3 CHAIN: A;                                                            
    COMPND   4 SYNONYM: ANGIOTENSIN-CONVERTING ENZYME HOMOLOG,ACEH,ANGIOTENSIN-     
    COMPND   5 CONVERTING ENZYME-RELATED CARBOXYPEPTIDASE,ACE-RELATED               
    COMPND   6 CARBOXYPEPTIDASE,METALLOPROTEASE MPROT15;                            
    COMPND   7 EC: 3.4.17.23,3.4.17.-;                                              
    COMPND   8 ENGINEERED: YES;                                                     


## その他

わざわざggetから使う必要もない気もするけど、MUSCLEによるマルチプルアラインメントや、Colab版と同等のalphafoldも実行できる。

それぞれ詳細は[ドキュメント](https://pachterlab.github.io/gget/)を参照。

## 結局

gget.search, gget.infoは日常的に使えるかも。

あとはさくっとnrにBLASTかけたいときはgget.blastするとか。でもEnsemblベースだからせっかくBLASTしても当たった先の配列とってきたりできない。バクテリア関連の解析も対象外。

今後の拡張に期待。