google colabolatoryでcircRNAを同定したい③（step5,6）

前回は、Step4:Convert .sra files into FASTA format, collapse the identical readsで終わりました。

https://qiita.com/drafts/b610f7c95cf2fa87ec49/

今回はStep5,6をやっていきたいと思います。

## Step5: Edit configure files
configure fileを編集してね、とのことです。
サンプルが表示されていました。
必要に応じて、以下のようにconfigure fileなるものを書けばいいということですね。

:::note info
## configure.fileの書き方
[library名]
sample_name = サンプル名(シーケンスに用いた細胞などの名前)
genome_index = genomeのインデックス(モデル生物名_dnaとなっているもの)
trans_index = transcript(モデル生物名_transとなっているもの)
genome_seq = genomeのシーケンス(モデル生物名_dna.faとなっているもの)
:::
ちなみにサンプルとして与えられたファイル`circRNAFind.cfg`は以下のようになっていました。

```python:circRNAFind.cfg
[lib1]
sample_name = HEK293
reads_file = ./fasta/HEK293.fa
genome_index = ./build/hg19_dna
trans_index = ./build/hg19_trans
genome_seq = ./build/hg19_dna.fa

[lib2]
sample_name = CD34
reads_file = ./fasta/CD34.fa
genome_index = ./build/hg19_dna
trans_index = ./build/hg19_trans
genome_seq = ./build/hg19_dna.fa

[lib3]
sample_name = CD19
reads_file = ./fasta/CD19.fa
genome_index = ./build/hg19_dna
trans_index = ./build/hg19_trans
genome_seq = ./build/hg19_dna.fa

[lib4]
sample_name = neutrophils
reads_file = ./fasta/neutrophils.fa
genome_index = ./build/hg19_dna
trans_index = ./build/hg19_trans
genome_seq = ./build/hg19_dna.fa
```
また次のstep6で使う`circRNAAnno.cfg`は以下の通り。別の書き方もできるようです。
```python:circRNAAnno.cfg
[group1]
sample_names = CD19,CD34,neutrophils,HEK293
genome_index = ./build/hg19_dna
genome_seq = ./build/hg19_dna.fa
gene_bed = ./build/hg19.gtf.build
id_prefix = hsa
```
では、次のステップへ。
## Step6: Run circRNAFinder
いよいよcircRNAFinderを使う時がきたようです。
`Tutorial.sh`には以下のように書かれていました。
```bash:bash
!circRNAFind.py circRNAFind.cfg -s 0
!circRNAAnno.py circRNAAnno.cfg -s 0
!igv.sh & circRNAView.py circRNAView.cfg
```
が、早速エラー。というのも`circRNAFind.py`と`circRNAAnno.py`がおいてあるのは`/content/drive/MyDrive/circRNAFinder/src`の中。一方、`circRNAFind.cfg`と`circRNAAnno.cfg`はその一つ上の階層のcircRNAFinder内。なので、この2つの`cfg.file`を`srcフォルダ`へ移動させました。ついでに、`circRNAFind.py`を開いて`print`の記述も直しました。
これでいけるかと思いきや、次なるエラー。
```:エラーの内容
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-11-cf8b20c73bfc> in <cell line: 4>()
      2 import sys
      3 sys.path.append('/content/drive/MyDrive/circRNAFinder/src')
----> 4 import circRNAFind
      5 import circRNAAnno
      6 import circRNAView

/content/drive/MyDrive/circRNAFinder/src/circRNAFind.py in <module>
      3 "circFind.py -- "
      4 
----> 5 import sys, os, ConfigParser, argparse
      6 parser = argparse.ArgumentParser(description='circFind is a pipeline to find circular RNA')
      7 parser.add_argument('config_file', help='')

ModuleNotFoundError: No module named 'ConfigParser'
```
`ConfigParser`なるmoduleはないと言われました。どうすればいいのか分からないので、とりあえず、chatGPT先生に元のコードとエラー内容を打ち込んで、修正案をお尋ねしました。
```:chatGPTの答え
ConfigParser モジュールが見つからないエラーが発生しています。
これは、Python 3からConfigParser が configparser に変更されたためです。

また、argparse モジュールも見つからないエラーが発生していますが、
これは正しくインポートされていますので問題ありません。
```
なるほど。とりあえず、ConfigParserのエラーを先に直しました。
```bash:circFind.py (修正前)
#//-----中略-----//
#================================================================
cf = ConfigParser.ConfigParser()  #ここが問題
cf.read(args.config_file)  
```
```bash:修正後のコード
#//-----中略-----//
#================================================================
cf = configparser.ConfigParser()  #修正
cf.read(args.config_file)  
```
これで実行してみますが、またエラー。
```:エラーの内容
usage: colab_kernel_launcher.py [-h] [-s {0,1,2,3,4,5,6,7}] [-r] config_file
colab_kernel_launcher.py: error: unrecognized arguments: -f
An exception has occurred, use %tb to see the full traceback.

SystemExit: 2
```
「またお前か。」といいたくなるエラー。とりあえずargsを変える。
```bash:circFind.py (修正前)
"circFind.py -- "
#//-----中略-----//
args = parser.parse_args() #ここを変える
```
```bash:修正後
"circFind.py -- "
#//-----中略-----//
args = parser.parse_args(args=[]) #ここを変える
```
が同じエラーが出現。
そこでQiitaの質問コーナーでエラーの解決方法を質問。
>Python2系のコードを3系に対応させるのは相当時間がかかるので、実行環境を2系にしたほうがよいと思います。
ライブラリも2系では動くけど、3系では動かないといったことも考えられるので、そういった側面でも2系で動作させるべきだと思います。
>上記のエラーは引数が足りていないことを示しています。
なので
```python: 
python colab_kernel_launcher.py <設定ファイルのパス>
```
>とすると一旦上記のエラーは解決するかと思います。
>繰り返しで申し訳ないですが、2系で動かすべきです。

なるほど。python2からpython3へpipelineもあるようだけれど、もう様々なエラーが出てる時点で止めた方がよさそう。ということで、次はpython3をベースとした**circtools**を使うことにしました。