在 fastq 文件中,如何将序列 headers 更改为文件名和唯一标识符?
In a fastq file, how do I change the sequence headers to the file name and a unique identifier?
我正在处理条形码数据,我希望能够合并 fastq 文件并轻松分辨出读取的原始条形码。所以我试图将读取的名称更改为文件的名称(即 barcode01.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 [=12=]
}' ${FILE} > ../${FILE}.fastq;
done
这会从子目录中获取所有 fastq 文件并生成 headers > barcode01_ 1
但我不知道如何删除 space。如果我删除 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 [=13=]
}' ${FILE} > ../${FILE}.fastq;
done
这使得 headers 只增加数字而没有 > barcode01_
部分。
将 ++
推向 i
并不意味着 awk 会将其应用于 i
而不是 PREFIX
。比较:
$ awk 'BEGIN{PREFIX="foo"; print PREFIX ++i}'
0
与:
$ awk 'BEGIN{PREFIX="foo"; print PREFIX (++i)}'
foo1
您的脚本还有其他几个问题,copy/paste 进入 http://shellcheck.net 以了解其中的一些问题,然后 post 如果您需要其他帮助,请提出一个新问题.
我正在处理条形码数据,我希望能够合并 fastq 文件并轻松分辨出读取的原始条形码。所以我试图将读取的名称更改为文件的名称(即 barcode01.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 [=12=]
}' ${FILE} > ../${FILE}.fastq;
done
这会从子目录中获取所有 fastq 文件并生成 headers > barcode01_ 1
但我不知道如何删除 space。如果我删除 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 [=13=]
}' ${FILE} > ../${FILE}.fastq;
done
这使得 headers 只增加数字而没有 > barcode01_
部分。
将 ++
推向 i
并不意味着 awk 会将其应用于 i
而不是 PREFIX
。比较:
$ awk 'BEGIN{PREFIX="foo"; print PREFIX ++i}'
0
与:
$ awk 'BEGIN{PREFIX="foo"; print PREFIX (++i)}'
foo1
您的脚本还有其他几个问题,copy/paste 进入 http://shellcheck.net 以了解其中的一些问题,然后 post 如果您需要其他帮助,请提出一个新问题.