社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

生信分析人员如何系统入门python(2019更新版)

生信技能树 • 5 年前 • 959 次点击  


生信分析人员如何系统入门R(2019更新版)生信分析人员如何系统入门Linux(2019更新版) 后又一重磅指南!

作为一个生信老人,我自己是没有太多时间分配给python学习啦,所以本文特邀技能树团队脑图大神给大家设计了17套python入门思维导图,文末有领取方式哈!

并系统性介绍了python学习指南。

引言

一般来说,使用 Python 做生信有两种情况:一种是专门分析生物学数据(主要是各种组学),以调包为主,日常工作就是熟悉各种包的文档,写各种脚本串联工具分析流程,大部分写的都是以快速实现为目的的即用即弃小脚本,对 Python 要求并不高,掌握最核心的语法就可以解决大部分问题,甚至面向对象这部分的编程都较少涉及。

另一种则是以开发工具算法,写包为主,也就是提供工具给前一种工作者使用,这就需要良好的数理基础,对编程也有更高的要求,毕竟软件运行时的效率也是很重要的。

Python 相关的知识点非常多,本篇文章既然是“生信工程师如何入门”系列,自然是抛砖引玉为主,帮助不了解 Python 的同学建立一个领域的概念,并可以据此开始自己的 Python 之旅。

Python 是什么?

Python 是一种面向对象、解释型计算机程序设计语言。Python 语言的哲学也颇具玩味,在这里和大家分享一下:

There should be one -- and preferably only one -- obvious way to do it.

这一点和 Perl 有着很大的差异,Perl 往往有多种实现目的的方式(而且即兴写出来的代码很容易在几个月后看不懂)。

Python 和 Perl 用哪个好?我自己是写 Python 为主的,Perl 一直只有勉强读懂的水平,因此无法做深入的评价。单从生信常用的编程任务而言,两者实现的逻辑是非常相似的(或者说,编程本身的实现逻辑理念都是近似的)。

另外,当你的程序有更高的复杂度需求时,也可以充分利用 Python 面向对象的特性,将生物信息的数据对象化,这种可重用机制在较为复杂的大项目中是可以显著提高效率的。

这里附上的是截止 2019 年 9 月的编程语言排行榜,可以看到 Python 已经是最流行的脚本编程语言。

为什么要用 Python

Python 语法简单,容易学习,工整的程序格式使其可读性非常强,并且易于维护。此外,它也可以很好的支持对象、模块和其他可重用机制,并支持 C 语言模块拓展。Python 有大量免费、稳定的第三方模块,并有方便的包管理工具(pip)。

它最大的缺点可能就是程序运行慢。

Python 可以实现的功能基本用 Perl 也能实现,强制缩进很容易让习惯使用 Perl 的你感觉有约束感。但 Python 工整的语法让你即使过很长时间,还能轻松读懂自己的代码,也可以在学习其他人的代码时有流畅的感受。

生物信息是一个交叉学科,Python 为我们实现各种不同目的的需求提供了充分的支持,不管你是想进行常规的文本处理,还是进一步进行深度的科学计算,亦或是将流行的各种算法应用于项目中。

Step0:学习前的准备

Python 可在官网下载:https://www.python.org/,当然更建议的方式是直接安装 Anaconda。Anaconda 是 Python 的一个发行版本,专注于数据分析,包括了常见的科学计算类库和包管理器 conda。此外,Anaconda 也深度整合了 R。

0.0 版本问题

Python 包括 2.* 版本和 3.* 版本,两者有部分语法不同且不兼容,推荐使用 3.* 版本。

0.1 代码编辑器的选择

代码编辑器可选用 Visual Studio Code、SubLime Text、Atom、PyCharm 等等,反正各有优势,网络上有很多评测文件,可以去看看,选用一个合适的。我自己常用的是 Visual Studio Code,安装了一系列插件,用起来很顺手。如果是做数据分析,可以用 Jupyter Notebook,混写思路说明文档、代码和结果展示,不管是交流还是保存中间结果都是非常便利的。

0.3 寻求帮助

任何一个关键词,都可以用 help(kyeword)  获得内置帮助文档。

在 IPython 环境下,支持直接使用 ?keyword 获取帮助信息。

Step1:学习基本语法

对于有编程基础的朋友,这一部分大致看一遍就可以上手了,在实践中熟悉语言的特性即可。毕竟只要有编程思想的底子在,做起来还是很快的。

  • 缩进:定义作用域的方式,通常为 4 个空格。相同缩进的行被认为是在相同的作用域中。

  • 赋值:使用 "=",初次赋值时不需要给出具体的类型,由等号右边的值决定变量的类型。

  • 运行程序有两种模式:「脚本式编程」就是你预先写好代码文件,然后一次性执行;「交互式编程」则是逐行输入,按下 Enter 键即执行。

变量 & 运算

  • 包括数字(Number)、字符串(String)、元组(Tuple)、列表(List)、字典(Dictionary)、集合(Sets),另外还包括了一个特殊空值(None)。

    a = 100 ## 整型
    b = 1.0 ## 浮点型
    a = 'abc' ## 字符串
    a = True ## 布尔值
    a = None ## 空值

    eg_tuple = (123## 元组
    eg_list = [123## 列表
    eg_dict = {'ele1':1'ele2':2'ele3':3#词典
    • 字符串、列表、元组为「序列对象」,可以通过「下标偏移量」访问。

    • 元组(Tuple)、列表(List)、字典(Dictionary)、集合(Sets)为「容器」,可收纳多个数据。

  • 每种数据类型都内置了丰富的函数,你可以在实践的过程中慢慢熟悉。这里要善用 tab 键。比如你已经定义了一个变量 a = 100,想查看可以使用哪些方法,就可以输入 a. + tab,Python 会有提示。IPython 和代码编辑器会自动给出提示。

  • 这里还需要了解一下可变数据类型 & 不可变数据类型这两种概念。可变数据类型允许在创建后被重新修改(列表、集合、字典)。不可变数据类型在赋值后无法被修改,只能被重新创建(除外上述类型)。

标准类型操作符

利用 Python 可以进行数值运算、逻辑运算、判断表达式。



控制结构

这一部分也和各种编程语言大同小异,主要需要学习条件表达式,if 语句,for 循环,while 循环,以及循环控制关键词(break,continue,pass)。

## 简单 if 语句
if condition_test:
    statement
## for 循环
for  i in 序列:
    statement
## while 循环
while condition:
    statement
## 三元操作符
if C else Y

Step2:函数、模块

函数和模块实质上是将成块的指令封装成可以重复调用的代码块,并借着函数名和模块名,给了一套未来调用的接口。

函数

## 定义函数
def eg_function(a, b):
    c = a + b
    return c
## 调用函数
x = eg_function(34)

传递给函数的参数形式,基本方法有基于顺序的位置传参和关键词传参,另外还有更灵活的包裹传参,可以进一步了解。

这里还可以学习一下「递归」的概念。递归是函数调用其自身的操作(在函数定义中,调用函数自身)。

模块

在 Python 中,一个 .py 文件就构成一个模块。通过引入模块,你就可以复用之前的 Python 程序,调用模块中的函数。模块实质上是比函数更高一层的封装模式。常见的功能编入模块就成为了所谓的库(library)。标准库就是 Python 官方提供的库。

## 引入模块
import module_name
## 引入某模块的函数
from module_name import function_name

那么 Python 如何能找到模块呢?主要是三个路径:

  1. 标准库的安装路径

  2. 环境变量 PYTHONPATH  所包含的路径

  3. 当前文件夹

由于 Python 在很多领域上的使用都是通过拓展包来实现的,是后续学习的基础。

这一部分需要掌握 pip 或 conda。以 pip 为例:

## 安装模块
pip install module
## 查看已安装模块
pip list
## 搜索某个模块
pip search module

接下去,你就可以按照需求学习各个感兴趣的领域相关包了。

Step3:Python 中的类和对象

Python 有一条哲学理念是:一切皆对象。由此可见对象在 Python 中的重要性。

之前描述的都是面向过程的编程范式,但 Python 可以用「对象」来构建更大的框架。用 Python 中的类(Class)具体说明一下:类就是对事物的抽象表达(比如我们把自然界的生物分类,植物、动物、细菌),子类也很好理解,就是类下更小一级的分类(动物类别下的爬行动物、哺乳动物、鸟类)。对每个类都可以定义属性和方法(鸟类属性:颜色;鸟类方法:吃、飞)。

## 定义类
class Bird(object):
    feather = True
    reproduction = "egg"
    def chirp(self, sound):
        print(sound)

上述例子中,用关键词 class 定义了一个类,名字是 Bird,括号里有一个关键词 object,然后分别定义了两个属性 feather 和 reproduction 及一个函数  chirp。

## 创建对象
mypet = Bird()
## 调用对象的方法
mypet.chirp('gaga'## 打印输出 'gaga'

另外,列表、元组、字符串、词典都是对象,甚至函数、模块也都是,均可以查询到相应的属性和方法。

Step4:更多的应用场景

Python 可以应用的场景很多,大多是通过拓展包的方式实现的。下面列举了一些生信可能会用到的场景,有需求的朋友可以进一步学习,由于篇幅限制,只做简单的介绍。

文本处理

这应该是生信应用场景中最频繁出现的了。需要学习一下文本对象的创建(open),文件操作常常和上下文管理器一起使用。

## 常规文件操作
infile = open(text_file, 'r')
execution_code
infile.close()

## 使用上下文管理器
with open(text_file, 'r'as infile:
    execution_code

这里是为了自动关闭文件(一个很容易被遗忘的操作)。接着你需要学习一下包 re 来处理正则表达式。

生物信息

Biopython 有很多功能,比如将生物信息学文件解析成 Python 可用的数据结构,继而可以被循环 or 索引。还提供了常见在线生物信息学程序的接口(如 NCBI、ExPASy 等)。这里不做更详细的介绍了,可以自行去查阅一下官方帮助文档(http://biopython.org/DIST/docs/tutorial/Tutorial.html)。

Biopython 最大的价值在于帮助你集中注意力在解决需要回答的问题,而不是把过多精力分散到特定文件格式的解析中,大家可以类比其为R语言的bioconductor。

数据分析与可视化

NumPy 提供了高效的数据结构和方法,SciPy 提供了科学计算相关函数,Pandas 是一个综合数据分析包。还有做机器学习和深度学习的 scikit-learn 和 TensorFlow。数据可视化主要涉及 matplotlib、seaborn、pyecharts 等。

数据库与 Web 开发

主流数据库都有相应的 Python 模块支持,均可以完成大部分的数据库操作 ,比如数据行的选择、插入、替换、删除,数据表的创建等等。

Web 开发有流行的框架 Django 和 Flask,还有非常轻量级的 WebPy。

推荐书籍参考

最后,给大家附上了之前自己在学习过程中整理的思维导图笔记。里面内容涉及了很多本篇文章没有提及的细节,可以在初学的阶段有一个宏观的把控。

当然,代码还是需要在练习中精进的~

思维导图领取方式

很简单,在我们生信技能树公众号后台回复 python 即可领取!

如果想系统学习生信,下面的课程你可能会需要! 

全国巡讲(点我查看)


1

10.12-14  南京见

全国巡讲第17站


2

10.26-10.28 南宁见

全国巡讲第18站



课程内容

生信-R语言入门

GEO数据库挖掘

生信-LINUX基础

转录组课题设计和流程分析







Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46186
 
959 次点击