You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅线性化ipcress输出文件中的FASTA序列?

问题

使用ipcress进行虚拟PCR后,输出结果中的FASTA序列是分段换行的,需要仅将FASTA序列线性化,其余非FASTA的结果信息保持原样。

原始输出片段:

Ipcress result
Experiment: Primer1
Primers: B A
Target: QLOD02000001.1:filter(unmasked), whole genome shotgun sequence
Matches: 20/20 20/20
Product: 2601 bp (range 100-5000)
Result type: revcomp
ipcress: QLOD02000001.1:filter(unmasked) Primer1 2601 B 91258 0 A 93839 0 revcomp
>F-RK1_product_1 seq QLOD02000001.1:filter(unmasked) start 91258 length 2601
AAGCGGATTGAGAAGTGGTGGTGGTAGTAGCAGTCATGTGGGTAACGAAGACTACAACAGCAGTATTATA
ATTAGGAAAAGGTTTGAAGAAAAGATGAGGCTTGAAAGGGACGACGACGACGACAAGATCTTCAATCCCA
CCAAGTACTTTGTCCAAGAAGTTGTTAATTGCTTTGATGAGTCTGACCTCTACAGAACT...

Ipcress result
Experiment: Primer2
Primers: B A
Target: QLOD02000001.1:filter(unmasked), whole genome shotgun sequence
Matches: 20/20 20/20
Product: 854 bp (range 100-5000)
Result type: revcomp
ipcress: QLOD02000001.1:filter(unmasked) Primer2 854 B 149835 0 A 150669 0 revcomp
>F-RK3_product_1 seq QLOD02000001.1:filter(unmasked) start 149835 length 854
AGGATGACATGGGAATCTGGGACCTCAACCATTTTGTCTAGCTCTCTCCCAAGAGAAAGCGACGAAAATG
ACATGGGTTTGGCTCTGTATTGTTTAACAAATTTAAGTGGCTTAAAAACTCTAC....

期望输出:仅FASTA序列合并为单行,其余内容完全保留。

解决方案

以下是几种实用的实现方法:

方法1:Awk脚本(推荐)

直接处理整个文件,自动识别FASTA序列并线性化,同时完整保留所有其他内容:

awk '
    # 遇到FASTA标题行或新的ipcress结果块起始行
    /^>/ || /^Ipcress result/ {
        # 输出之前缓存的序列(如果有)
        if (seq != "") {
            print seq
            seq = ""
        }
        # 打印当前行
        print
        next
    }
    # 序列行:追加到缓存变量
    { seq = seq $0 }
    # 脚本结束时,打印最后一段缓存的序列
    END { if (seq != "") print seq }
' input_file > output_file

将input_file替换为你的实际文件名,output_file为处理后的输出文件。

方法2:Sed命令

适合快速处理结构固定的文件:

sed -e '/^>/!{/^Ipcress result/!{H;d;}}' -e 'x;s/\n//g;x' input_file > output_file

原理:将所有序列行暂存到缓冲区,遇到标题行或结果块起始行时,将缓冲区的序列合并为单行后输出。

方法3:Seqkit(生物信息专用工具)

如果已安装seqkit(可通过conda/pip安装),可拆分处理后合并:

# 提取非FASTA内容到临时文件
grep -v "^>" input_file > temp_non_fasta.txt
# 提取并线性化FASTA内容
grep -A 999 "^>" input_file | seqkit seq -w 0 > temp_fasta.txt
# 合并两个文件(适用于结果块与FASTA一一对应的情况)
# 若需要更精准的合并,建议使用方法1的awk脚本

内容的提问来源于stack exchange,提问作者Najoua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 04:10:55