4. 建立表达矩阵

第3篇生成了转录本比对的counts.txt文件,现在需要提取有效信息并将4个counts文件合并成一个表达矩阵。

  1. 查看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
  1. 检查分隔符类型
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 分隔。

  1. 提取转录本名称和比对上的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 是基因转录本名称,$91070 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
  1. 合并多个文件,并去除重复的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数的原始表达矩阵。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容