开源生信 Python教程
生信专用简明 Python 文字和视频教程
源码在:https://github.com/Tong-Chen/Bioinfo_course_python
目录
- 背景介绍
 
- 编程开篇
 - 为什么学习Python
 - 如何安装Python
 - 如何运行Python命令和脚本
 - 使用什么编辑器写Python脚本
 
- Python程序事例
 - Python基本语法
 
- 数值变量操作
 - 字符串变量操作
 - 列表操作
 - 集合操作
 - Range使用
 - 字典操作
 - 层级缩进
 - 变量、数据结构、流程控制
 
- 输入输出
 
- 交互式输入输出
 - 文件读写
 
- 实战练习(一)
 
- 背景知识
 - 生信相关作业(一)
 
- 函数操作
 
- 函数操作
 - 生信相关作业(二)
 
- 模块
 - 命令行参数
 
- 命令行参数
 - 生信相关作业(三)
 
- 更多Python内容
 
- 单语句块
 - 列表综合,生成新列表的简化的for循环
 - lambda, map, filer, reduce (保留节目)
 - exec, eval(执行字符串python语句, 保留节目)
 - 正则表达式
 - Python画图
 
- Reference
 
一些练习题
- 给定FASTA格式的文件(test1.fa 和 test2.fa),写一个程序 
cat.py读入文件,并输出到屏幕 (2分) 
- open(file)
 - for .. in loop
 - print()
 - strip() function
 - 用到的知识点
 
给定FASTQ格式的文件(test1.fq), 写一个程序 cat.py 读入文件,并输出到屏幕 (2分)
- 同上
 - 用到的知识点
 
写程序 splitName.py, 读入test2.fa, 并取原始序列名字第一个空格前的名字为处理后的序列名字,输出到屏幕 (2分)
- split
 - 字符串的索引
 - 用到的知识点
 - 输出格式为:
 
>NM_001011874
gcggcggcgggcgagcgggcgctggagtaggagctg.......写程序 formatFasta.py, 读入test2.fa,把每条FASTA序列连成一行然后输出 (2分)
- join
 - strip
 - 用到的知识点
 - 输出格式为:
 
>NM_001011874
gcggcggcgggc......TCCGCTG......GCGTTCACC......CGGGGTCCGGAG写程序 formatFasta-2.py, 读入test2.fa,把每条FASTA序列分割成80个字母一行的序列 (2分)
- 字符串切片操作
 - range
 - 用到的知识点
 - 输出格式为
 
>NM_001011874
gcggcggcgc.(60个字母).TCCGCTGACG #(每行80个字母)
acgtgctacg.(60个字母).GCGTTCACCC
ACGTACGATG(最后一行可不足80个字母)写程序 sortFasta.py, 读入test2.fa, 并取原始序列名字第一个空格前的名字为处理后的序列名字,排序后输出 (2分)
- sort
 - dict
 - aDict[key] = []
 - aDict[key].append(value)
 - 用到的知识点
 
提取给定名字的序列 (2分)
- 用到的知识点
 - print >>fh, or fh.write()
 - 取模运算,4 % 2 == 0
 - 写程序 
grepFasta.py, 提取fasta.name中名字对应的test2.fa的序列,并输出到屏幕。 - 写程序 
grepFastq.py, 提取fastq.name中名字对应的test1.fq的序列,并输出到文件。 
写程序 screenResult.py, 筛选test.expr中foldChange大于2的基因并且padj小于0.05的基,可以输出整行或只输出基因名字。(4分)
- 逻辑与操作符 and
 - 文件中读取的内容都为字符串,需要用int转换为整数,float转换为浮点数
 - 用到的知识点
 
写程序 transferMultipleColumToMatrix.py 将文件(multipleColExpr.txt)中基因在多个组织中的表达数据转换为矩阵形式,并绘制热图。(6分)
- aDict[‘key’] = {}
 - aDict[‘key’][‘key2’] = value
 - if key not in aDict
 - aDict = {‘ENSG00000000003’: {“A-431”: 21.3, “A-549”, 32.5,…},”ENSG00000000003”:{},}
 - 用到的知识点
 - 输入格式(只需要前3列就可以)
 
Gene    Sample  Value   Unit    Abundance
ENSG00000000003 A-431   21.3    FPKM    Medium
ENSG00000000003 A-549   32.5    FPKM    Medium
ENSG00000000003 AN3-CA  38.2    FPKM    Medium
ENSG00000000003 BEWO    31.4    FPKM    Medium
ENSG00000000003 CACO-2  63.9    FPKM    High
ENSG00000000005 A-431   0.0     FPKM    Not detected
ENSG00000000005 A-549   0.0     FPKM    Not detected
ENSG00000000005 AN3-CA  0.0     FPKM    Not detected
ENSG00000000005 BEWO    0.0     FPKM    Not detected
ENSG00000000005 CACO-2  0.0     FPKM    Not detected- 输出格式
 
Name    A-431    A-549    AN3-CA    BEWO    CACO-2
ENSG00000000460    25.2    14.2    10.6    24.4    14.2
ENSG00000000938    0.0    0.0    0.0    0.0    0.0
ENSG00000001084    19.1    155.1    24.4    12.6    23.5
ENSG00000000457    2.8    3.4    3.8    5.8    2.9写程序 reverseComplementary.py计算序列 ACGTACGTACGTCACGTCAGCTAGAC的反向互补序列。(2分)
- reverse
 - list(seq)
 - 用到的知识点
 
写程序 collapsemiRNAreads.py转换smRNA-Seq的测序数据。(5分)
- 输入文件格式(mir.collapse, tab-分割的两列文件,第一列为序列,第二列为序列被测到的次数)
 
ID_REF        VALUE
  ACTGCCCTAAGTGCTCCTTCTGGC        2
  ATAAGGTGCATCTAGTGCAGATA        25
  TGAGGTAGTAGTTTGTGCTGTTT        100
  TCCTACGAGTTGCATGGATTC        4- 输出文件格式 (mir.collapse.fa, 名字的前3个字母为样品的特异标示,中间的数字表示第几条序列,是序列名字的唯一标示,第三部分是x加每个reads被测到的次数。三部分用下划线连起来作为fasta序列的名字。)
 
>ESB_1_x2
  ACTGCCCTAAGTGCTCCTTCTGGC
  >ESB_2_x25
  ATAAGGTGCATCTAGTGCAGATA
  >ESB_3_x100
  TGAGGTAGTAGTTTGTGCTGTTT
  >ESB_4_x4
  TCCTACGAGTTGCATGGATTC简化的短序列匹配程序 (map.py) 把short.fa中的序列比对到ref.fa, 输出短序列匹配到ref.fa文件中哪些序列的哪些位置。(10分)
- find
 - 用到的知识点
 - 输出格式 (输出格式为bed格式,第一列为匹配到的染色体,第二列和第三列为匹配到染色体序列的起始终止位置(位置标记以0为起始,代表第一个位置;终止位置不包含在内,第一个例子中所示序列的位置是(199,208](前闭后开,实际是chr1染色体第199-206的序列,0起始). 第4列为短序列自身的序列.)。
 - 附加要求:可以只匹配到给定的模板链,也可以考虑匹配到模板链的互补链。这时第5列可以为短序列的名字,第六列为链的信息,匹配到模板链为’+’,匹配到互补链为’-‘。注意匹配到互补链时起始位置也是从模板链的5’端算起的。
 
chr1    199    208    TGGCGTTCA
chr1    207    216    ACCCCGCTG
chr2    63    70    AAATTGC
chr3    0    7    AATAAAT每日书籍推荐 - 流畅的Python
《流畅的Python》作者卢西亚诺·拉马略(Luciano Ramalho) 是Thoughtworks 首席咨询师、Python 软件基金会成员、巴西知名 Python 语言学习社区 Python Brasil 联合创始人。拥有 25 年 Python 编程经验,他的《流畅的Python》是编程领域经典作品,影响近 8 万读者,基于Python 3.10,内容详尽,精心设计的代码示例有近 500 段!还有大量的图和表,简直对学习真的太友好了!。
具体看ChatGPT的评价:











