ほぼ中立ブログ

少しだけ趣味に偏った雑記ブログ

Python

Pythonのfileinputでフィルタとかファイルの書き換えとか

Pythonでファイルの読み込みや書き込みをする際にはopen関数を使うのが基本ですが、下に挙げるような少し複雑な操作をしたい場合には頭を抱えることになります。 標準入力からも読み込みたい、ただし指定したときにはファイルからも読み込んでほしい。 ファ…

全自動でシングルコピー遺伝子の連結系統樹推定(OrthoFinder, MAFFT, trimAL, IQ-TREE)

オーソログ推定プログラムのOrthoFinderですが、便利なことにオーソログ推定の結果予測されたシングルコピー遺伝子の情報を個別に抽出してディレクトリにまとめてくれます。 シングルコピー遺伝子の系統樹は種の系統関係を反映している可能性が高いと考えら…

Pythonでディレクトリを一時的に移動して元のディレクトリに戻る

Pythonスクリプト内で外部プログラムを呼び出して解析を実行することが多々あるのですが、プログラムの中には出力先を指定するオプションがなくカレントディレクトリに結果を出力することを想定しているものがあります。 条件が一つだけの場合はそれで良いの…

Pythonでディレクトリ下のファイルを再帰的にリネームして通し番号を振る

pythonでディレクトリ(フォルダ)下のファイルを一括で変更して通し番号を振るスクリプトを作ったので備忘録を兼ねてまとめます。 Windowsでも動くような気はしますが、テストした環境はUbuntu 18.04 LTSです。 目標 スクリプト 目標 以下のような構成のフォ…

BiopythonによるオンラインのBLAST実行

Biopythonを使って、与えられたFASTAファイルの配列データをクエリーとしてオンラインのBLASTを実行するスクリプトを作成したので、備忘録を兼ねてまとめます。 公式のチュートリアルを参考に作りましたので詳しくはそちらをご覧ください。 コード 補足 その…

BiopythonでFASTA形式をPhylip形式に変換する

解析に使うプログラムの中には、FASTA形式の配列ファイルではなくPhylip形式のものを要求するものがあります。今回はそのような事情でFASTA形式のデータをPhylip形式に変換する、ちょっとしたスクリプトを書いたので備忘録を兼ねてまとめます。 Phylip形式に…

ループカウンタに小数を使ったらハマった(Python)

入門書で読んだきり忘れていた問題に、この度出くわしたので備忘録を兼ねてまとめておこうと思います。 以下のようなPythonのコードを書いていました。 start, end, delta = 0.1, 0.3, 0.1 i = start while i <= end: i += delta print(i) 自分としては3回値…

Pythonで外部コマンドとモジュールの有無を確認し無ければインストールする

依存関係を手作業で解消するのが面倒だったのでPythonにやってもらうことしました。「退屈なことはPythonにやらせよう」ですね。環境はUbuntuを想定しています。 とはいえ高度なヤツは技量的に無理だったのでaptとpipで簡単にインストールできるものだけです…

ETE Toolkitでノードに通し番号を付ける

他人に説明するときなどに、系統樹のノードに番号が付いていると便利な場合がたまにあります。AとBの共通祖先等の表現でも良いんですが長くなりやすいので。 今回はPythonとETE Toolkitを使って系統樹のノードに通し番号を付けたのでそのまとめです。使用し…

Biopythonとアクセッション番号を使ってNCBIからGenbankファイルをダウンロードする

プログラム中で、NCBIの管理するデータベースに登録された配列ファイルをダウンロードしたいことがたまにあります。手作業は何かと煩雑なので。 そこで、Biopythonを利用して指定したアクセッション番号の配列データを自動でダウンロードするプログラムを作…

Pythonのmultiprocessing.PoolでAttributeErrorが出た

Pythonのmultiprocessingモジュールを試そうとしたらエラーが発生してしまったという話。問題のコードは下の通りです。 #!/usr/bin/env python3 import multiprocessing def foo(num): def bar(x): return x*x cpu = multiprocessing.cpu_count() args = ran…

Pythonでディレクトリ(フォルダ)が空か確認する

Pythonのスクリプト中で、ディレクトリ(フォルダ)が空かどうか確認してから処理を行いたいことがたまにあります。そこで、簡単に調べたところosモジュールのlistdir関数を使う方法と、globモジュールのglob関数を利用する方法があるようでした。 os.listdir…

Pythonで変数を文字列に埋め込む方法をまとめたハナシ

Pythonは初心者にも分かりやすくノンプログラマーの身としてはとてもありがたい言語なのですが、変数と文字列を組み合わせる方法については、Perlなどの方が便利かなあと感じることが多々あります。自分のコードを見返しても、使っている方法が結構ばらばら…

Pythonで空ファイルを作るハナシ

classの初期化の際にあらかじめ出力ファイルを作っておき、他のメソッドがそのファイルに追記する形で利用したら便利かなという状況に出くわしました。 ということで中身が空のファイルを作る必要が生じたのですが、調べたところopenで開いて何もせずにclose…