当使用biopython的SeqIO模块加载fasta之后,每条fasta都会记录成 Bio.SeqRecord.SeqRecord
, 会有id, name, description, dbxrefs 等属性.
举个例子,输入数据是 test.fa
1 | # test.fa |
我们可以将其保存成另一个文件
1 | with open("test2.fa", "w") as f: |
输出的header和输入的header是完全一样的。
假如,你想修改他的名字, 比如说把 “a|b” 改成 “a”, 你会发现一个非常诡异的事情,就是它完全不会按照你想的来.
1 | seq.id = "a" |
如果你改了他的ID,他会输出 ID + description, 如果你改了name,相当于没改,如果你改了description,就真的只有description(即header中空格后的信息)会发生变化。
假如我想输出 “>a c”, 那我就必须下面这个形式
1 | seq.id = "a" |
我实在是没想懂他背后的逻辑, 修改输出的header居然如此不符合预期