leezx

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

一、入门标准

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

1. 掌握基本的语法,熟练使用python的内置类型、内置函数和数据结构。
2. 了解一些基本的模块的使用,能够实现一些简单的需求。

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

二、基本知识点

1.基本语法

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

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

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

#!/usr/bin/env python
#-*- 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 基本数据类型:布尔;整型;浮点型;字符串

# 字符串的内置函数,都比较有用
\'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 基本数据结构:列表、元组、字典、集合。数据结构就是一种容器,用于在内存中存放我们的数据。

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

# 列表的内置函数
\'append\', \'clear\', \'copy\', \'count\', \'extend\', \'index\', \'insert\', \'pop\', \'remove\', \'reverse\', \'sort\'

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

# 元组的内置函数
\'count\', \'index\'

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

# 字典内置函数
\'clear\', \'copy\', \'fromkeys\', \'get\', \'items\', \'keys\', \'pop\', \'popitem\', \'setdefault\', \'update\', \'values\'

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

# 集合内置函数
\'add\', \'clear\', \'copy\', \'discard\', \'pop\', \'remove\', \'update\'
\'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文件中提取指定序列,并对提取到的序列做某些处理(如求反向互补序列)

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

image

image

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

四、精通标准

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

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

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

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

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

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

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

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

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

五、最后

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

六、推荐资源

  1. Python教程 - 廖雪峰的官方网站
  2. python初级教程:入门详解
  3. Python 面向对象(初级篇)
  4. Python | Codecademy
  5. Google Python编码风格
  6. Python正则表达式指南
  7. 《Python学习手册》
  8. 《Python编程金典》
  9. 《Bioinformatics Programming Using Python》

分类:

技术点:

相关文章:

  • 2021-12-20
  • 2021-07-01
  • 2021-12-03
  • 2021-12-19
  • 2021-11-21
  • 2021-11-27
  • 2021-12-16
  • 2022-01-03
猜你喜欢
  • 2021-11-20
  • 2021-07-28
  • 2021-11-24
  • 2021-05-29
  • 2021-08-29
  • 2022-03-08
相关资源
相似解决方案