[coding] Sequence Alignment

生成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'

生成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