ほぼ中立ブログ

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

プログラミング

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

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

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

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

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

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

Newick形式で系統樹の樹形が同じか確かめる

複数のNewick形式の系統樹から樹形が同じものを抽出する必要に駆られたので備忘録を兼ねたまとめです。 当たり前ですが、 ((A,B),(C,D)); ((C,D),(A,B)); の2つのNewick形式は同じ樹形を表しており、 ((A,B),(C,D)) ((A,C),(B,D)); の2つのNewick形式は異な…

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

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

Biopythonで入力ファイルがFASTA形式か調べる

与えられた配列ファイルをプログラムで処理する際に、ファイルのフォーマットを調べておきたいという場合がたまにあります。拡張子で識別するのが簡単で手っ取り早いですが、FASTAファイルのようによく使われる拡張子が複数種類あるものだと、識別が若干面倒…

シェルスクリプトによるパッケージの自動インストール

新しい環境に変わるたびに必要なパッケージなどをインストール作業が段々と苦痛になってきたので、シェルスクリプト(bash)で自動化することにしました。環境はUbuntu 18.04 LTSです。 作った後で何ですが、これくらいなら面倒なことは考えず単純にコマンドを…

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

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

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…

OrthoFinderでFastTreeを使おうとしたらエラーが出た

オーソログ推定プログラム「OrthoFinder」は、推定したオーソロググループ配列を使用してそのまま系統樹作成まで行うことができます。詳しくはGithubのページに詳しい説明がありますのでご覧ください。 試しにFastTreeを使って系統樹作成まで行おうとしたと…

BiopythonでFASTAファイルの重複をチェック

プログラムで自動で配列を集めてきたり、トリミングなどの処理を行ったりした場合に、予期せず全く同じ配列ファイルが違う名前で紛れてしまうことがあります。私のやり方がまずいのかもしれませんが。 系統樹作成などにそうしたファイルを使ってしまうと解析…

BiopythonでFASTAファイルの改行を削除する

FASTAファイルの配列が途中で改行され、複数行に渡っている場合があります。通常は問題ないのですがたまに不便なときがあるので、Biopythonを使って不要な改行を削除し配列行を一行にします。 完成形のコードは以下のとおりです。結果の出力先は標準出力です…

BiopythonでGenbankファイルからアミノ酸配列を抽出する

Genbankファイル中のCDS情報から遺伝子のアミノ酸配列を抽出し、遺伝子ごとのアミノ酸配列が記載されたFASTAファイルを作ったまとめです。 Genbankファイルの扱いはBiopythonを利用すると簡単です。公式のチュートリアルに詳しい説明がありますが、英語だっ…

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

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

Perlモジュールをaptでインストールするチラ裏

とあるプログラムをインストールしようとしたところ、Perlのモジュールが依存関係として指定されていました。 Perlのインストールコマンドといえばcpanmですが、不慣れな身としては可能な限り使用を避けたかったのです。というわけで別の方法を調べたのでま…

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

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

Jupyter NotebookにRを入れてみたハナシ

Rを勉強するにあたって環境を整えようということで、Jupyter Notebook上でRを利用できるようにしました。Rの開発環境としてはRStudioが有名ですが、私のノートPCだと画面が小さいので4分割画面を活かせないんですよね⋯⋯。 以下の内容は、Virtualbox上のUbun…