社区所有版块导航
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从入门到精通

弗雷赛斯 • 7 年前 • 1316 次点击  

Python开发的方向太多了,有机器学习,数据挖掘,网络开发,爬虫等等。其实在生信领域,Python还显现不出绝对的优势,生信的大部分软件流程都是用shell或Perl写的,而且已经足够好用了。我选Python是因为我想顺便学点数据挖掘和机器学习的东西,而且Python这些年越来越火,发展势头远超其他脚本语言,所以学它肯定是没错的。

一、入门标准

入门比较难定义,什么程度才算入门呢?

  1. 掌握基本的语法,熟练使用python的内置类型、内置函数和数据结构。

  2. 了解一些基本的模块的使用,能够实现一些简单的需求。

后面有一个实例,如果你能简单的做完,那我敢肯定你已经入门了。

二、基本知识点

1.基本语法

缩进:Python是通过代码缩进来决定代码层次逻辑的,一般约定使用4个空格

版本问题:主要包括2.x系列的和3.x系列的,两者语法不同且不兼容,有的模块只能在指定版本下安装。建议使用3.x Python,碰到特殊问题再去使用指定版本

文件编码声明:python会去环境变量里寻找python解释器。如果代码里有中文,则要以utf-8编码

  1. #!/usr/bin/env python

  2. #-*- coding: utf-8 –*-

变量定义:使用前要先定义

dir():列出一个数据类型或对象的所有方法,非常好用,同help()

文件操作:f = open(),f.close();with open() as f: ,os.path.exists(),os.path.isfile(),os.path.abspath()

目录操作:os.mkdir(),os.rmdir(),os.listdir(),os.chdir()

开发环境选择

  • Sublime Text 对Python支持挺好,轻量级生化武器(推荐)

  • Eclipse+Pydev比较厚重,大型开发比较适合

  • Vim/Atom

  • PyCharm

  • IPython

  • WingIDE

2.处理数据

2.1 基本数据类型:布尔;整型;浮点型;字符串

  1. # 字符串的内置函数,都比较有用

  2. 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'

2.2 基本数据结构:列表、元组、字典、集合。

数据结构就是一种容器,用于在内存中存放我们的数据。

列表:任意元素组成的顺序序列,以位置为索引。

  1. # 列表的内置函数

  2. 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'

元组:相当于不可变的列表,防止错误修改,节省内存开销。元组解包

  1. # 元组的内置函数

  2. 'count', 'index'

字典:键值对,没有顺序,键必须是常量。

  1. # 字典内置函数

  2. 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values'

集合:没有顺序,元素之间没有重复,相当于舍弃了值的字典。集合操作(&,|,-,^,,>=)

  1. # 集合内置函数

  2. 'add', 'clear', 'copy', 'discard', 'pop', 'remove', 'update'

  3. 'isdisjoint','issuperset','issubset','symmetric_difference','difference','union', 'intersection', 'symmetric_difference_update','intersection_update','difference_update',

2.3 控制语句

条件:if…else…

循环:for,while,break,continue

2.4 模块使用

Python有着非常友好的模块安装方法,一个pip install命令几乎可以安装绝大多数的模块。建议使用模块前多看相关API文档。

最常用的模块有:sys,os,re,csv,gzip,fileinput,random,collections,time;百度上有很多很好的模块使用入门教程。

  • 正则表达式 re

  • 有序字典 collections.OrderedDict()

  • 调用系统命令 subprocess.call()

三、入门实例

题目:从大量FASTA文件中提取指定序列,并对提取到的序列做某些处理(如求反向互补序列)

描述:假设你有很多测序数据,分别存储在不同文件夹的不同文件里,现在给你一些序列名,要求你从众多数据中提取出特定的序列。

PS:这里本来应该有大量实例,而且大神还亲自录制了好些视频,可以在我们论坛(http://www.biotrainee.com/forum-90-1.html)找到每个实例的详细描述以及代码和解题思路

思路:遍历每一个文件夹;遍历每一个文件;读取文件,判断序列,输出序列(处理),关闭文件;处理数据,添加一个函数即可。

四、精通标准

当然这只是个噱头,精通的道路是无止境的,下面只是罗列了一些常见的高级特性。

  • 切片,推导式,生成器,异常处理

  • 高级模块:threading(多线程),ctypes(调用C程序优化性能),logging(日志)

  • 专业模块:pysam - 处理基因组数据(fasta/fastq/bam/vcf)的Python模块

  • Biopython:Python的计算分子生物学和生物信息学工具包

  • 编写自己的package:解决某个特定需求,上传到 PyPI,然后你就成为大神了

  • 编程规范:写出规范化的代码 Google Python coding style

  • 函数式编程:即使代码量暴增也不会影响代码的可读性,调试和Debug也会变得非常简单。

  • 面向对象编程:最高级的编程方法,对函数进行分类和封装,让开发“更快更好更强...”

五、最后

Python只是一门编程语言,一种实现工具,我们可以用很多种语言来替换它,我们之所以选择Python,是因为我们喜欢它给我们带来的便捷。如果你想深入某个领域,其实真正重要的是技术背后的算法。

六、推荐资源

  • Python教程 - 廖雪峰的官方网站

    http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

  • python初级教程:入门详解

    http://www.crifan.com/files/doc/docbook/python_beginner_tutorial/release/html/python_beginner_tutorial.html

  • Python 面向对象(初级篇)

    http://m.blog.csdn.net/article/details?id=50760467

  • Python | Codecademy

    https://www.codecademy.com/zh/learn/python

  • Google Python编码风格

    http://www.yeolar.com/note/2013/01/10/python-style-guide/

  • Python正则表达式指南

    http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

  • 《Python学习手册》

  • 《Python编程金典》

  • 《Bioinformatics Programming Using Python》

生信菜鸟专栏是生信技能树论坛的版主团队的专栏,团队成员生信技能背景丰富,文件格式,数据资源,软件使用,脚本技巧,统计绘图,组学实战均有对应人才。而本专栏将从基础到深入,为零基础的各位剖析生信技能。

科研路,不孤单!^ ^

FS科研软件库,集合60+医学科研必备神器,现在统统打包分享

点这里

              致敬Scihub|Freescience、生信人要一起做些很Cool的事儿


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/EgZEtqsIH1
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/2930
 
1316 次点击