cellranger实战1:非正常数据之改header

之前都是拿到单细胞counts矩阵进行后续的分析,这次主要基于10X的cellranger软件学习单细胞原始的测序数据(sra/fastq)到表达矩阵的转换。值得注意的是cellranger不会得到最终的表达矩阵,而是如下图所示的每个样本三个配套文件,然后利用Seurat等R包的函数转化为表达矩阵。
笔记首先总结下自己结合具体数据的“顺利”流程,最后再记录下作为新手遇到的坑。

一、“顺利”的流程

  • 插一句,全程使用的linux环境,大家应该都知道~~

1、下载软件

1.1 cellranger
#目前为最新4.0 version
curl -o cellranger-4.0.0.tar.gz "https://cf.10xgenomics.com/releases/cell-exp/cellranger-4.0.0.tar.gz?Expires=1604161511&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9jZi4xMHhnZW5vbWljcy5jb20vcmVsZWFzZXMvY2VsbC1leHAvY2VsbHJhbmdlci00LjAuMC50YXIuZ3oiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE2MDQxNjE1MTF9fX1dfQ__&Signature=B3B0SLEsIXZRhpMshMZxcZc-3vUERbq8veptEr2RXSsJnffIXjjQzxuZvnQVBFH0TVdP5pZ6vZuirgmYey04tV8AveldFy7hINl~qumuD950z6UXYcHfK1zXHXzn0b2bPnClUVJHzshjcry0hnBLQHFvdjnTETwn0x~KPXJ8II8Dn8je4X~h7u7a1zO65VFHf-iT9M2nAAEwtzvN0cuSiYtpO9yKioH3IWTismVRvHkwTZZPlfSJagZk3pjxq~-VprqDTmOx-KZwqUn~GfG-sE7HcIwpl7UomovfBz0d6DKSiWGhtQCyY0~kcVdUDnAtRioRL8NZvqGTTHY9zgtJXw__&Key-Pair-Id=APKAI7S6A5RYOXBWRPDA"
tar -zxvf cellranger-4.0.0.tar.gz #解压即用
1.2 other biosoft
  • 主要可能会用到aspera-clisra-tools两个生信软件,前者用于高速下载原始测序数据;后者主要用于sra到fastq的转换
  • 用conda下载生信软件,方便,高效
conda create -n download #by conda & build an environment
conda activate download 
conda install -y -c hcc aspera-cli
conda install -y -c bioconda sra-tools

2、下载数据

2.1 下载原始测序数据
cat > fq.txt #制备链接txt
fasp.sra.ebi.ac.uk:/vol1/fastq/SRR697/008/SRR6976738/SRR6976738.fastq.gz
fasp.sra.ebi.ac.uk:/vol1/fastq/SRR697/009/SRR6976739/SRR6976739.fastq.gz
fasp.sra.ebi.ac.uk:/vol1/fastq/SRR697/000/SRR6976740/SRR6976740.fastq.gz
fasp.sra.ebi.ac.uk:/vol1/fastq/SRR697/001/SRR6976741/SRR6976741.fastq.gz
fasp.sra.ebi.ac.uk:/vol1/fastq/SRR697/002/SRR6976742/SRR6976742.fastq.gz
fasp.sra.ebi.ac.uk:/vol1/fastq/SRR697/003/SRR6976743/SRR6976743.fastq.gz
cat fq.txt |while read id
do
ascp -QT -l 300m -P33001  \
-i ~/miniconda3/envs/download/etc/asperaweb_id_dsa.openssh   \
era-fasp@$id  .
done

如上会下载得到6个fastq.gz测序文件,对应关系为

#GSM3090973 uninfected
SRR6976738.fastq.gz 2G 为序列长度为8的index
SRR6976739.fastq.gz 6G 为序列长度为26的barcode(16)+UMI(10)
SRR6976740.fastq.gz 21G 为序列长度为98的转录本reads
#GSM3090974 post-infected
SRR6976741.fastq.gz
SRR6976742.fastq.gz
SRR6976743.fastq.gz
raw fastq
2.2 下载参考基因组数据
curl -O https://cf.10xgenomics.com/supp/cell-exp/refdata-gex-mm10-2020-A.tar.gz
tar -zxvf refdata-gex-mm10-2020-A.tar.gz

3、修改名字

3.1 修改fastq文件名
  • 为了让cellranger能够正确识别出一个样本的三个配套fatsq数据,一般需要规范文件命名。
  • 官方给的示例命名方法之一如下


|-- MySample_S1_L001_I1_001.fastq.gz # I1 means the Index
|-- MySample_S1_L001_R1_001.fastq.gz # R1 means the Barcode+UMI
|-- MySample_S1_L001_R2_001.fastq.gz # R2 means the reads 
|-- MySample_S1_L002_I1_001.fastq.gz
|-- MySample_S1_L002_R1_001.fastq.gz
|-- MySample_S1_L002_R2_001.fastq.gz
  • 按照上面的示例进行手动改名,主要用mv命令。代码自动改名语句暂时还没有摸清楚
#GSM3090973 uninfected
GSM3090973_S1_L001_I1_001.fastq.gz  #SRR6976738
GSM3090973_S1_L001_R1_001.fastq.gz  #SRR6976739
GSM3090973_S1_L001_R2_001.fastq.gz  #SRR6976740

#GSM3090974 post-infected
GSM3090974_S1_L002_I1_001.fastq.gz  #SRR6976741
GSM3090974_S1_L002_R1_001.fastq.gz  #SRR6976742
GSM3090974_S1_L002_R2_001.fastq.gz  #SRR6976743
3.2 修改fastq header名(optional)
  • 如果下次遇到的情况为:每个样本的配套三文件为同一SRR号,就不用执行这一步骤了。
  • 由于每个样本的三个fastq文件分别是一个SRR号,即header不同;这样cellranger在执行命令时不能将三者的数据串到一起(别问我是怎么知道的...)


    3 SRR
gunzip ../fastq/GSM3090973_S1_L001_I1_001.fastq.gz &
nohup sed 's/6976738/6976740/' GSM3090973_S1_L001_I1_001.fastq > tmp &
nohup gzip tmp &
mv tmp.gz GSM3090973_S1_L001_I1_001.fastq.gz

gunzip ../fastq/GSM3090973_S1_L001_R1_001.fastq.gz &
nohup sed 's/6976739/6976740/' GSM3090973_S1_L001_R1_001.fastq > tmp2 &
nohup gzip tmp2 &
mv tmp2.gz GSM3090973_S1_L001_R1_001.fastq.gz

gunzip ../fastq/GSM3090974_S1_L002_I1_001.fastq.gz &
nohup sed 's/6976741/6976743/' GSM3090973_S1_L002_I1_001.fastq > tmp3 &
nohup gzip tmp3 &
mv tmp3.gz GSM3090974_S1_L002_I1_001.fastq.gz

gunzip ../fastq/GSM3090974_S1_L002_R1_001.fastq.gz &
nohup sed 's/6976742/6976743/' GSM3090973_S1_L002_R1_001.fastq > tmp4 &
nohup gzip tmp4 &
mv tmp4.gz GSM3090974_S1_L002_R1_001.fastq.gz

为什么如此的修改,可参看下面第二部分的踩坑记录

  • 综上,就得到了每套三个的fastq的文件名与header一致的结果,可用于后续的分析。
GSM3090973_S1_L001_I1_001.fastq.gz  #SRR6976738
GSM3090973_S1_L001_R1_001.fastq.gz  #SRR6976739
GSM3090973_S1_L001_R2_001.fastq.gz  #SRR6976740
GSM3090974_S1_L002_I1_001.fastq.gz  #SRR6976741
GSM3090974_S1_L002_R1_001.fastq.gz  #SRR6976742
GSM3090974_S1_L002_R2_001.fastq.gz  #SRR6976743
after rename

GSM3090973

4、cellranger

  • 这一步就是利用cellranger软件,结合fastq测序文件与参考基因组文件进行比对、count。
  • 命令很简单,但参数要求与数据要求都比较严谨的,要注意、小心
cat > GSM3090973.sh
bin=../cellranger-4.0.0/bin/cellranger #设置变量,方便应用
db=./refdata-gex-mm10-2020-A
fq_dir=./fq/
$bin count --id=GSM3090973 \ #输出文件夹名
--localcores=4 \  #线程
--transcriptome=$db \ #参考基因组路径
--fastqs=$fq_dir \  #测序数据路径
--sample=GSM3090973 \ #指定sample的配套文件的前缀,从而在$fq_dir里识别
--expect-cells=3000 \ #可通过文献查询,大致给一个数量
--nosecondary   #不进行下游分析
nohup bash GSM3090973.sh 1>GSM3090973.log 2>&1 &
cat > GSM3090974.sh
bin=../cellranger-4.0.0/bin/cellranger
db=./refdata-gex-mm10-2020-A
fq_dir=./fq/
$bin count --id=GSM3090974 \
--localcores=4 \
--transcriptome=$db \
--fastqs=$fq_dir \
--sample=GSM3090974 \
--expect-cells=12000 \
--nosecondary 
nohup bash GSM3090974.sh 1>GSM3090974.log 2>&1 &
  • 上述两个命令从半夜12点跑到第二天中午12点左右,12h才执行完毕;
  • 不过看到最终成功的结果还是挺开心的。

理论上只需进行四部即可达到基本的目标,拿到比对count数据。估计按上述顺利的流程一天一夜就应该能处理好了,可我断断续续花了两天半的时间才完成。作为新手,总会遇到一系列的"坑"

二、踩坑记录

  • 因为第一次学习cellranger软件,所以学习过程中碰到了不少坑。大部分通过自行google都可以解决。
  • 但也遇到了几个郁闷的问题,导致耗费了不少时间。

1、header mismatch

  • 简单来说就是上面3.2步骤解决的问题。
  • 一开始未进行3.2的修改,直接运行第四步:提示的报错类似 input data header mismatch之类的报错;google、baidu都没有找到类似的解答,很郁闷,也没想到是fastq的header不一致的问题;
  • 于是就想着按照单细胞天地之前的示例教程走一遍,看看到底哪里不一样;按照示例教程最后运行成功了(代码就不演示了,详见原文教程),想了下与上述文件的不同在于:示例中每个样本就提供一个sra文件,利用sam-tools转化为三个fastq,即这三个fastq的名字(SRR ID)是一样的,最多只是后缀不同
  • 而本次任务每个样本直接提供三个fastq文件,对应index、barcode+UMI、reads,即有三个SRR号。虽然文件名容易改,但内部的fastq组成的序列header还是不一样的。

2、sra-tools

  • 在按照示例教程,将SRA文件转为fastq格式时,一般会用到sra-tools;参照教程,进行如下命令拆分
    fastq-dump --split-3 ******sra
  • 结果提示 --split-3 parameter unrecognized;查看帮助文档也是推荐这个参数设置的,真的是无语了。
  • 后来尝试了 --split-files参数成功得拆分成了三个文件

3、change header

  • 如第一点所说,发现问题后,就要补坑。其实也不是一个坑,而涉及到效率。同样的目的,如果能花1个小时解决,为什么要花3个小时呢。关于修改这个header换了好几次思路(后面估计cellranger更耗时,就想睡之前把cellranger挂到后台,即尽快把这个change完成)
  • try1:将配套的三个fastq都换成统一的name
zless GSM3090973_S1_L001_R2_001.fastq.gz | sed 's/SRR6976738/GSM3090973/' | gzip> ../rename/GSM3090973_S1_L001_R2_001.fastq.gz &
zless GSM3090973_S1_L001_R2_001.fastq.gz | sed 's/SRR6976739/GSM3090973/' | gzip> ../rename/GSM3090973_S1_L001_R2_001.fastq.gz &
zless GSM3090973_S1_L001_R2_001.fastq.gz | sed 's/SRR6976740/GSM3090973/' | gzip> ../rename/GSM3090973_S1_L001_R2_001.fastq.gz &
  • try2:后来想第三个fastq文件太大20多G,就把第一、二个fastq文件改成与第三个一致,不是更快?
zless GSM3090973_S1_L001_I1_001.fastq.gz | sed 's/6976738/6976740/' | gzip> ../rename/GSM3090973_S1_L001_I1_001.fastq.gz &
zless GSM3090973_S1_L001_R1_001.fastq.gz | sed 's/6976739/6976740/' | gzip> ../rename/GSM3090973_S1_L001_R1_001.fastq.gz &
#try3
zless ../fastq/GSM3090973_S1_L001_I1_001.fastq.gz | paste - - - - | sed 's/6976738/6976740/' | tr "\t" "\n"| gzip > GSM3090973_S1_L001_I1_001.fastq.gz &
zless ../fastq/GSM3090973_S1_L001_R1_001.fastq.gz | paste - - - - | sed 's/6976739/6976740/' | tr "\t" "\n"| gzip > GSM3090973_S1_L001_R1_001.fastq.gz &
#试了上述两种方法,都还是需要好几个小时
  • try4
    即第一部分3.2步进行的操作,1-2h即可完成修改。相比上述方法,效率还是很高的。
    至于速度差异的原因,目前也不是非常清楚。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容