美文网首页RNA-seqCook RR语言与统计分析
「不定期更新」常用但又记不住的生信分析小技巧(code)

「不定期更新」常用但又记不住的生信分析小技巧(code)

作者: ShawnMagic | 来源:发表于2019-04-12 19:22 被阅读2次

Section 1 R

  • 批量导入Table 储存为数据框: 比如有大量的数据,逗号分隔符的例如.csv,制表符分隔符的例如 .txt 部分 .xls,一个一个read太慢,需要批量导入
setwd("DirofYourData")
file_names <- list.files(pattern = ".xls")# 将路径下.xls的文件名储存到file_names这个变量中
for (i in 1:length(file_names)) { # for循环开始length(file_names)指的是该向量的长度,可以理解为从第一个到最后一个
  name<-gsub(".xls","",file_names[i])# file_names是一个向量用[]来索引那么file_names[1]表示上面赋值后第一个.xls文件名类似"lncRNA.fiber.xls",当i = 1时, 就变成gsub(".xls","",lncRNA.fiber.xls), 那么就是将.xls前面的文件名截取出来赋值给name。
  assign(name,read.table(file_names[i],sep = "\t",header = TRUE,quote = "",stringsAsFactors = FALSE))# assign是循环时给变量赋值,那么这段命令的意思就是依次从第一个到最后一个读入数据并赋值给name。
}

Reference:
Source: 百度, by 爸爸妈妈讲故事
Source: 简书,by 郑宝童

  • 批量删除环境变量中的数据:做完数据清洗往往一些很大的原始数据还占据在环境变量中,所以想要删除,清空的命令rm(list = ls()),但是需要删除一些特定的含有共同字符的怎么办?刚开始想到通配符* rm(lncRNA.*),当然这个肯定报错,然后在高人指点下完成了,在此感谢BMK原老师🌹
rm(list=ls(pattern="lncRNA."))# 比如我之前导入的rawdata是lncRNA的FPKM,批量删除那么就让pattern="lncRNA"

An other solutionrm(list=ls(pattern="temp")), remove all objects matching the pattern.

这里的解释只要你的变量名中包含"lncRNA"都会被删除,所以这个是变通的,必须细心观察不然会遭到误伤😂
Reference:
Source: stack overflow

  • select()提取数据框感兴趣的列
    数据分析时通常需要从一个大的dataframe中提取感兴趣的列,或者数据清洗时需要删掉一些没有用的列,通过select()函数直接提取
# 比如我想把fpkm表达矩阵中叶片的fpkm值提取出来,那么
leaf.lncRNA = select(lncRNA.leaf, contains("leaf"))# 包含leaf的
# 再比如我再linux下paste差异列表的时候有些材料可能多次出现,但是导入R之后对于重复的colname,R会自动的在后面加.1.2.3...所以想要去掉这些重复的只取唯一的:
leaf.lncRNA = select(lncRNA.leaf, ends_with("FPKM"))以FPKM结尾的

Reference
墙裂推荐 by 简书 王诗翔

Section 2 Linux

  • Blast本地数据库构建
    这玩意不经常用老是记不住,每次构建都得help😂,老年人记性不好,下次直接翻简书
makeblastdb -in input_file -parse_seqids -hash_index -dbtype nucl
# makeblastdb: 就是make blast database
# -in 要建立本地blast的fasta文件,可以使基因组序列也可以是CDS,peptide,protein, 按道理只要是个fasta他都能建立
# -parse_seqids: 对于fasta文件会分析id
# -hash_index: 建立哈希索引
# -dbtype: 数据库类型
  • 本地blast
    我最常用的blastn
blastn -db Dt3rd.fasta -query dtsub.fa -out Dt-result6.xls -evalue 0.00001 -max_target_seqs 1 -num_threads 4 -outfmt "6 qacc sacc evalue length pident "
# -db database
# -query 需要blast的文件
# -out output
# -evalue e值越小越好,最小为0
# -max_target_seqs 最大匹条目
# -num_threads 要使用几个核心
# -outfmt 输出格式

更多关于blast参数和原理参考:
Reference:
blast原理 by 简书 leoinUSA
blast参数 by 博客 牛牛龙
for循环对路径下的文件进行批量操作:
例子: 比如我想做venn,想从差异基因文件中批量提取ID,我一共有17个样本3个组织,如果一个个cp估计自己把自己也整傻了,所以用for循环对路径下的文件批量awk ’{print $1}',然后生成一个个小文件保存起来,然后用TBtools中的venn或者upsetplot拖进去做,速度杠杠的😁

for i in `ls *.xls`; do awk '{print $1}' $i > tmp/$i; done
# 对于路径下.xls的文件,依次将第一列打印出来再保存到 tmp文件下名字还是原来的文件名

当然这只是一个简单的例子,习惯了for后面可能在学习while等。

相关文章

网友评论

    本文标题:「不定期更新」常用但又记不住的生信分析小技巧(code)

    本文链接:https://www.haomeiwen.com/subject/oochwqtx.html