python - 合并从 contigs.fa 生成的两行

标签 python linux sed awk fasta

我有一个由汇编器生成的文件。看起来像下面这样。

>NODE_1_length_211_cov_22.379147
CATTTGCTGAAGAAAAATTACGAGAAATGGAGCACAAGGCTGTTTTTGTGAATGTCAAAC
CAAGTGACAACTCTATAGCGTTTGTATAAGACTCTCATACTAATCCCAAGCAAACTCTAT
ACTGACGCATGAACATGGAAGAGAAATGCTGCTCGTGTATGTATTATGGACCAGCTTGGA
ACACCATGTTAGGACTTTATAGATGTCTTACGATTTTTTCGACGTGATGAAGAAGTCTAT
TCAGCATTTGA
>NODE_2_length_85_cov_19.094118
TACTCCTGAGCACTTTGTGCTCTTAGTTCTTACTAGAACTGTTACAGCTCCACGAACTTG
TCGACTCTTTGAGTCAATTTCTGTTAGTTCCTACGAACTAAGAGGCTCTCTGAGCCCAGT
CTTCC

我想使用 python 或 linux sed 命令合并行,并希望以这种方式得到结果。

>NODE_1_length_211_cov_22.379147
CATTTGCTGAAGAAAAATTACGAGAAATGGAGCACAAGGCTGTTTTTGTGAATGTCAAACCAAGTGACAACTCTATAGCGTTTGTATAAGACTCTCATACTAATCCCAAGCAAACTCTATACTGACGCATGAACATGGAAGAGAAATGCTGCTCGTGTATGTATTATGGACCAGCTTGGAACACCATGTTAGGACTTTATAGATGTCTTACGATTTTTTCGACGTGATGAAGAAGTCTATTCAGCATTTGA
>NODE_2_length_85_cov_19.094118
TACTCCTGAGCACTTTGTGCTCTTAGTTCTTACTAGAACTGTTACAGCTCCACGAACTTGTCGACTCTTTGAGTCAATTTCTGTTAGTTCCTACGAACTAAGAGGCTCTCTGAGCCCAGTCTTCC

就像每个序列一样,将其视为单行,将节点名称视为其他行。

最佳答案

一个由 trsed 组成的小管道可以做到这一点:

$ tr -d '\n' < contigser.fa | sed 's/\(>[^.]\+\.[0-9]\+\)/\n\1\n/g' > newfile.fa 
<小时/>

python中:

file = open('contigser.fa','r+')
lines= file.read().splitlines()

file.seek(0)
file.truncate()

for line in lines:
    if line.startswith('>'):
        file.write('\n'+line+'\n')
    else:
        file.write(line)

注意:Python 解决方案将更改存储回 contigser.fa

关于python - 合并从 contigs.fa 生成的两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13988581/

相关文章:

python - 使用python将嵌套的json拆分为两个/多个文件

android - 如何使用三星 Galaxy 5 设备开发 Android 应用程序?

bash - 使用 sed 省略最后一行

linux - 如何确定 USB 设备的 IRQ 号?

sed - 多行匹配模式

sed - 使用 sed 注释掉包含特定文本字符串的行

python - Scrapy - 抓取 html 自定义属性

python - 我们可以在 for 循环中使用分页符吗?

python - 用 Python 制作彩色 Ascii 文本

c++ - 等同于 Windows 在 Mac OS X 中命名的互斥体?