はじめに
こんにちは!バイオインフォマティクス系オタク修士学生のroadricefieldです!僕は学部は生物科学科卒で今いる大学院は生物科学専攻なのでプログラミングやコマンドライン操作などはほとんど独学で勉強しました. (冗談抜きで『学校では教えてくれない』)
さて, 2020年, 僕がいるラボではたくさんの人たちがバイオインフォマティクスを触るようになりました.
みなさん急に馴染みの無い黒画面に, 右も左もわからない状態(僕も最初はそうでした. そして僕のときは周りに教えてくれる人がいなかった...)でコマンドを打ち込むものですからエラーがラボ内で頻発しています...
そこでこの記事ではバイオインフォマティクスでよく遭遇するエラーを解決する方法を書きなぐっていこうと思います.
コマンドライン関係
"No such file or directory"
ファイル指定で打ち間違えとるんや確認してくれ!!!! それから相対パスの参照はあっとるんか? コマンド叩いた位置からcd
でその相対パスを指定してちゃんと飛べるんか? そこでも-bash: cd: hoge: No such file or directory
って言われるんやったらパスが間違えとるんやで. 頼むわほんま.
"Command 'hoge' not found"
コマンドの名前打ち間違えてないか!!?? ちゃんと確認してくれ! 大文字と小文字も間違えたらあかん!!
コマンド名ちゃんと確認して打ち間違えてないのにそんなコマンドは無いって怒られる!!
落ち着け!! 落ち着いてまずはwhich
コマンドを使ってパスが通っとるか確認や. 例えばbamCoverage
というコマンドが動かへんとするで. そしたら以下を実行してくれ.
which bamCoverage
ちゃんとパスが通っとる場合は下のようにその位置が出力される.
/mnt/c/linux_home/tools/deepTools/bin/bamCoverage
何も出力されへん場合はパスが通ってへんのやわ. パスっていうのはコマンドの実行ファイル(コンピュータ語で書かれた命令文)が入ってるディレクトリのことやな. コンピュータはコマンドを渡されたら登録されとるパスの中から渡されたコマンドと同じ実行ファイルを探し出してそれを読んで命令を実行するんや.
例に挙げたbamCoverage
はdeepTools
っていうパッケージの中のコマンドの一つや. たぶんdeepTools
のコマンドの実行ファイルはdeepTools
のフォルダの中のbin
っていう名前のディレクトリに入っとる. パッケージにもよるけど実行ファイルはbin
っていうディレクトリに集められとることが多い. ここでは$HOME/tools/deepTools/bin
に実行ファイルがあるとするで. $HOME
はホームディレクトリのことな.
ホームディレクトリに戻ってくれ. cd
コマンドに何も指定せんかったら戻れる. そこで以下を実行してくれ.
vim .bash_profile
.bash_profile
っていうのはパスを書き込んだりするテキストファイルのことや. vimっていうエディタが開くからescキーを押してからiのキーを押してinsert modeにしてくれ. もうすでに何か書いてあるかもしれんけど新しい行に以下のように書いといてくれ.
PATH=$PATH:$HOME/tools/deepTools/bin
書けたらもう一回escキーを押して:wq
と入力してEnterや. これで保存できた. このあとターミナルを再起動させるか以下のように入力してくれ.
source .bash_profile
これで.bash_profile
への変更が反映された. これでbamCoverage
が動くはずや. bamCoverage
って実行してヘルプが出たり「引数が与えられとらへんやんかい!!」とか言ってキレてきたらちゃんとパスが通って使えるようになっとる.
それから基本的にソフトは全部AnacondaかMinicondaで管理したらめっちゃ楽や. 全部conda install
で簡単にインストールできるし, パスを通す必要もない. ワイが書いた以下の記事の最初の方でMinicondaを使った環境構築のやり方を説明してるから参考にしたってや.
プログラムが途中で止まってもてエラーで何か違うプログラムの名前が書いてあるで
ちゃんとその動かしてるプログラムのRequirements確認したんか?? そのプログラムが依存してる他ののプログラムが入ってない可能性が高い. 例えばsamtools
とかbedtools
とか. インストールできたらもう一回試してみてや.
何かFile "hoge.py", line 31, ~ SyntaxError:~
みたいなようわからんエラーが出るんやけど
出た!エラーの形式的に多分それはPython2系, 3系問題や!!!!この問題は世界を混乱に陥れてるから将来歴史の教科書に載る.
たぶんそのソフトはPython2系で書かれとるんやと思う. 実はPython2系からPython3のメジャーアップデートされたときに文法が変わりまくってPython2系で書かれたプログラムは基本的にPython3系では動かされへん.
でも基本的にワイらのコンピュータのPythonは3系や. Python2系の環境を作る必要がある. そこでAnaconda/Minicondaや. どっちかをインストールしてPython2系の仮想環境を作るで.
conda create -n py27 python=2.7
これはpy27
って名前のPython2.7が動く仮想環境を作ってやって意味な. もろもろインストールが終わったら以下を実行や.
conda activate py27
これでターミナルのユーザー名の左に,
(py27) roadricefield@hogehoge:$
みたいな感じでpy27
って表示されてたら成功やpython --version
を実行してPythonのバージョンを確認してな.
元の環境に戻るときは,
conda deactivate
を実行してな. py27
の環境でもう一度プログラムを実行してみてほしい. もしかしたらpysam
とかPythonのライブラリが必要かもしれんからよくRequirementsを確認してconda install
してくれ. Python2になったら改めて入れなあかんで.
conda activate py27
のときに何かエラーが出た人はconda init
って実行してからやってみてな.
結果が画面に垂れ流しになってまうんやけど...
リダイレクトしてくれ!!! 今使っているソフトは結果を標準出力っていうところ, つまり黒画面自体に出力するタイプや. たとえばHOMERのannotatePeaks.pl
がこのタイプや. こんなふうに結果をテキストファイルに書き込むことができるで.
annotatePeaks.pl Peaksfile.txt mm10 > Results.txt
これで結果はResults.txt
に保存されたで.
今日(2020/06/10)はここまで
この記事では今後もよくあるトラブルをシュートしていくで!タグも付けとるけどR関係のトラブルも説明していく予定や!期待しててや!!
絶対に肝に銘じてほしいこと
エラーメッセージでググれ!!!!!!!!!! 大抵のエラーはもうすでに誰かが経験してて対処法をネットに残してくれてることが多い! それこそQiitaや!!! これがあるからワイは今日も研究ができてる. エラーメッセージでググってほしい. さすれば汝は救われん. あとエラーメッセージは最後の最後の文が一番大事な. それでググるんやで! ほな!!