对于生信狗来说,日常的数据分析任务大概可以分成三大类:

  • 纯文本处理
  • 数值计算
  • 图表可视化

其中,对这几个任务的可选的解决方案,以及各自的最优解决方案分别为:

纯文本处理:

  • Linux下的文本处理命令,如cut,grep,sort,awk,sed等,它们的使用非常简单,可以满足日常的一些文本处理需求,但是功能相对比较固定,对于相对复杂一些的文本处理需求就显得有点力不从心了

其中awk的文本处理能力相对来说是比较强大的,建议大家去学一下,咱们公众号后期也会推出相应的文章,跟大家分享一些经验

  • Python,正则匹配要用到re模块;
  • Perl,专为文本处理而生的,在文本处理方面几乎无所不能
    但是一般来说实物都有它的两面性,功能强大灵活的代价是代码往往显得有些冗长,对于那些后续需要重复使用的脚本倒还可以接受,但是大多数情况下,你费半天劲写出来的冗长的脚本其实复用率很低,那么这样做就明显不够经济了,也明显不符合我们程序员的一切从简,能偷懒就尽量不多干的习性

那么还有没有替代方案呢?

办法总比问题多,你发现的问题,人家也早就发现了,所以Perl还有另外一种使用模式——Perl单行命令,它的具体介绍会在以后的推文中进行,现在就先不在这里多说了

数值计算:

  • Linux,在Linux执行最简单的加减乘除运算还是可以的,涉及到更高级的运算,我建议你还是算了吧

在Linux中进行数值计算是非常不理想的,在默认情况下不支持数值计算,比如a=1;b=2;,如果此时要直接计算a和b的和,直接执行c=$a+$b是不行的,它会将c=$a+$b看作是字符串进行处理,即相当于运行了c='1+2',所以这个时候,如果打印出c:

$ a=1;
$ b=2;
$ c=$a+$b;
$ echo $c
1+2

如果想要进行数值运算,需要进行相应的处理:c=$[$a+$b]

而且默认情况下,Linux不支持浮点运算

$ a=5;
$ b=2;
$ c=$[$a/$b];
$ echo $c
2 # 准确的值应该是5/2=2.5

所以直接在Linux环境下用shell语句执行数值计算,是一个很笨的操作,但如果在某些情况下,你不得不在Linux环境下用shell语言进行浮点型的数值运算,怎么办?

这个时候就需要请出Linux自带的文本解析工具awk

从本质上来看,其实awk是类似于perl这样的,相对独立于Linux的文本处理语言,它有一套自己文本处理语法和逻辑,所以我一般不把它看做是类似于cut,sort这样的Linux自带的小工具,cut,sort和awk完全不在一个level,而是一种小型轻量化的编程语言
它也是我文本处理而生的,不过因为结构和语法比较简单,因此其使用的灵活性不如Perl

awk是原生支持浮点运算的

  • R,R是为科学计算而生的,它在数学运算上有先天的优势

普通的数值运算就不用说了,因为和其他编程语言相比,它所支持的数据类型除了最基本的,几乎每种编程语言都有的数据结构(如数值标量变量,字符(串)型标量变量,数组(在R中一般不叫做数组,而是叫做向量vector),列表等),它还有矩阵和数据框(data frame,又称为数据帧,它本质上和Excel里的表格没有太大差别)这两种特有的数据结构,这使得它能够进行矩阵相关运算和像操作Excel表格一样操作数据框

  • Python,前面说过R之所以在数学运算上有先天优势,就在于它独有的矩阵和数据框的数据结构,在Python默认的数据结构中是不包含着两者的,但是两个重要的为科学计算的Python模块的出现,赋能了Python——Numpy和Pandas

Numpy支持矩阵,Pandas支持数据框

图表可视化:

  • R:绘图进行图表数据的可视化也是R的一大强项

在R中绘图,有两种解决方案:

  • 使用base中自带的画图工具,功能也足够强大,不过学习成本比较高,不推荐

    • 使用ggplot2包,可以说R之所以在画图方面,受到大家的一致好评就是因为有ggplot2的存在,用ggplot进行画图,真的是舒服

ggplot之所以好用在于它在开发之处就确定的画图逻辑:采用图层叠加的方法

说到图层,用过Photoshop的小伙伴应该很亲切,PS进行图片编辑的时候就是通过新建一个又一个的图层来进行编辑的,每个图层有自己的编辑目标,比如图层2(一般原图作为背景,不去动它)是磨皮,图层3是修头发的,等等,分图层分别进行编辑的好处是,将一个编辑任务分成相对独立的几个部分,尽量互不干扰,最终左右图层的编辑效果想叠加,就得到了最终的效果

回到ggplot上,ggplot的图层叠加用一个+号就实现了

光说没用,举个例子就理解了,做为图层的一个很好的例子是蝙蝠侠logo:

batman logo由6个函数组成,按照下面的顺序逐一画图,叠加在一起,就得到了最后的结果

  • Python,Python在绘图方面实力也不弱,主要通过两个模块,matplotlibseaborn,来实现的,seaborn是在matplotlib的基础上开发出来的,所以理论上,效果会比matplotlib更好一些

seaborn的官网:http://seaborn.pydata.org/ ,大家如果有兴趣可以去学习一下

因为我平时主要用R来绘图,在Python上画图用得比较少,所以没有更多可以跟大家分享的经验,大家有兴趣可以去研究一下,有什么心得体会,也欢迎和我交流,投稿更加欢迎哦


参考资料:

Y叔《Use ggplot2》

编程心得体会_生信编程语言的经验之谈相关推荐

  1. 深入了解java虚拟机编程心得体会_《深入理解Java虚拟机》– 对缓存的理解_零陵上将邢道荣的博客-CSDN博客...

    原文作者:零陵上将邢道荣 原文标题:<深入理解Java虚拟机>-- 对缓存的理解 发布时间:2021-01-26 17:35:15 不才,笔者第一次学习缓存,是在学习redis的时候,是在 ...

  2. 谈谈感想,8元体会易生信培训

    欢迎关注天下博客:http://blog.genesino.com/2018/03/ampliconseqsumamry/ 从2017年11月份到2018年3月份,共进行了5次培训研讨活动,内容依次为 ...

  3. c语言对编程对作用,c语言编程心得体会

    c语言编程心得体会 c语言是在国内外广泛使用的一种计算机语言.以下是小编整理的c语言编程心得体会,欢迎大家阅读! c语言编程心得体会1 说到我学习c语言时,真是用千言万语呀!记得刚开始学的时候,我的c ...

  4. linux系统编程心得体会范文大全,编程心得体会范文

    编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程.下面是学习啦带来的编程的心得体会范文,欢迎欣赏. C语言是在国内外广泛使用的一种计算机语言.其语言功能丰富. ...

  5. 引用另一模板的宏_生信人值得拥有的编程模板Shell

    前言 "工欲善其事必先利其器",生信工程师每天写代码.搭流程,而且要使用至少三门编程语言,没有个好集成开发环境(IDE,Integrated Development Environ ...

  6. 感恩工作平台心得体会_感恩工作心得体会5篇

    相信很多人都会唱<感恩的心>这首歌,而学校也会经常开展感恩活动去教导学生.下面是小编给大家准备的感恩体会,供大家阅读参考,希望可以帮助到大家. 感恩工作一 感恩是一种美德,是一种态度,是一 ...

  7. 做python的心得体会_实训python的心得体会

    如何学习Python的一些总结 C++.Java乃至C#都可以看做是同一类型的语言:C++还算灵活,但纷繁复杂的语法使得生产效率低下,Java提高了生产效率,却损失了灵活性;C#算是在生产效率和灵活性 ...

  8. c#程序设计实训报告心得体会_关于实训的心得体会4篇

    关于实训的心得体会4篇 心得体会是指将学习的东西运用到实践中去,通过实践反思学习内容并记录下来的文字.有关实训的心得体会,欢迎大家一起来借鉴一下! 实训的心得体会(一): 透过这两周的实训,我们学会了 ...

  9. 传感器实训心得体会_关于实训的心得体会

    关于实训的心得体会 [1]总之,这次实习是有收获的,自己也有许多心得体会. 其次,作为企业的一员,无论是其他工作人员,还是会计人员,在进行自身相对循环重复的工作中,不仅应保持工作的质量及效率,还应具备 ...

最新文章

  1. BZOJ4401 块的计数
  2. 完美脱壳组装PE的一般步骤(Obsidium1.3.6.4 DEMO 主程序)
  3. 白话Elasticsearch31-深入聚合数据分析之bucket与metric
  4. qt 编译mysql wince_Qt4.8.6开发WinCE 5.0环境搭建
  5. python 数组和列表的区别
  6. 转: 加快Android编译速度
  7. 期货逼仓攻略之郑商所版
  8. java 内置web服务器_Webstorm 2016内置web服务器配置
  9. java 异常面试问题_Java异常面试问答
  10. 4G模块 EC03-DNC的常用AT指令操作及模块访问内网方法
  11. 数据可视化--物流大数据服务平台
  12. R语言survival包Surv函数创建生存对象、建立Cox回归模型(包含所有协变量)比较不同治疗方法生存率的差异、drop1函数计算cox回归模型自变量似然比检验值、删除冗余变量重新构建cox模型
  13. 【Flutter】使用高德地图实现地图选点以及地图搜索
  14. 无法安全地用该源进行更新,所以默认禁用该源 E: 无法定位软件包
  15. SONM挖矿收益计算器
  16. 蜂鸟E203图像识别--未完待续
  17. 云平台与云主机选择的经验和建议
  18. 三四十岁的大龄程序员,如何保持自己的职场核心竞争力?
  19. [从头读历史] 第271节 诗经 郑风
  20. iframe 自适应高度的多种实现方式

热门文章

  1. Java 反射取类中类_Java反射机制(二):通过反射取得类的结构
  2. android设计一个多线程和画图的程序小球,Android开发之多线程中实现利用自定义控件绘制小球并完成小球自动下落功能实例...
  3. linux修改语言环境
  4. cd返回上一 git_使用Git实现自动化部署项目
  5. 全连接神经网络_【模型解读】从“局部连接”回到“全连接”的Non-Local神经网络...
  6. 图像处理自相关函数c语言,图像处理实验书.docx
  7. django框架 day05
  8. STM32 HAL库 UART 串口读写功能笔记
  9. H3C 路由度量值(Metric)
  10. CF1025C Plasticine zebra