python对fasta文件读取实现DNA序列字符串转换,互补链,反向链,反向互补链并新建一个·fasta文件储存
时间: 2023-07-18 10:19:40 浏览: 150
python按行读取文件并找出其中指定字符串
可以使用Python中的Biopython模块来对fasta文件进行读取和处理,并实现DNA序列字符串转换、互补链、反向链和反向互补链,并将结果保存到一个新的fasta文件中。
假设fasta文件名为example.fasta,其中包含一个DNA序列:
```
>sequence_1
ATCGATCGATCG
```
1. 读取fasta文件
使用Biopython模块中的SeqIO模块读取fasta文件,并获取DNA序列的字符串。
```python
from Bio import SeqIO
# 读取fasta文件
for seq_record in SeqIO.parse("example.fasta", "fasta"):
seq = str(seq_record.seq)
print(seq)
```
2. 互补链
使用Biopython模块中的reverse_complement函数获取DNA序列的互补链。
```python
from Bio.Seq import reverse_complement
# 获取互补链
comp_seq = reverse_complement(seq)
print(comp_seq)
```
3. 反向链
使用字符串的切片操作[::-1]获取DNA序列的反向链。
```python
# 获取反向链
rev_seq = seq[::-1]
print(rev_seq)
```
4. 反向互补链
先获取互补链,再使用字符串的切片操作[::-1]获取DNA序列的反向互补链。
```python
# 获取反向互补链
rev_comp_seq = comp_seq[::-1]
print(rev_comp_seq)
```
5. 新建fasta文件并储存结果
使用Biopython模块中的SeqRecord模块和SeqIO模块新建一个fasta文件,并将DNA序列的字符串转换、互补链、反向链和反向互补链分别作为四条序列保存到fasta文件中。
```python
from Bio.SeqRecord import SeqRecord
from Bio.Seq import Seq
# 新建fasta文件并储存结果
records = [SeqRecord(Seq(seq), id="sequence_1"),
SeqRecord(Seq(comp_seq), id="sequence_2"),
SeqRecord(Seq(rev_seq), id="sequence_3"),
SeqRecord(Seq(rev_comp_seq), id="sequence_4")]
SeqIO.write(records, "result.fasta", "fasta")
```
完整代码如下:
```python
from Bio import SeqIO
from Bio.Seq import reverse_complement
from Bio.SeqRecord import SeqRecord
from Bio.Seq import Seq
# 读取fasta文件
for seq_record in SeqIO.parse("example.fasta", "fasta"):
seq = str(seq_record.seq)
print(seq)
# 获取互补链
comp_seq = reverse_complement(seq)
print(comp_seq)
# 获取反向链
rev_seq = seq[::-1]
print(rev_seq)
# 获取反向互补链
rev_comp_seq = comp_seq[::-1]
print(rev_comp_seq)
# 新建fasta文件并储存结果
records = [SeqRecord(Seq(seq), id="sequence_1"),
SeqRecord(Seq(comp_seq), id="sequence_2"),
SeqRecord(Seq(rev_seq), id="sequence_3"),
SeqRecord(Seq(rev_comp_seq), id="sequence_4")]
SeqIO.write(records, "result.fasta", "fasta")
```
输出结果为:
```
ATCGATCGATCG
CGATCGATCGAT
GCTAGCTAGCTA
TAGCTAGCTAGC
```
并且会生成一个新的fasta文件result.fasta,其中包含四条序列:
```
>sequence_1
ATCGATCGATCG
>sequence_2
CGATCGATCGAT
>sequence_3
GCTAGCTAGCTA
>sequence_4
TAGCTAGCTAGC
```
阅读全文