<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>生信菜鸟团 &#187; 编程</title>
	<atom:link href="http://www.bio-info-trainee.com/tag/%e7%bc%96%e7%a8%8b/feed" rel="self" type="application/rss+xml" />
	<link>http://www.bio-info-trainee.com</link>
	<description>欢迎去论坛biotrainee.com留言参与讨论，或者关注同名微信公众号biotrainee</description>
	<lastBuildDate>Sat, 28 Jun 2025 14:30:13 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.33</generator>
	<item>
		<title>转一个Python的安利文章咯！</title>
		<link>http://www.bio-info-trainee.com/1933.html</link>
		<comments>http://www.bio-info-trainee.com/1933.html#comments</comments>
		<pubDate>Fri, 14 Oct 2016 14:33:52 +0000</pubDate>
		<dc:creator><![CDATA[ulwvfje]]></dc:creator>
				<category><![CDATA[未分类]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://www.bio-info-trainee.com/?p=1933</guid>
		<description><![CDATA[来自于我们生信技能树论坛的超级版主bioinfo.dong的好文一篇，比较符合我 &#8230; <a href="http://www.bio-info-trainee.com/1933.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>来自于我们生信技能树论坛的超级版主<a class="xw1" href="http://www.biotrainee.com/space-uid-263.html" target="_blank">bioinfo.dong</a>的好文一篇，比较符合我博客的思想，就友情转发一下：</p>
<p>原文链接见：<a href="http://www.biotrainee.com/thread-379-1-1.html " target="_blank">http://www.biotrainee.com/thread-379-1-1.html </a></p>
<p>刚接触生信的同学大都有个困惑，知道生物信息可能需要编程，可是选择什么语言呢？有人会说perl啊，Python啊，R啊，java啊，等等等等。目的不一样，选择也不一样，你可以说语言都没有区别，达到目的就行，当然没问题。可是我们也要知道每种语言都有其独特优势，你可以用perl倒腾出矩阵运算，也可以画出想要的图，可是没有R专业；你也可以用R的正则表达式处理文本，可是perl或者Python做正则会更方便一些。这不是比较帖，只是从一个Python体验者的角度来说一下为什么选择Python。我目前的编程组合是Python+R+Shell Scripting。</p>
<p>这篇文章比较适合编程初学者，常年用perl的老司机们可以随便看一下，虽说perl和Python很像，有了一门的基础，学另一门就容易多了，可是真让一个用了几年perl的人彻底换Python还是比较困难的，主要还是习惯问题。最初做生信的人大都以perl作为常用脚本语言。我也是从perl开始的，当年为了申请出国读Bioinformatics，认真把小骆驼书看了一遍。来美国之后的第一个导师刚好是教perl的，我又跟着学了一次，看完导师推荐的《Unix and Perl to the Rescue》，算是巩固加第二次入门。之后一年基本都是用perl来处理数据。一个偶然的机会，同学说一起学学Python吧，听说很好用，于是就在网上找了个教程把题目刷了一遍。虽说入了门，可是每次项目赶时间的时候第一个想到的还是用perl来解决，所以入门很久也没啥长进，我亲爱的同学因为perl用的太好，虽然知道Python很好用，可始终没法狠心转过来，而我因为本身perl学得也只是半斤八两，纠结了一段时间也就彻底放弃perl了。</p>
<p>先说用了很长时间perl再用Python觉得不习惯的点。</p>
<blockquote><p>（1）首先是动物园的书，《learning perl》真是入门的典范。再看《Learning Python》，几千页，那么厚，我到现在也没法认真看下去。<br />
（2）另外perl语句比较简洁，几个符号就可以讲清楚的，Python可能需要几行，比如按行读取，perl只要while(&lt;&gt;)就可以，而最初学Python的时候，光这个问题就困扰了很久。再比如perl正则匹配的$1, Python是match.group(1)。perl的简洁伴随的缺点是可读性较差，自己的代码写完了都不想再看，更不要说别人写的。<br />
（3）perl的正则表达式是真的非常厉害，我已经不记得是怎么厉害的了，就只记得Python的re module刚开始接触不太好用，不过现在已经感觉不出区别了。<br />
（4）通常一个Python脚本需要很多modules，不熟悉之前会觉得很痛苦，perl就比较少用到，我总共也没用几次，一方面说明我的perl确实学得不好，另一方面可能也真是不太好用，看到就觉得麻烦。但Python的modules一旦熟悉了会大大提高工作效率。</p>
<p>重点说一下Python的优点。Python作为编程语言真正的优势比如面向对象编程（OOP），可移植/扩展/嵌入，强大的爬虫功能，APP开发，web开发等都不在讨论范围之内，只从最实用的角度做一下说明：<br />
（1）简单，适合作为入门语言。很多时候觉得读Python的代码像是在读简单的英文，或者觉得pseudocode稍微一改就可以在Python里run了。Python还规范了很好的写作格式，该缩进的必须缩进，这样更增强了可读性。同时提高了代码重复利用的可能（很多时候perl代码写完就不想读了，三个月不用再回来已经看不太懂了，Python的就可以留着慢慢用。。。）<br />
（2）Python社区活跃。有问题可以很容易搜索到解决方案。我perl的老师现在也转教Python了，问他为什么，他说perl的community不活跃，用Python是一种趋势<br />
（3）作为开源语言，Python有很多非常好用的包，可以最大程度让我们避免把时间浪费在重复造轮子上。刚接触Python的时候我就觉得这简直是perl和R的整合，之前提过Python的scipy，numpy，pandas，matlibplot等等packages使其同样拥有了很强大的统计画图功能，我曾一度弃用R，用Python做所有的数据处理，数据分析和画图。不过现在又将这些工作交回了R，实验室本身是做统计的，用R显得入流一点：-）<br />
（4）Python的jupyter notebook！！！这个是要强力推荐的！！！以前叫ipython notebook。用过R的都知道R Studio。jupyter notebook就是Python的Studio。以前写perl或者Python是不是这样的流程：写好了，存成.pl或.py格式，在shell里python xxx.py或者perl xxx.pl。运行完发现不好，有bug，打开文件找找bug在哪，再运行，还不行，唉，反反复复，好累。有了jupyter notebook你就可以边写边跑边改程序。有任何不确定的地方，都可以在notebook里直接测试，有任何bug都可以在notebook里直接改。简直方便到爆。现在用Anaconda安装jupyter还附赠很多包，方便又实惠。<br />
（5）学好Python可以转行！！！跳出生物坑，奔向美好的互联网坑。前面提到的爬虫，APP开发，web编程都是很实用的技能。许多互联网公司也会专门招Python程序员，比如Google，比如Youtube，比如Dropbox。。。</p></blockquote>
<p>我本专业是Bioinformatics，需要上一些计算机和统计的研究生课程，还记得算法课上老师第一节课就问，java和C++都会吧，如果不会的话Python总会吧，都不会的话这门课的作业写不了。就因为觉得自己还算会一点Python，把一次学习java的好机会浪费掉了</p>
<p>暂时就想到这么多。说的未必对。都是自己的体会吧。希望对初学者有用～</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bio-info-trainee.com/1933.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>生信分析人员数据处理脚本实战</title>
		<link>http://www.bio-info-trainee.com/1670.html</link>
		<comments>http://www.bio-info-trainee.com/1670.html#comments</comments>
		<pubDate>Wed, 01 Jun 2016 01:06:12 +0000</pubDate>
		<dc:creator><![CDATA[ulwvfje]]></dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[脚本]]></category>
		<category><![CDATA[自学]]></category>

		<guid isPermaLink="false">http://www.bio-info-trainee.com/?p=1670</guid>
		<description><![CDATA[我前面写到了生信分析人员如何入门linux和perl，后面还会写R和python &#8230; <a href="http://www.bio-info-trainee.com/1670.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>我前面写到了生信分析人员如何入门linux和perl，后面还会写R和python的总结，但是在这中间我想插入一个脚本实战指南。其实在我前两篇日志里面也重点提到了学习编程语言最重要的就是实战了，也点出了几个关键词。在实际生物信息学数据处理中应用perl和linux，可以借鉴<strong>EMBOSS</strong>软件套件，<strong>fastx-toolkit</strong>等基础软件，实现并且模仿该软件的功能。尤其是<strong>SMS2/exonerate/</strong>里面的一些常见功能,还有<strong>DNA2.0 Bioinformatics Toolbox</strong>的一些工具。如果你这些名词不懂，请赶快谷歌！！！ 它们做了什么，输入文件是什么，输出文件是什么，你都可以用脚本实现！</p>
<p><span id="more-1670"></span></p>
<p>你在实现这些功能的时候就必然会融会贯通变量，控制语句，操作符，文件读写等基本编程功能，还会熟悉生物信息学常见数据格式，数据背后的生物学意义。用什么语言都是一样的，千万不要落入语言之争的下乘，也不要纠结于细节。学习是长期过程，尤其是编程这种事情就跟以前的木匠瓦匠一样，是人生技能，跟游戏不一样，不是一时半会就通过了。</p>
<p>如果你英文还不错，推荐看英文的资料，比如下面的<strong>DNA2.0 Bioinformatics Toolbox</strong>，就可以浏览该网站做了什么，然后自己把同样的文件，对该文件也进行类似的处理。</p>
<p><a href="http://www.bio-info-trainee.com/wp-content/uploads/2016/06/DNA2.0-Bioinformatics-Toolbox.png"><img class="alignnone size-full wp-image-1671" src="http://www.bio-info-trainee.com/wp-content/uploads/2016/06/DNA2.0-Bioinformatics-Toolbox.png" alt="DNA2.0 Bioinformatics Toolbox" width="817" height="630" /></a></p>
<p>如果你还是比较熟悉中文，在这里推荐CJ大神总结的一些实际需求，下面都是一些随用随写的脚本，大神都是一句话就搞定了，但是对新手来说，请按部就班的练习！</p>
<blockquote>
<div>-1.查看fastq文件读段平均读长、最大读长、最短读长<br />
0.perl命令行粗暴多文件并行处理（每个线程处理一个文件）<br />
1.从fasta文件中提取特定的某个序列(记录)<br />
2.从fasta文件中批量提取序列(记录)<br />
3.Fastq格式转换为fasta格式<br />
4.常规fasta文件去格式为一行id一行seq<br />
5.快速批量提取读段文件的指定序列 (也可用于去格式的fasta文件)<br />
6.读段个数统计<br />
7.fastq质量值格式转换---用于将phred+64数据转为phred+33数据<br />
8.fastq 5'端trimming<br />
9.去除低质量值碱基数量高于N个的reads--用于phred+33数据<br />
10.去除读段序列含未知碱基N超过一定比例的读段<br />
11. 切除读段两端质量值低于给定阈值的部分并丢弃长度低于给定值的记录 新增双端版本 20140831<br />
12.去除低质量值碱基(Q&lt;给定值)所在比例高于(P大于给定值)的读段---用于phred+33数据<br />
13.DNA序列转mRNA序列<br />
14.perl脚本windows和linux间切换<br />
15.window下打印前10行 或者 打印后10行<br />
16.生成批处理用的无后缀file_list<br />
17.fastq中提取特征读段序列<br />
18.fasta格式CDS转为aa（必须有终止密码子）<br />
19.window下面模拟cut命令-提取文本第二列<br />
20.window下合并多个fa文件<br />
21.window下提取匹配到某一模体的fasta序列<br />
22.提取人类基因组注释文件rRNA注释<br />
23.对sort | uniq -c | 的结果频次由高到低排序，有大用<br />
24.fasta格式的DNA序列反向互补<br />
25.一行id一行序列的fa文件格式化为一行id多行序列<br />
26.按fastq文件标签名对读段顺序进行排序---待优化版<br />
27. 替换fq或fa文件记录的id为指定形式<br />
28.提供一个序列名列表逐一替换fasta记录的id</div>
<div>29.根据NCBI gene id 即gi号获取GeneBank上的序列<br />
30.根据蛋白gene_id或accession获取其Genebank上的核苷酸序列<br />
31.比较字符串中两个单字符的频次(比如投票0,1或方向F,R)<br />
32.有同学想知道比对上的读段在genome上正反链的分布情况<br />
33.去除全读段所有碱基质量值均低于某个阈值（如20）的读段(支持单端和双端数据)<br />
34.借用pileup文件直接统计测序数据在各染色体上的分布<br />
35.查看sam中uniq mapped比率<br />
36.查看sam中编辑距离分布<br />
37.统计各行平均值或各列平均值<br />
38.将fa文件(尤其基因组文件)分成每个记录一个文件(要求一行id一行seq,见25)<br />
39.批量重命名<br />
40.win下批量去除文件夹内所有文件中的数字<br />
41.统计SAM文件某一标签(BWA结果)<br />
42.提取长度大于1000bp的fa记录<br />
43.批量提取匹配行（正则匹配，强大） ---稍修改即可用于各类模式匹配批量提取，非常强大<br />
44. fasta中有相同id，增加后缀方便blast建库<br />
45. 多个列表文件，比如gene_ids，取样品特异gene_id<br />
46. 直接统计一个序列的GC含量<br />
47. 直接连接几个序列并将小写转换成大写<br />
48. 序列贪吃蛇<br />
49. 随机提取一定比例的fasta 记录或者fastq记录<br />
50. 单行记录随机分组<br />
51. 按照fasta长度排序fasta文件，修改后也可以用于具有某类特征标记的记录排序 (用于大文件，小文件请直接用hash)<br />
52. 双标签区段提取 (使用范围操作符..)<br />
53. 批量从uniprot上下载序列<br />
54. 准备trimmomatic所需的adapter.fa文件<br />
55. 提取fasta文件特定记录的特定区段<br />
56. 获取GO term Level 2的信息<br />
57. 单标签语句块读取 --（方便解析任何行组织文本-fasta fastq blast...）<br />
58. 核酸序列互补配对的子函数<br />
59. 分隔fa文件 fq文件 genebank文件 为数据小文件<br />
60.  序列格式化成每行等长并打印的子函数<br />
61. 从公司返还的注释结果中提取query2gi2GO.table -- for blast3go</div>
<div>62. blast2go anno文件转换成blast3go输入文件</div>
</blockquote>
<div>
<blockquote><p>63. 提取任意组装结果最长转录本(so-called Unigenes)或者CDS预测结果中最长序列64. 表格类数据，以某一列为keys组成的Group中仅保留其对应某属性（另一列）中值最大的一类 65. 小文件行随机化 66.  打印匹配行及其前'指定数目'行67.  打印匹配行及其后'指定数目'行 68.  -n的多个文件区别对待 69. 按照列名提取文件多列 70. 批量提取多个序列多个区段 71. 输出fasta文件每个序列对应的长度 ID\tLength\n72. jar发布前以来外源lib中的jar瘦身73. 依据step长度输出字符串所有后kmer子串74. 基于SAM文件统计ref的每个序列的uniq counts并输出reads的uniq mapped rate统计信息（用于表达谱差异分析 75. 汇总所有counts table并进行无表达补零操作（用于表达谱差异分析76. 保留fastq文件指定长度的读段最优子串77. 输出fasta文件每个记录的A T G C 字数统计78. 合并配对的读段文件fastq 正反读段交错 79. 统计SAM文件 CIGAR的命令 80. fasta文件去除ID行完全重复的记录 81. 合并所有文件的指定列 82. 根据id文件提取第二个文件中多个id匹配行83. 根据某一列的不同值将一个文件分割为多个文件84. 保留高表达或者去除低表达(WGCNA) 85. 表格类数据依据第一列，加和其他所有列，去冗余 86. ghostz比对到nr的表格提取query2gi.table</p>
<div>87. fastqReader<br />
88. Linux下依据 SRA run number下载SRA数据<br />
89. 快速批量统计fq.gz文件行数<br />
90. 格式化mapman结果（mercator）<br />
91. 基因表达量表格做行标准化<br />
92. 基于ID列表提取表格（考虑待提取的表格中有单ID对应多行记录）<br />
93. 文件批量重命名（提供一个重命名列表）<br />
94. perl批量添加fasta文件前缀 （用于多个样本分开组装后合并并用于去冗余等操作）<br />
95. 对表达量表格或者counts表格 依据平均值进行排序<br />
96. 双联表计算卡方值<br />
97. 整理bowtie的比对结果<br />
98. 基于给定列名顺序调整表格列顺序<br />
99.  整理GeneBank文件 （分离地点）<br />
100. 双列文件 整理 为 0-1 交集矩阵<br />
101. 整理bowtie2的比对结果<br />
102. 整理fastqc结果，提取所有样本的读段数<br />
103. 整理STAR比对结果</div>
</blockquote>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.bio-info-trainee.com/1670.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
