ほぼ中立ブログ

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

PC

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

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

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

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

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

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

Guakeがexitでフリーズするので解決策と代替アプリを探した件

キーボードからさっと簡単に呼び出せるドロップダウン型のターミナルGuakeを愛用していたのですが、Ubuntu 18.04 LTSにしてから、exitで端末を閉じようとするとフリーズするようになってしまいました。 まぁ、Guakeの特性上基本的に端末は開きっぱなしでOKな…

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形式は異な…

UbuntuにNeovimをインストールする

この度VimからNeovimに乗り換えたので、備忘録を兼ねてそのインストール手順をまとめます。環境はUbuntu 18.04 LTSです。 正直な所VimとNeovimとの違いは分かっていませんし、プラグインの導入等一通りの設定が終わった今でも、Vimとの使用感の違いはないの…

Windows10を高速化する3つの方法

どうにもパソコンの動作がモッサリとしていたので軽くする方法を調べてみました。 こうした試みは徒労に終わる傾向が強いような印象があったのですが、珍しく満足するレベルで高速化できましたので備忘録を兼ねてまとめます。 割と釣りタイトルな気がします…

CUIファイルマネージャrangerの設定ファイルについて

rangerはターミナルから起動できるvimライクなキーバインドで操作できるCUIのファイラーです。 ターミナル内で使えるファイラーは他にも試したのですが操作が良く分からず、デフォルトの状態でも十分使いやすいrangerに落ち着きました。全てとは言いませんが…

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回値…

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

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

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

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

i3-wmの設定ファイルを小出しに晒してみる

タイル型ウィンドウマネージャのi3-wmはデフォルトの設定でもある程度快適に使えるのが魅力ですが、カスタマイズするとより使いやすくなるのも事実です。自分なりに調べ、設定項目は少ないですがある程度不満のない状態にはなったので整理も兼ねてまとめてみ…

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

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

WSLをPowershell上で起動する

普段はVirtualbox上で仮想マシンのUbuntuを使用しているのですが、何かともたつくことも多いため、できればWindows上で操作を完結させたいのが本音です。Windowsを完全に捨ててしまうのも1つの手なのでしょうが、なかなか踏ん切りがつきません。 そんなわけ…

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

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

初心者がWSL上で暮らそうとしたメモの切れ端

仮想マシンでUbuntuは一応使ったことがあるが、WSL(Windows Subsystem for Linux)は入門レベルの人間が、WSLのUbuntu(bash)上で可能な限り操作を完結させようともがいた結果をまとめたメモです。初心者なので色々大目に見ていただけるとありがたいです。イン…

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…

FastTreeの使い方まとめ

FastTreeは近似最尤法による系統樹推定プログラムです。大規模データに対応しており、他のプログラムに比べ実行時間が非常にはやいです。公式の説明によれば、PhyMLやRAxMLの100から1000倍高速な場合もあるようです。 ざっと調べたところ日本語の情報が少な…

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

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

IQ-Treeの使い方まとめ

IQ-Treeは最尤法による系統樹作成プログラムです。コマンドラインから簡単に実行することができ、計算時間もはやいため便利です。 また、配列をパーティションに区切った解析を行うことができる他、塩基・アミノ酸配列以外にも、幾つかの形式の配列データに…

JupyterNotebookにIRubyをインストールしたハナシ

PC

JupyterNotebook上でRubyを利用するために、IRubyをインストールしたまとめです。一点だけつまづいたので記事に起こしておきます。 環境はUbuntu 18.04 LTSです。16.04以前の方や他のOSの方は手順が若干異なるためご注意ください。 インストール方法ですが、…

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

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

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

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

タイル型ウィンドウマネージャと一緒に使っているアプリをまとめたハナシ

タイル型ウィンドウマネージャの「i3」と一緒に使っているアプリのまとめです。 タイル型といえば自分で色々カスタマイズできるのが魅力で、私もネットの情報を参考にしながら少しずつですがよく使うものに関してはシェルスクリプトにまとめてキーボードから…

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

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