专栏名称: 生信菜鸟团
生信菜鸟团荣誉归来,让所有想分析生物信息学数据的小伙伴找到归属,你值得拥有!
目录
相关文章推荐
生物学霸  ·  PubMed ... ·  2 天前  
生物制品圈  ·  JPM ... ·  2 天前  
生物制品圈  ·  JPM 2025 | ... ·  3 天前  
51好读  ›  专栏  ›  生信菜鸟团

还有必要背诵和掌握正则表达式语法规则吗

生信菜鸟团  · 公众号  · 生物  · 2025-01-17 20:16

正文

大家做数据分析的时候应该是都能感受到,80%的时间都花费在了数据清洗环节,比如生存分析或者差异分析,表达量矩阵固然是很重要,但是样品的表型信息也是必不可少,这个时候就需要两个信息完全的匹配好,否则后面的关联分析就无从谈起!

比如数据集:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE117358,是  48 samples in total :

  • 24 samples from AB1 pretreatment tumours (12 responders, 12 non-responders)
  • 24 samples from Renca pretreatment tumours (12 responders, 12 nonresponders).

其中表达量矩阵是一个2.5M的文件:GSE117358_genecounts.csv.gz 可以简单的使用如下所示的r代码读取它:

data"GSE117358_genecounts.csv.gz",
                        data.table = F
data=data[!duplicated(data$Symbol),]
mat1:(ncol(data)-3))]
rownames(mat)=data$Symbol 
keep_feature  1) > 1 ;table(keep_feature)
symbol_matrix rownames(symbol_matrix)=rownames(mat)[keep_feature]  

我们拿到了表达量矩阵,但是里面的样品名字如下所示:

>   colnames(symbol_matrix)
 [1] "AB01" "AB02" "AB09" "AB10" "AB17" "AB18" "AB25" "AB26" "AB33" "AB34" "AB41"
[12] "AB42" "AB49" "AB50" "AB57" "AB58" "AB65" "AB66" "AB67" "AB68" "AB69" "AB70"
[23] "AB71" "AB72" "RZ01" "RZ02" "RZ09" "RZ10" "RZ17" "RZ18" "RZ25" "RZ26" "RZ33"
[34] "RZ34" "RZ41" "RZ42" "RZ49" "RZ50" "RZ57" "RZ58" "RZ65" "RZ66" "RZ67" "RZ68"
[45] "RZ69" "RZ70" "RZ71" "RZ72"

这个时候如果我们获取这个表达量矩阵的样品信息,代码和结果如下所示:

library(AnnoProbe)
library(GEOquery)  
gset = getGEO("GSE117358", destdir = '.', getGPL = F
  pd = pData(gset[[1]]) 
  colnames(pd) 
> head(pd$title)
[1"AB1 Responder rep1 [AB01]"     "AB1 Non-responder rep1 [AB02]"
[3"AB1 Responder rep2 [AB09]"     "AB1 Non-responder rep2 [AB10]"
[5"AB1 Responder rep3 [AB17]"     "AB1 Non-responder rep3 [AB18]"

可以看到我们的矩阵里面的样品名字是样品信息表格里面的中括号里面的关键词,就需要一一对应起来。因为它们有可能是错位的,就需要精确的匹配两个字符串。这个时候正则表达式就派上用场了,但是正则表达式的语法规则非常复杂,绝大部分人都需要三五天去理解和使用,而且哪怕是当时掌握了如果长期不使用又很容易忘记,但是它又确实是一个低频的知识点啊!

这个时候就可以借助于人工智能大模型了!

君子善假于物

也就是说,我们只需要搞清楚自己想要什么,就可以借助于人工智能大模型来解析,而不需要自己手动一个个字符去敲击代码,何其快哉!!!

  • 首先推荐这个:https://cn.bing.com/?ensearch=1 (仅次于谷歌的bing搜索,记得选择国际版哦)
  • 然后试试看最新的ai搜索:https://kimi.moonshot.cn/chat (相当于你雇佣了一个24小时的随身教练,指导你分析的方方面面)

如下所示:

人工智能大模型来解析

高难度知识点比比皆是

在Linux学习领域,类似于正则表达式这样的高难度知识点确实是非常多,比如:

  • shell中的扩展(Expansions) https://opengers.github.io/linux/linux-shell-brace-parameter-command-pathname-expansion/
  • bash脚本的参数扩展 (parameter expansion) :https://www.ibm.com/developerworks/cn/linux/l-bash-parameters.html
  • shell通配符(wildcard): https://cloud.tencent.com/developer/article/1114732
  • type命令:https://man.linuxde.net/type
  • 字符串操作:https://my.oschina.net/aiguozhe/blog/41557

很难每个知识点都活学活用,融会贯通,尤其是现在每个人都有了人工智能大模型的使用能力,以前我们劳心劳力整理好的公众号推文笔记基本上都失去了价值:

灵魂拷问:还有必要做公众号继续写笔记吗

如果都没有必要背诵和掌握正则表达式语法规则,因为人工智能大模型很容易帮助你实现各种刁钻的需求,那么发散思维一下,是不是写公众号做笔记分享必要性也很弱了呢?或者说,是否可以分类讨论,有一些内容不适合继续分享因为会被人工智能大模型很好的替代,但是仍然会有一些知识领域是需要人工整理和分享的呢?欢迎大家,畅所欲言!