前回は、Step4:Convert .sra files into FASTA format, collapse the identical readsで終わりました。
今回はStep5,6をやっていきたいと思います。
Step5: Edit configure files
configure fileを編集してね、とのことです。
サンプルが表示されていました。
必要に応じて、以下のようにconfigure fileなるものを書けばいいということですね。
ちなみにサンプルとして与えられたファイル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
は以下の通り。別の書き方もできるようです。
[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
には以下のように書かれていました。
!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先生に元のコードとエラー内容を打ち込んで、修正案をお尋ねしました。
ConfigParser モジュールが見つからないエラーが発生しています。
これは、Python 3からConfigParser が configparser に変更されたためです。
また、argparse モジュールも見つからないエラーが発生していますが、
これは正しくインポートされていますので問題ありません。
なるほど。とりあえず、ConfigParserのエラーを先に直しました。
#//-----中略-----//
#================================================================
cf = ConfigParser.ConfigParser() #ここが問題
cf.read(args.config_file)
#//-----中略-----//
#================================================================
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を変える。
"circFind.py -- "
#//-----中略-----//
args = parser.parse_args() #ここを変える
"circFind.py -- "
#//-----中略-----//
args = parser.parse_args(args=[]) #ここを変える
が同じエラーが出現。
そこでQiitaの質問コーナーでエラーの解決方法を質問。
Python2系のコードを3系に対応させるのは相当時間がかかるので、実行環境を2系にしたほうがよいと思います。
ライブラリも2系では動くけど、3系では動かないといったことも考えられるので、そういった側面でも2系で動作させるべきだと思います。
上記のエラーは引数が足りていないことを示しています。
なので
python colab_kernel_launcher.py <設定ファイルのパス>
とすると一旦上記のエラーは解決するかと思います。
繰り返しで申し訳ないですが、2系で動かすべきです。
なるほど。python2からpython3へpipelineもあるようだけれど、もう様々なエラーが出てる時点で止めた方がよさそう。ということで、次はpython3をベースとしたcirctoolsを使うことにしました。