开源生信 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 VALUEACTGCCCTAAGTGCTCCTTCTGGC 2ATAAGGTGCATCTAGTGCAGATA 25TGAGGTAGTAGTTTGTGCTGTTT 100TCCTACGAGTTGCATGGATTC 4
输出文件格式 (mir.collapse.fa, 名字的前3个字母为样品的特异标示,中间的数字表示第几条序列,是序列名字的唯一标示,第三部分是x加每个reads被测到的次数。三部分用下划线连起来作为fasta序列的名字。)
>ESB_1_x2ACTGCCCTAAGTGCTCCTTCTGGC>ESB_2_x25ATAAGGTGCATCTAGTGCAGATA>ESB_3_x100TGAGGTAGTAGTTTGTGCTGTTT>ESB_4_x4TCCTACGAGTTGCATGGATTC
简化的短序列匹配程序 (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的评价:
往期精品(点击图片直达文字对应教程)
机器学习
后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集