如何优雅的给单细胞转录组fastq文件改名

2023-02-27 21:39:37 浏览数 (1)

一般来说,10X技术的单细胞转录组每个样品最好是有3个fq文件,分别是I1,R1,R2,其中I1理论上也可以抛弃,但是呢,很多情况下,我们同一个样品会有多个R1,R2,因为测序的 时候的上机的安排:

就面临改名的问题。比如:

代码语言:javascript复制
touch {A..X}_S1_L001_R1_001.fastq.gz {A..X}_S1_L001_R2_001.fastq.gz
ls *gz|cat |head

A_S1_L001_R1_001.fastq.gz
A_S1_L001_R2_001.fastq.gz
B_S1_L001_R1_001.fastq.gz
B_S1_L001_R2_001.fastq.gz
C_S1_L001_R1_001.fastq.gz
C_S1_L001_R2_001.fastq.gz
D_S1_L001_R1_001.fastq.gz
D_S1_L001_R2_001.fastq.gz

这个时候假设我们的 A,B,C,D四个fq文件其实是同一个病人的10x,就需要改名;

首先,我们使用如下所示的R代码来模拟的一个情况是:6个病人的样品,但是有24个fq文件:

代码语言:javascript复制
df = data.frame(patients=paste0('p',rep(1:6,each=4)),
           samples=LETTERS[1:24])
df

每个fq文件都是独立的:

代码语言:javascript复制
> df
   patients samples
1        p1       A
2        p1       B
3        p1       C
4        p1       D
5        p2       E
6        p2       F
7        p2       G
8        p2       H
9        p3       I
10       p3       J
11       p3       K
12       p3       L

我们其实是需要改名的, 代码如下所示:

代码语言:javascript复制

s=0
p='p1'
apply(df,1,function(x){
  raw=paste0(x[2],'_S1_L001_R1_001.fastq.gz')
 # ifelse(x[1]==p,s=s 1,s=0)
  if(x[1]==p){
    s<<-s 1
  }else{
    s <<- 1
    p <<- x[1]
  }
  print(p)
  new=paste0(x[1],'_S',s,'_L001_R1_001.fastq.gz')
  paste0('mv ',raw," ", new)
})

可以看到,修改名字很成功:

代码语言:javascript复制
[1] "mv X_S1_L001_R1_001.fastq.gz p6_S4_L001_R1_001.fastq.gz"
 [1] "mv A_S1_L001_R1_001.fastq.gz p1_S1_L001_R1_001.fastq.gz"
 [2] "mv B_S1_L001_R1_001.fastq.gz p1_S2_L001_R1_001.fastq.gz"
 [3] "mv C_S1_L001_R1_001.fastq.gz p1_S3_L001_R1_001.fastq.gz"
 [4] "mv D_S1_L001_R1_001.fastq.gz p1_S4_L001_R1_001.fastq.gz"
 [5] "mv E_S1_L001_R1_001.fastq.gz p2_S1_L001_R1_001.fastq.gz"
 [6] "mv F_S1_L001_R1_001.fastq.gz p2_S2_L001_R1_001.fastq.gz"
 [7] "mv G_S1_L001_R1_001.fastq.gz p2_S3_L001_R1_001.fastq.gz"
 [8] "mv H_S1_L001_R1_001.fastq.gz p2_S4_L001_R1_001.fastq.gz"
 [9] "mv I_S1_L001_R1_001.fastq.gz p3_S1_L001_R1_001.fastq.gz"
[10] "mv J_S1_L001_R1_001.fastq.gz p3_S2_L001_R1_001.fastq.gz"
[11] "mv K_S1_L001_R1_001.fastq.gz p3_S3_L001_R1_001.fastq.gz"
[12] "mv L_S1_L001_R1_001.fastq.gz p3_S4_L001_R1_001.fastq.gz"

把同一个样品会有多个R1,R2,修改为同样的规则,这样后续跑单细胞转录组定量流程就很容易啦。

学徒专业

使用纯shell脚本完成这个改名操作:

代码语言:javascript复制
touch {A..X}_S1_L001_R1_001.fastq.gz {A..X}_S1_L001_R2_001.fastq.gz

26个fq文件的样品,对应的是6个病人,所以修改名字从S字符串开始递增即可。可以仔细观察fastq文件的名字,就会发现规律,如果以下划线为分隔符,那么

  • 第2列是S开头可以递增
  • 第3列是L开头,可以递增
  • 第五列是R1,R1,I1这样的3种情况

正常走cellranger的定量流程即可,代码我已经是多次分享了。参考:

  • 10X单细胞转录组原始测序数据的Cell Ranger流程(仅需800元)
  • 10X的单细胞转录组原始数据也可以在EBI下载
  • 一个10x单细胞转录组项目从fastq到细胞亚群
  • 一文打通单细胞上游:从软件部署到上游分析
  • PRJNA713302这个10x单细胞fastq实战
  • 一次曲折且昂贵的单细胞公共数据获取与上游处理
  • 只能下载bam文件的10x单细胞转录组项目数据处理
  • 不知道10x单细胞转录组样品和fastq文件的对应关系
  • 10X单细胞转录组测序数据的 SRA转fastq踩坑那些事
  • 10x的单细胞转录组fastq文件的R1和R2不能弄混哦

差不多几个小时就可以完成全部的样品的cellranger的定量流程。基础知识非常重要,我们在单细胞天地多次分享过cellranger流程的笔记(2019年5月),大家可以自行前往学习,如下:

  • 单细胞实战(一)数据下载
  • 单细胞实战(二) cell ranger使用前注意事项
  • 单细胞实战(三) Cell Ranger使用初探
  • 单细胞实战(四) Cell Ranger流程概览
  • 单细胞实战(五) 理解cellranger count的结果

0 人点赞