10x基因组数据的组装

10x genomics除了有非常出名的单细胞转录组的业务线以外还有基于10x的基因组的业务。接下来就带大家走一走10x基因组数据的组装流程。

软件下载

组装的软件叫做supernova,可以从10x genomics的官网下载:
https://support.10xgenomics.com/de-novo-assembly/software/downloads/latest
这里需要填一个表,填完之后会给一个包含token的下载地址,用wget或者curl就可以开始下载啦。

wget -O supernova-2.1.1.tar.gz "https://cf.10xgenomics.com/releases/assembly/supernova-2.1.1.tar.gz?这里后面有一大段很长的token"

supernova是不需要安装的,下载好之后解压开,把所在路径加入环境变量中就可以使用了。
接下来可以运行下面的代码测试一下看看能不能正常运行:

# check the environment
supernova sitecheck > sitecheck.txt

# test the pipeline
supernova testrun --id=tiny

如果都能运行成功就可以开始处理自己的数据啦。

supernova mkfastq

组装的第一步是先运行supernova mkfastq得到一个xxx
一个step-by-step的演示可以参考这里:
https://support.10xgenomics.com/de-novo-assembly/software/pipelines/latest/using/mkfastq

# 我的命令找不到了,下面的是官网上摘录的
supernova mkfastq --id=tiny-bcl \
                     --run=/path/to/tiny_bcl
                     -csv=tiny-bcl-simple-2.1.0.csv

supernova run

由于软件的要求,必须把测序文件重命名成如下的形式

xxx_S0_L001_R1_001.fastq.gz
xxx_S0_L001_R2_001.fastq.gz

命名的规则可以参考:
https://support.10xgenomics.com/de-novo-assembly/software/pipelines/latest/using/fastq-input

运行命令:

supernova run \
  --id=test_10x  \
  --fastqs=/path/to/10x/01rawData \
  --sample=test \
  --maxreads=all \
  --localcores=32

32个核心跑了96个小时左右跑完了主体部分,但是还没完成, 还要跑一个supernova mkoutput.

supernova mkoutput

在跑这一步的时候要确定style, 具体参考: https://support.10xgenomics.com/de-novo-assembly/software/pipelines/latest/output/generating

style分为
--style=raw|megabubbles|pseudohap|pseudohap2
四种, 我的建议是可以都测试一下, 如果需要的时间比较少的话, 四个都跑一遍取结果最优的. 另外可以优先试试megabubbles. 因为它不会像raw一样引入N, 而后两种似乎都是出haplotype的结果的.

# style 为 megabubbles
nohup supernova mkoutput \
--asmdir=/path/to/outs/assembly \
--outprefix=test_10x \
--style=megabubbles \
--nozip > mkoutput_megabubbles.log &
# style 为 raw
nohup supernova mkoutput \
--asmdir=/path/to/outs/assembly \
--outprefix=test_10x \
--style=raw \
--nozip > mkoutput_raw.log &
# style 为 pseudohap
nohup supernova mkoutput \
--asmdir=/path/to/outs/assembly \
--outprefix=test_10x \
--style=pseudohap \
--nozip > mkoutput_pseudohap.log &
# style 为 pseudohap2
nohup supernova mkoutput \
--asmdir=/path/to/outs/assembly \
--outprefix=test_10x \
--style=pseudohap2 \
--nozip > mkoutput_pseudohap2.log &

报错解决

  1. 我在分析的时候遇到了一个NCBI导致的bug:

当数据被传到NCBI上之后会原本的序列的ID就会被NCBI自动替换成SRR数据库的编号,但是我的这个10x的数据的ID里是包含了adapter信息的,10x的程序需要这个adapter信息来判断哪些reads被标记了相同的adapter以进行聚类分堆等后续操作的。当时的解决办法是用NCBI的data deliver的功能,把上传者上传到S3的原始数据给下载下来了。这个办法如果不在美国似乎是无法使用的。当时遇到的报错信息如下:

cannot assembly it because the adaper file missing

这个bug可能跟版本有关系。一般而言10x会给你三个文件,除了双端的reads之外,还有一个adapter的文件。但是我这个数据或许是版本比较早或许是啥版本限定的问题,只有双端reads文件,没有单独的adapter文件。

  1. 在跑supernova mkoutput的时候遇到了另一个报错:
version=1.10 style=3
Sat Feb 05 15:37:59 2022: loading assembly files

Fatal error (pid=2957755) at Sat Feb 05 15:37:59 2022:
Attempt to open ~/project/test/outs/assembly/a.base/gang/micro/final/a.sup.hbx for reading failed: No such file or directory [errno=2].

但是这个找不到的a.sup.hbx文件是存在的, 而且大小不是0. 非常奇怪. 也搜不到对应的报错信息.
后来鼓捣了一下解决了,解决办法也比较简单, 只要用绝对路径代替~就可以了.

私货时间

这个软件的需求会很高,所需的存储空间得有1~2Tb,对内存的需求也很高。我当时在我们组的服务器里完成不了,把数据转移到生信技能树的服务器里才完成。

推荐阅读更多精彩内容