第3篇生成了转录本比对的counts.txt文件,现在需要提取有效信息并将4个counts文件合并成一个表达矩阵。
- 查看counts.txt文件格式
head -10 BC07_counts.txt
ENSMUST00000193812.2|ENSMUSG00000102693.2|OTTMUSG00000049935|OTTMUST00000127109.1|4933401J01Rik-201|4933401J01Rik|1070|TEC| 1070 0 0
ENSMUST00000082908.3|ENSMUSG00000064842.3|-|-|Gm26206-201|Gm26206|110|snRNA| 110 0 0
ENSMUST00000162897.2|ENSMUSG00000051951.6|OTTMUSG00000026353|OTTMUST00000086625.1|Xkr4-203|Xkr4|4153|protein_coding_CDS_not_defined| 4153 0 0
ENSMUST00000159265.2|ENSMUSG00000051951.6|OTTMUSG00000026353|OTTMUST00000086624.1|Xkr4-202|Xkr4|2989|protein_coding_CDS_not_defined| 2989 0 0
ENSMUST00000070533.5|ENSMUSG00000051951.6|OTTMUSG00000026353|OTTMUST00000065166.1|Xkr4-201|Xkr4|3634|protein_coding| 3634 0 0
ENSMUST00000192857.2|ENSMUSG00000102851.2|OTTMUSG00000049958|OTTMUST00000127143.1|Gm18956-201|Gm18956|480|processed_pseudogene| 480 0 0
ENSMUST00000195335.2|ENSMUSG00000103377.2|OTTMUSG00000049960|OTTMUST00000127145.1|Gm37180-201|Gm37180|2819|TEC| 2819 0 0
ENSMUST00000192336.2|ENSMUSG00000104017.2|OTTMUSG00000049961|OTTMUST00000127146.1|Gm37363-201|Gm37363|2233|TEC| 2233 0 0
ENSMUST00000194099.2|ENSMUSG00000103025.2|OTTMUSG00000049930|OTTMUST00000127101.1|Gm37686-201|Gm37686|2309|TEC| 2309 0 0
ENSMUST00000161581.3|ENSMUSG00000089699.3|OTTMUSG00000026352|OTTMUST00000065165.1|Gm1992-201|Gm1992|266|lncRNA| 266 0 0
- 检查分隔符类型
cat -A BC07_counts.txt | head -10
ENSMUST00000193812.2|ENSMUSG00000102693.2|OTTMUSG00000049935|OTTMUST00000127109.1|4933401J01Rik-201|4933401J01Rik|1070|TEC|^I1070^I0^I0$
ENSMUST00000082908.3|ENSMUSG00000064842.3|-|-|Gm26206-201|Gm26206|110|snRNA|^I110^I0^I0$
ENSMUST00000162897.2|ENSMUSG00000051951.6|OTTMUSG00000026353|OTTMUST00000086625.1|Xkr4-203|Xkr4|4153|protein_coding_CDS_not_defined|^I4153^I0^I0$
ENSMUST00000159265.2|ENSMUSG00000051951.6|OTTMUSG00000026353|OTTMUST00000086624.1|Xkr4-202|Xkr4|2989|protein_coding_CDS_not_defined|^I2989^I0^I0$
ENSMUST00000070533.5|ENSMUSG00000051951.6|OTTMUSG00000026353|OTTMUST00000065166.1|Xkr4-201|Xkr4|3634|protein_coding|^I3634^I0^I0$
ENSMUST00000192857.2|ENSMUSG00000102851.2|OTTMUSG00000049958|OTTMUST00000127143.1|Gm18956-201|Gm18956|480|processed_pseudogene|^I480^I0^I0$
ENSMUST00000195335.2|ENSMUSG00000103377.2|OTTMUSG00000049960|OTTMUST00000127145.1|Gm37180-201|Gm37180|2819|TEC|^I2819^I0^I0$
ENSMUST00000192336.2|ENSMUSG00000104017.2|OTTMUSG00000049961|OTTMUST00000127146.1|Gm37363-201|Gm37363|2233|TEC|^I2233^I0^I0$
ENSMUST00000194099.2|ENSMUSG00000103025.2|OTTMUSG00000049930|OTTMUST00000127101.1|Gm37686-201|Gm37686|2309|TEC|^I2309^I0^I0$
ENSMUST00000161581.3|ENSMUSG00000089699.3|OTTMUSG00000026352|OTTMUST00000065165.1|Gm1992-201|Gm1992|266|lncRNA|^I266^I0^I0$
前 8 列是|
分隔。
第 9 列及以后是 Tab
分隔。
- 提取转录本名称和比对上的reads数两列信息,并添加Gene_id和sample name
awk -F'|' 'NR==1 {print "Gene_id\tBC07_2"} {split($9, a, "\t"); print $5 "\t" a[3]}' BC07_2_counts.txt > BC07_2_filtered.txt
awk -F'|' 'NR==1 {print "Gene_id\tBC08_2"} {split($9, a, "\t"); print $5 "\t" a[3]}' BC08_2_counts.txt > BC08_2_filtered.txt
awk -F'|' 'NR==1 {print "Gene_id\tBC08"} {split($9, a, "\t"); print $5 "\t" a[3]}' BC08_counts.txt > BC08_filtered.txt
awk -F'|' 'NR==1 {print "Gene_id\tBC07"} {split($9, a, "\t"); print $5 "\t" a[3]}' BC07_counts.txt > BC07_filtered.txt
解释:
-F'|'
→ 先按|
分隔,所以 $5
是基因转录本名称,$9
是1070 0 0
这样的字符串。
split($9, a, "\t")
→ 再按 Tab
(\t
)切分 $9
,存入数组a
。
a[3] 是 0(比对上的 reads 数)。
print $5, a[3] → 只打印基因转录本名称和比对 reads 数。
补充,想查看|
分隔的第9部分每一列的对应关系:
awk -F'|' '{split($9, a, "\t"); for (i=1; i<=length(a); i++) print "Column a[" i "] =", a[i]; print "------"}' BC07_counts.txt | head -9
Column a[1] =
Column a[2] = 1070
Column a[3] = 0
Column a[4] = 0
------
Column a[1] =
Column a[2] = 110
Column a[3] = 0
Column a[4] = 0
可以看到a[3]
才是我们想要的那一列。
查看提取后的效果:
head -10 BC07_filtered.txt
Gene_id BC07
4933401J01Rik-201 0
Gm26206-201 0
Xkr4-203 0
Xkr4-202 0
Xkr4-201 0
Gm18956-201 0
Gm37180-201 0
Gm37363-201 0
Gm37686-201 0
- 合并多个文件,并去除重复的gene_id列
paste BC07_filtered.txt BC08_filtered.txt BC07_2_filtered.txt BC08_2_filtered.txt | cut -f1,2,4,6,8 | column -t > merged_counts.txt
检查合并后的merged.txt
head -10 merged_counts.txt
Gene_id BC07 BC08 BC07_2 BC08_2
4933401J01Rik-201 0 0 0 0
Gm26206-201 0 0 0 0
Xkr4-203 0 0 0 0
Xkr4-202 0 0 0 0
Xkr4-201 0 0 0 0
Gm18956-201 0 0 0 0
Gm37180-201 0 0 0 0
Gm37363-201 0 0 0 0
Gm37686-201 0 0 0 0
这样就生成了一个拥有counts数的原始表达矩阵。