生成fasta文件
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord
from Bio import SeqIO, AlignIO
import pandas as pd
def get_fasta(df,seq_col='seq',id_col='ID',path='out.fasta'):
"Generate fasta file from sequences."
records = [
SeqRecord(Seq(row[seq_col]), id=row[id_col], description="")
for _, row in df.iterrows()
]
SeqIO.write(records, path, "fasta")
print(len(records))
得到 X.fasta 文件
Run Alignment
Online clustal omega
https://www.ebi.ac.uk/jdispatcher/msa/clustalowww.ebi.ac.uk/jdispatcher/msa/clustalo
上传fasta文件,限制是不能超过5k个好像。
本地跑Clustalo
sudo apt-get update
sudo apt-get install clustalo
clustalo -i X.fasta -o X.aln --force --outfmt=clu
-o 是output
-i 是input
输出的.aln文件可以用Jalview 查看
结果分析
Jalview
下载Jalview
https://www.jalview.org/www.jalview.org/
input输入.aln文件即可
Python读取
alignment = AlignIO.read("raw/X.aln", "clustal")
alignment_array = [list(str(record.seq)) for record in alignment]
df = pd.DataFrame(alignment_array)
df.columns = df.columns+1
然后查看df即可。
结构alignment
TODO