【R语言】如何不优雅地修改10X数据文件名(

标准10X数据读取

每个样本文件包括三个文件:

barcodes.tsv:细胞标记条码

features.tsv:基因信息

matrix.mtx:基因表达量信息

通过lapply()用Read10X( file.path(dir,pro)依次读入样本文件,样本文件夹会存入Seurat对象构建orig.ident

#读入存放所有样本文件夹的文件夹
dir="./filtered_feature_bc_matrix" 
samples=list.files( dir )
samples
​
sceList = lapply(samples,function(pro){ 
  print(pro) 
  counts =  Read10X( file.path(dir,pro))
  return(counts)
})
​
#为列名(barcodes)加上样本名
for (i in 1:length(sceList)) {
  col<-colnames(sceList[[i]])
  colnames(sceList[[i]])<-paste0(samples[i],"_",col)
}
​
#构建Seurat对象
merge <- do.call(cbind,sceList)
sce =CreateSeuratObject(counts = merge ,
                        min.cells = 5,
                        min.features = 300 )#常用参数:min.cells为组织中分离的最少细胞数,min.features为一个细胞中测出的最少的基因数量

原数据格式

以GSE188545数据集为例,下载的每个GSM数据有三个文件,但命名并不规范,

大概像这样:

GSM5685287_AD02MTG_barcodes.tsv.gz

GSM5685287_AD02MTG_genes.tsv.gz

GSM5685287_AD02MTG_matrix.mtx.gz

GSM5685288_AD12MTG_barcodes.tsv.gz

GSM5685288_AD12MTG_genes.tsv.gz

GSM5685288_AD12MTG_matrix.mtx.gz

修改思路

1.创建每个GSM数据的文件夹

2.将每个GSM对应的三个文件移入对应文件夹

3.为每个文件夹的文件修改为标准名字

4.需要的数据:创建需要的正则表达式(用于转移文件),文件路径/改名需替代字符(用于文件改名)

全程for循环解决

getwd()
# setwd("..")
setwd("./GSE188545_RAW")# 需要改动处1
# 1.创建样本子文件夹
x<-paste0("GSM56852",c(87:98))# 需要改动处2
l<-length(x)
for(i in 1:l){
  dir.create(x[i])
}
​
# 2.创建需要的正则表达式(用于转移文件),文件路径/改名需替代字符(用于文件改名)
v<-c()
y<-c()
d<-c()
t<-c("_AD02MTG_","_AD12MTG_","_AD30MTG_","_AD04MTG_","_AD16MTG_","_AD17MTG_","_HC14MTG_",
     "_HC19MTG_","_HC35MTG_","_HC03MTG_","_HC07MTG_","_HC37MTG_")# 改动处3
for(i in 1:l){
  y[i]<-paste0("D:/sigle/GSE188545/GSE188545_RAW/",x[i])# 改动处4
  v[i]<-paste0(x[i],".*.gz$")
  v[i]<-paste0("^",v[i])
  d[i]<-paste0(x[i],t[i])
}
v
y
d
​
dir<-getwd()
# 3.转移文件
for (i in 1:l) {
  list.files(getwd(),pattern =v[i],full.names = TRUE) |> purrr::map(\(x) file.copy(x,to = y[i]))
  list.files(getwd(),pattern =v[i],full.names = TRUE) |> purrr::map(file.remove)
}
​
# 4.文件改名
for(i in 1:l){
  setwd(dir)
  print(y[i])
  # 不知什么缘故,循环时以下两条命令如果只运行一次则无反应
  folder<-setwd(y[i])
  files<-list.files(folder)
  folder<-setwd(y[i])
  files<-list.files(folder)
  for (f in files){
    print(d[i])
    newname<-sub(d[i],'',f) #将原文件中的字符"GSM5685288_AD02MTG_",替换为空
    newname<-sub('genes','features',f)# 改动处5,有的数据集features命名不规范
    file.rename(f,newname)
  }
}
getwd()
setwd("..")
getwd()

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要批量修改CSV文件名,你需要使用Python而不是R语言。通过使用Python的os模块和shutil模块,可以实现批量修改CSV文件名的操作。下面是一个示例代码,展示了如何使用Python批量修改CSV文件名: ```python import os # 获取当前目录下所有的CSV文件 csv_files = [file for file in os.listdir('.') if file.endswith('.csv')] # 遍历每个CSV文件 for file in csv_files: # 拆分文件名和扩展名 filename, ext = os.path.splitext(file) # 修改文件名,例如在原文件名前加上"new_"前缀 new_filename = 'new_' + filename + ext # 使用os模块中的rename函数实现文件重命名 os.rename(file, new_filename) ``` 以上代码将当前目录下所有的CSV文件进行遍历,并对每个文件进行重命名。你可以自行根据需要修改重命名的规则和方式。需要注意的是,这段代码是针对当前目录下的CSV文件进行批量修改,如果你的CSV文件存放在其他目录,需要修改代码中的路径。 请注意,这段代码是使用Python的os模块和shutil模块实现的,与R语言无关。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python深度学习入门笔记(二):使用Pandas读取批量CSV文件,文件名中有顺序变量](https://blog.csdn.net/weixin_45367061/article/details/121061116)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [python批量修改文件名](https://blog.csdn.net/web18296061989/article/details/125241167)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值