微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在fastq文件中,如何将序列头更改为文件名和唯一标识符?

如何解决在fastq文件中,如何将序列头更改为文件名和唯一标识符?

我正在处理条形码数据,我希望能够合并fastq文件,并能够轻松分辨出读取的原始条形码。所以我试图将读取的名称更改为文件名称(即条形码01.fastq),并在末尾附加一个唯一的数字。我希望最终产品是这样的:

> barcode01_1
AAGTAGCCTTCGTTCAGTTACGTATTG
+
(&)(*),+*)'(5<64?CA?<;A=@D6
> barcode01_2
...

到目前为止,我使用awk有以下内容

find . -type f -printf "/%P\n" | \
    while read FILE ; 
        do 
            PREFIX=$(echo ">",${FILE##*/}"_");
            awk -v PREFIX=$PREFIX '{
                if (NR%4 == 1) 
                    print PREFIX,++i;
                else 
                    print $0
            }' ${FILE} > ../${FILE}.fastq;
    done 

这会从子目录中获取所有fastq文件,并使文件头为> barcode01_ 1,但我不知道该如何摆脱空间。如果我删除PREFIX++i间的逗号:

find . -type f -printf "/%P\n" | \
    while read FILE ; 
        do 
            PREFIX=$(echo ">",${FILE##*/}"_");
            awk -v PREFIX=$PREFIX '{
                if (NR%4 == 1) 
                    print PREFIX ++i;
                else 
                    print $0
            }' ${FILE} > ../${FILE}.fastq;
    done

这使得标头仅增加数字而没有> barcode01_部分。

解决方法

++推到i上并不意味着awk会将其应用于i而不是PREFIX。比较:

$ awk 'BEGIN{PREFIX="foo"; print PREFIX ++i}'
0

具有:

$ awk 'BEGIN{PREFIX="foo"; print PREFIX (++i)}'
foo1

您的脚本还有其他问题,请将其复制/粘贴到http://shellcheck.net中以了解其中的一些问题,然后在您需要其他帮助时发布新的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?