<?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; perl</title>
	<atom:link href="http://www.bio-info-trainee.com/category/%e8%ae%a1%e7%ae%97%e6%9c%ba%e5%9f%ba%e7%a1%80/perl/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>生信分析人员数据处理脚本实战</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>
		<item>
		<title>生信分析人员如何系统入门perl？</title>
		<link>http://www.bio-info-trainee.com/1667.html</link>
		<comments>http://www.bio-info-trainee.com/1667.html#comments</comments>
		<pubDate>Thu, 26 May 2016 15:06:05 +0000</pubDate>
		<dc:creator><![CDATA[ulwvfje]]></dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[学习]]></category>

		<guid isPermaLink="false">http://www.bio-info-trainee.com/?p=1667</guid>
		<description><![CDATA[perl语言在老一辈的生物信息学分析人员中非常流行，所以因为历史遗留原因大家肯定 &#8230; <a href="http://www.bio-info-trainee.com/1667.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<div>perl语言在老一辈的生物信息学分析人员中非常流行，所以因为历史遗留原因大家肯定会或多或少的接触perl，即使你再怎么推崇python或者GO。</div>
<div>perl是典型的脚本语言，短小精悍，非常容易上手，尤其适合处理文本，数据，以及系统管理。</div>
<div></div>
<p><span id="more-1667"></span></p>
<div><span style="color: #ff0000; font-size: large;">简单给几个资料吧：</span></div>
<div>两个半小时入门指导：<a href="https://qntm.org/files/perl/perl.html">https://qntm.org/files/perl/perl.html</a></div>
<div>21天学完：<a href="http://ft-sipil.unila.ac.id/dbooks/%28ebook%20pdf%29%20Teach%20Yourself%20Perl%20in%2021%20Days.pdf">http://ft-sipil.unila.ac.id/dbooks/(ebook%20pdf)%20Teach%20Yourself%20Perl%20in%2021%20Days.pdf</a></div>
<div>还有大小骆驼书，建议都看完，以囫囵吞枣的方式阅读，只看基础知识来入门，难点全部跳过。</div>
<div>官网：<a href="https://www.perl.org/">https://www.perl.org/</a></div>
<div>函数如何用，都可以在<a href="http://perldoc.perl.org/perl.html">http://perldoc.perl.org/perl.html</a> 查到</div>
<div>论坛：<a href="http://www.perlmonks.org/">http://www.perlmonks.org/</a></div>
<div></div>
<div>在看书的同时，你必须记住和熟练使用的知识点是下面这些：</div>
<div><span style="color: #ff0000; font-size: large;"> </span></div>
<div><span style="color: #ff0000; font-size: large;">首先要理解perl里面的三种变量表示方式:</span></div>
<div>$ 表示单个变量  用单双引号区别，q(),qq()</div>
<div>@ 表示多个变量组成的数组，qw()</div>
<div>% 表示关系型变量-hash</div>
<div>变量不严格区分类型，没有int/float/double/char这样的概念</div>
<div></div>
<p><span style="color: #ff0000; font-size: large;">以及对这些简单变量的操作函数</span></p>
<div># Numerical operators:  &lt;,  &gt;, &lt;=, &gt;=, ==, !=, &lt;=&gt;, +, *</div>
<div># String operators:    lt, gt, le, ge, eq, ne, cmp, ., x</div>
<div>数组操作(pop/push/shift/unshift/splice/map/grep/join/split/sort/reverse)</div>
<div>hash操作方式(keys,values,each,delete,exists)</div>
<div></div>
<div>变量内容交换，字符型转为数值型，字符串转为字符数组，字符串变量，heredoc，字符串分割，字符串截取，</div>
<div>随机数生成，取整，各种概率分布数，多维矩阵如何操作，进制转换</div>
<div>hash翻转，数组转hash</div>
<div></div>
<div></div>
<p><span style="color: #ff0000; font-size: large;">上下文环境</span></p>
<div>这个比较复杂： <a href="http://www.perlmonks.org/?node_id=738558">http://www.perlmonks.org/?node_id=738558</a></div>
<div>就是需要理解你写的程序是如何判断你的变量的，你以为的不一定是你以为的</div>
<div><span style="color: #ff0000; font-size: large;"> </span></div>
<div><span style="color: #ff0000; font-size: large;">正则表达式</span></div>
<div>这也是一个非常重要的一块内容，基础用法就是m和s，一个匹配，一个替换，比较有趣的就是$1,$2等等捕获变量。</div>
<div></div>
<div>(=~ s{^https?://}{}   =~ m{///})</div>
<div></div>
<p><span style="color: #ff0000; font-size: large;">内建变量</span></p>
<div>就是perl语言设计的时候定义了一大堆的全局变量($_  $, $0 $&gt; $&lt; $! $. @ARGV @F @_ @INC %ENV %SIG</div>
<div>外表上看起来都是一个$/@/%符号后面加上一大堆的奇奇怪怪的字符，表示一些特殊变量，这也是perl语言饱受诟病的原因。</div>
<div>但是有些非常重要，懂了它之后写程序会方便</div>
<div>下载一个表格，里面有近100个预定义变量需要学习的</div>
<div><span style="color: #ff0000; font-size: large;"> </span></div>
<div><span style="color: #ff0000; font-size: large;">控制语句(循环/条件/判断)</span></div>
<div>if ... elsif ... else ...</div>
<div>unless/while/next/last/for/foreach</div>
<div></div>
<p><span style="color: #ff0000; font-size: large;">读写文件，脚本实战！</span></p>
<div>while(&lt;&gt;){</div>
<div>#do something !</div>
<div>}</div>
<div>这是我最喜欢的一个程序模板，读取文件，根据需要处理文件，然后输出。</div>
<div>需要实现非常多的功能，然后就可以自己总结脚本技巧，也能完全掌握perl的各种语法。</div>
<div>在生物信息学领域，需要实现的功能有！</div>
<div></div>
<p><span style="color: #ff0000; font-size: large;">perl 单行命令</span></p>
<div>我个人特别喜欢这个知识点，我也专门下载过一本书来学习，把这个教程看完就基本上能全明白：<a href="http://www.catonmat.net/blog/perl-one-liners-explained-part-one/">http://www.catonmat.net/blog/perl-one-liners-explained-part-one/</a></div>
<div>学习单行命令的前提是掌握非常多的奇奇怪怪的perl自定义变量，和perl的基础语法，用熟练了之后就非常方便，很多生物信息学数据处理过程我现在基本不写脚本，都是直接写一行命令，完全代替了shell脚本里面的awk、sed/grep系列命令。</div>
<div>(-p -a -n -a -l -i -F -M)</div>
<div></div>
<div></div>
<p><span style="color: #ff0000; font-size: large;">预定义函数</span></p>
<div>perl 是一个非常精简的语言，自定义的函数非常少，连min max这样常见的函数都没有，如果你需要使用这样的功能，要么自己写一个函数，要么使用加强版的包，perl的包非常多。</div>
<div>下面列出一些，我常用的包</div>
<div>程序必备 use/die/warn/print/open/close/&lt;&gt;/</div>
<div>数学函数sin/cos/log/abs/rand/srand/sqrt</div>
<div>字符串函数 uc/lc/scaler/index/rindex/length/pos/substr/sprintf/chop/chomp/hex/int/oct/ord/chr/unpack/unencode</div>
<div>defined/undef</div>
<div></div>
<p><span style="color: #ff0000; font-size: large;">系统操作相关</span></p>
<div>perl语言是跨平台的，因为它的执行靠的是perl解释器，而perl的解释器可以安装在任何机器上面。所以可以用perl来代替很多系统管理工作。</div>
<div>系统命令调用</div>
<div>文件句柄操作(STDIN,STDOUT,STDERR,ARGV,DATA,)</div>
<div>系统文件管理(mkdir/chdir/opendir/closedir/readdir/telldir/rmdir/)</div>
<div></div>
<p><span style="color: #ff0000; font-size: large;">一些高级技巧</span></p>
<div>自定义函数 sub , 参数传递，数组传递，返回值</div>
<div>模块操作(模块安装，加载，模块路径，模块函数引用)</div>
<div>引用（变量的变量）</div>
<div></div>
<div>选择一个好的编辑器-编译器,editplus,notepad++,jEdit，编程习惯的养成。</div>
<div>搞清楚perl版本的问题，还有程序编码的问题，中文显示的问题</div>
<div>程序调试</div>
<div><span style="color: #ff0000; font-size: large;"> </span></div>
<div><span style="color: #ff0000; font-size: large;">perl常见模块学习</span></div>
<div>perl和LWP/HTML做网络爬虫必备，重点是DOM如何解析</div>
<div>perl和CGI编程，做网站的神器，重点是html基础知识</div>
<div>DBI相关数据库，用perl来操作mysql等，当然，重点是mysql知识</div>
<div>GD and GD::Graph 可以用来画图，但是基本上没有人用了，除了CIRCOS画圈圈图火起来了。</div>
<div>TK模块，可以编写GUI界面程序，但是也几乎没有人用了。</div>
<div>XML/pdf/excel/Json 相关的模块可以用来读取非文本格式数据，或者输出格式化报告。</div>
<div>socket通信相关，高手甚至可以写出一个QQ的模仿版本</div>
<div>最后不得不提的就是Bioperl了，虽然我从来没有用过，但是它的确对初学者非常有用，大多数人不提倡重复造轮子，但我个人觉得，对初学者来说，重复造轮子是一个非常好的学习方式。大家可以仿造bioperl里面的各个功能，用自己的脚本来实现！</div>
<div></div>
<p><span style="color: #ff0000; font-size: large;">如果你感觉学的差不多了，就可以下载一些复习资料，查漏补缺:</span></p>
<div>
<div><a href="http://michaelgoerz.net/refcards/perl_refcard.pdf">http://michaelgoerz.net/refcards/perl_refcard.pdf</a></div>
<div><a href="https://rc.hms.harvard.edu/training/perl/Perl%20Cheat%20Sheet.pdf">https://rc.hms.harvard.edu/training/perl/Perl%20Cheat%20Sheet.pdf</a></div>
<div><a href="https://www.cheatography.com/mishin/cheat-sheets/perl-reference-card/">https://www.cheatography.com/mishin/cheat-sheets/perl-reference-card/</a></div>
<div><a href="http://www.catonmat.net/download/perl.predefined.variables.pdf">http://www.catonmat.net/download/perl.predefined.variables.pdf</a></div>
<div><a href="http://www.erudil.com/preqr.pdf">http://www.erudil.com/preqr.pdf</a></div>
<div><a href="https://www.cs.tut.fi/~jkorpela/perl/regexp.html">https://www.cs.tut.fi/~jkorpela/perl/regexp.html</a></div>
<div><a href="https://support.sas.com/rnd/base/datastep/perl_regexp/regexp-tip-sheet.pdf">https://support.sas.com/rnd/base/datastep/perl_regexp/regexp-tip-sheet.pdf</a></div>
</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bio-info-trainee.com/1667.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>R包精讲第四篇：4种R包安装方式</title>
		<link>http://www.bio-info-trainee.com/1565.html</link>
		<comments>http://www.bio-info-trainee.com/1565.html#comments</comments>
		<pubDate>Tue, 12 Apr 2016 15:45:07 +0000</pubDate>
		<dc:creator><![CDATA[ulwvfje]]></dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[bioconductor]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[包]]></category>

		<guid isPermaLink="false">http://www.bio-info-trainee.com/?p=1565</guid>
		<description><![CDATA[请先看：R包精讲第一篇：如何查看你已经安装了和可以安装哪些R包？ 第一种方式，当 &#8230; <a href="http://www.bio-info-trainee.com/1565.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>请先看：<a title="详细阅读 R包精讲第一篇：如何查看你已经安装了和可以安装哪些R包？" href="http://www.bio-info-trainee.com/1537.html" rel="bookmark">R包精讲第一篇：如何查看你已经安装了和可以安装哪些R包？</a></p>
<p>第一种方式，当然是R自带的函数直接安装包了，这个是最简单的，而且不需要考虑各种包之间的依赖关系。</p>
<p>对普通的R包，直接install.packages()即可，一般下载不了都是包的名字打错了，或者是R的版本不够，如果下载了安装不了，一般是依赖包没弄好，或者你的电脑缺少一些库文件，如果实在是找不到或者下载慢，一般就用repos=来切换一些镜像。</p>
<table class="GEM3DMTCOFB ace_text-layer ace_line GEM3DMTCKT" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td align="left">
<blockquote>
<pre id="rstudio_console_output" class="GEM3DMTCFGB" tabindex="0"><span class="GEM3DMTCLGB ace_keyword">&gt; </span><span class="GEM3DMTCLFB ace_keyword">install.packages("ape")  ##直接输入包名字即可
</span><span class="GEM3DMTCPFB  ace_constant ace_language">Installing package into ‘C:/Users/jmzeng/Documents/R/win-library/3.1’
(as ‘lib’ is unspecified)  ##一般不指定lib，除非你明确知道你的lib是在哪里
</span><span class="GEM3DMTCPFB  ace_constant ace_language">trying URL '<span style="color: #ff0000;">http://mirror.bjtu.edu.cn/cran</span>/bin/windows/contrib/3.1/ape_3.4.zip'
</span><span class="GEM3DMTCPFB  ace_constant ace_language">Content type 'application/zip' length 1418322 bytes (1.4 Mb)
</span><span class="GEM3DMTCPFB  ace_constant ace_language">opened URL   ## 根据你选择的镜像，程序会自动拼接好下载链接url
</span><span class="GEM3DMTCPFB  ace_constant ace_language">downloaded 1.4 Mb

</span>package ‘ape’ successfully unpacked and MD5 sums checked  ##表明你已经安装好包啦

The downloaded binary packages are in  ##程序自动下载的原始文件一般放在临时目录，会自动删除
	C:\Users\jmzeng\AppData\Local\Temp\Rtmpy0OivY\downloaded_packages
</pre>
</blockquote>
</td>
</tr>
<tr>
<td align="left"></td>
</tr>
<tr>
<td align="left">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td rowspan="1" align="left" width="1" height="">
<div class="GEM3DMTCLGB ace_keyword">&gt;</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>对于bioconductor的包，我们一般是</p>
<blockquote><p>source("http://bioconductor.org/biocLite.R") ##安装BiocInstaller</p>
<p>#options(BioC_mirror=”<a href="http://mirrors.ustc.edu.cn/bioc/">http://mirrors.ustc.edu.cn/bioc/</a>“) 如果需要切换镜像<br />
biocLite("ggbio")</p>
<p>或者直接BiocInstaller::biocLite('ggbio') ## 前提是你已经安装好了BiocInstaller</p>
<p>某些时候你还需要卸载remove.packages("BiocInstaller") 然后安装新的</p></blockquote>
<p>第二种方式，是直接找到包的下载地址，需要进入包的主页</p>
<blockquote><p>packageurl &lt;- "<span style="text-decoration: underline; color: #ff00ff;">http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz</span>"<br />
packageurl &lt;- "http://cran.r-project.org/src/contrib/Archive/gridExtra/gridExtra_0.9.1.tar.gz"<br />
install.packages(packageurl, repos=NULL, type="source")<br />
#packageurl &lt;- "http://www.bioconductor.org/packages/2.11/bioc/src/contrib/ggbio_1.6.6.tar.gz"<br />
#packageurl &lt;- "http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_1.0.1.tar.gz"<br />
install.packages(packageurl, repos=NULL, type="source")</p></blockquote>
<p>这样安装的就不需要选择镜像了，也跨越了安装器的版本！</p>
<p>第三种是，先把包下载到本地，然后安装：</p>
<blockquote>
<pre><b>download.file</b>("<a href="http://bioconductor.org/packages/release/bioc/src/contrib/BiocInstaller_1.20.1.tar.gz">http://bioconductor.org/packages/release/bioc/src/contrib/BiocInstaller_1.20.1.tar.gz</a>","BiocInstaller_1.20.1.tar.gz")
##也可以选择用浏览器下载这个包
<b>install.packages</b>("BiocInstaller_1.20.1.tar.gz", repos = NULL)
## 如果你用的RStudio这样的IDE，那么直接用鼠标就可以操作了
或者用choose.files()来手动交互的选择你把下载的源码BiocInstaller_1.20.1.tar.gz放到了哪里。</pre>
</blockquote>
<p>这种形式大部分安装都无法成功，因为R包之间的依赖性很强！</p>
<p>第四种是：命令行版本安装</p>
<blockquote>
<pre>如果是linux版本，命令行从网上自动下载包如下：
sudo su - -c \
<span class="pl-s"><span class="pl-pds">"</span>R -e <span class="pl-cce">\"</span>install.packages('shiny', repos='https://cran.rstudio.com/')<span class="pl-cce">\"</span><span class="pl-pds">"
如果是linux，命令行安装本地包，在shell的终端
sudo R CMD INSTALL package.tar.gz
window或者mac平台一般不推荐命令行格式，可视化那么舒心，何必自讨苦吃</span></span></pre>
</blockquote>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bio-info-trainee.com/1565.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用perl把含有简并碱基的引物序列还原成多条序列-更正</title>
		<link>http://www.bio-info-trainee.com/1528.html</link>
		<comments>http://www.bio-info-trainee.com/1528.html#comments</comments>
		<pubDate>Mon, 11 Apr 2016 10:52:38 +0000</pubDate>
		<dc:creator><![CDATA[ulwvfje]]></dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[生信基础]]></category>
		<category><![CDATA[简并碱基]]></category>

		<guid isPermaLink="false">http://www.bio-info-trainee.com/?p=1528</guid>
		<description><![CDATA[感谢读者的指正，我以前写的一个程序是错的，从算法设计上就错了！ http://w &#8230; <a href="http://www.bio-info-trainee.com/1528.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>感谢读者的指正，我以前写的一个程序是错的，从算法设计上就错了！</p>
<p><a href="http://www.bio-info-trainee.com/926.html">http://www.bio-info-trainee.com/926.html</a></p>
<p>我从新设计了一个算法，经过再三检查，我可以确信它是对的，至于是否高效，就不敢保证了，也希望有更多热心的读者帮助我改正，或者跟我讨论，请直接联系我的邮箱jmzeng1314  at(防爬虫)  163.com</p>
<p><span id="more-1528"></span></p>
<p>代码如下：</p>
<div dir="ltr">
<blockquote>
<div>while(&lt;DATA&gt;){</div>
<div>chomp;</div>
<div>@F=split/:/;</div>
<div>$hash{$F[0]}=uc $F[1];</div>
<div>} ##这里记录简并碱基的对应关系</div>
<div>## %hash stored the tables;</div>
<div></div>
<div>sub primer2multiple{</div>
<div>$primer=$_[0];</div>
<div>$prod=1;</div>
<div>$primer_len=length $primer ;</div>
<div>foreach $i (0..$primer_len-1){</div>
<div>$char=substr($primer,$i,1);</div>
<div>#$prod*=length $hash{$char} if ($char !~/[ATCG]/) ;</div>
<div>if ($char !~/[ATCG]/) {</div>
<div>push @pos_list,$i;</div>
<div>push @char_list,$hash{$char};</div>
<div>##首先找出所有的不是ATCG的碱基位置以及它对应的碱基</div>
<div>## record all of the positions which are not ATCG;</div>
<div>}</div>
<div>}</div>
<div>@out_list=($primer);</div>
<div>##循环处理每个不是ATCG的碱基位置，让它们根据对应关系扩展</div>
<div>foreach my $i (0..scalar(@pos_list)-1){</div>
<div>@out_list=&amp;new_out_list(\@out_list,$pos_list[$i],$char_list[$i]);</div>
<div>} ##&amp;new_out_list 这个函数非常重要，会把数组不停的扩展，最终达到应该有的个数！</div>
<div>print join"\n",@out_list;</div>
<div>print "\n";</div>
<div>}</div>
<div></div>
<div>sub new_out_list{</div>
<div>my @array = @{$_[0]};</div>
<div>my $pos = $_[1];</div>
<div>my $char = $_[2];</div>
<div>my @new_array=();</div>
<div>foreach my $i (@array){</div>
<div>foreach my $j (0..length($char)-1){</div>
<div>substr($i,$pos,1,substr($char,$j,1));</div>
<div>push @new_array,$i;</div>
<div>}</div>
<div>}</div>
<div>return(@new_array);</div>
<div>}</div>
<div></div>
<div>primer2multiple('ATGCVCGCDCTNCCTGAB');</div>
<div></div>
<div>__DATA__</div>
<div>R:ag</div>
<div>Y:CT</div>
<div>M:AC</div>
<div>K:GT</div>
<div>S:gc</div>
<div>W:AT</div>
<div>H:atc</div>
<div>B:gtc</div>
<div>V:gac</div>
<div>D:GAT</div>
<div>N:ATgc</div>
</blockquote>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.bio-info-trainee.com/1528.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>perl程序技巧-检验系统环境或模块安装</title>
		<link>http://www.bio-info-trainee.com/1479.html</link>
		<comments>http://www.bio-info-trainee.com/1479.html#comments</comments>
		<pubDate>Tue, 15 Mar 2016 12:12:34 +0000</pubDate>
		<dc:creator><![CDATA[ulwvfje]]></dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[模块]]></category>
		<category><![CDATA[环境变量]]></category>

		<guid isPermaLink="false">http://www.bio-info-trainee.com/?p=1479</guid>
		<description><![CDATA[这个程序是我在VirusFinder里面发现的，大家可以自行搜索它！ 非常好用， &#8230; <a href="http://www.bio-info-trainee.com/1479.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>这个程序是我在VirusFinder里面发现的，大家可以自行搜索它！</p>
<p>非常好用，建议大家写程序都可以加上这个！</p>
<blockquote>
<div>print "\nChecking Java version...\n\n";</div>
<div></div>
<div>my $ret = `java -version 2&gt;&amp;1`;</div>
<div>print "$ret\n";</div>
<div></div>
<div>if (index($ret, '1.6') == -1) {</div>
<div>    printf "Warning: The tool Trinity of the Broad Institute may require Java 1.6.\n\n";</div>
<div>}</div>
<div></div>
<div></div>
<div>print "\nChecking SAMtools...\n\n";</div>
<div></div>
<div>$ret = `which samtools 2&gt;&amp;1`;</div>
<div>if (index($ret, 'no samtools') == -1) {</div>
<div>    printf "%-30s\tOK\n\n", 'SAMtools';</div>
<div>}else{</div>
<div>    printf "%-30s\tnot found\n\n", 'SAMtools';</div>
<div>}</div>
<div></div>
<div></div>
<div>my @required_modules = ("Bio::DB::Sam",</div>
<div>                        "Bio::DB::Sam::Constants",</div>
<div>                        "Bio::SeqIO",</div>
<div>                        "Bio::SearchIO",</div>
<div>                        "Carp",</div>
<div>                        "Config::General",</div>
<div>                        "Cwd",</div>
<div>                        "Data::Dumper",</div>
<div>                        "English",</div>
<div>                        "File::Basename",</div>
<div>                        "File::Copy",</div>
<div>                        "File::Path",</div>
<div>                        "File::Spec",</div>
<div>                        "File::Temp",</div>
<div>                        "FindBin",</div>
<div>                        "Getopt::Std",</div>
<div>                        "Getopt::Long",</div>
<div>                        "IO::Handle",</div>
<div>                        "List::MoreUtils",</div>
<div>                        "Pod::Usage",</div>
<div>                        "threads");</div>
<div></div>
<div>print "\nChecking CPAN modules required by VirusFinder...\n\n";</div>
<div>my $count = 0;</div>
<div>for my $module (@required_modules){</div>
<div></div>
<div>eval("use $module");</div>
<div>if ($@) {</div>
<div>printf "%-30s\tFailed\n", $module;</div>
<div>                $count++;</div>
<div>}</div>
<div>else {</div>
<div>printf "%-30s\tOK\n",     $module;</div>
<div>}</div>
<div>}</div>
<div></div>
<div>if ($count==1){</div>
<div>print "\n\nOne module may not be installed properly.\n\n";</div>
<div>}elsif ($count &gt; 1){</div>
<div>print "\n\n$count modules may not be installed properly.\n\n";</div>
<div>}else{</div>
<div>print "\n\nAll CPAN modules checked!\n\n";</div>
<div>}</div>
</blockquote>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bio-info-trainee.com/1479.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>perl模块终极解决方案-下</title>
		<link>http://www.bio-info-trainee.com/1476.html</link>
		<comments>http://www.bio-info-trainee.com/1476.html#comments</comments>
		<pubDate>Tue, 15 Mar 2016 12:08:44 +0000</pubDate>
		<dc:creator><![CDATA[ulwvfje]]></dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[模块]]></category>

		<guid isPermaLink="false">http://www.bio-info-trainee.com/?p=1476</guid>
		<description><![CDATA[其实可以手动下载local::lib, 这个perl模块，然后自己安装在指定目录 &#8230; <a href="http://www.bio-info-trainee.com/1476.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>其实可以手动下载<a href="http://search.cpan.org/perldoc?local::lib">local::lib</a>, 这个perl模块，然后自己安装在指定目录，也是能解决模块的问题！</p>
<p>下载之后解压，进入：</p>
<blockquote>
<pre><span style="color: #ff00ff;"> $ perl Makefile.PL --bootstrap=~/.perl  ##这里设置你想把模块放置的目录
 $ make test &amp;&amp; make install
 $ echo 'eval $(perl -I$HOME/.perl/lib/perl5 -Mlocal::lib=$HOME/.perl)' &gt;&gt; ~/.bashrc</span></pre>
</blockquote>
<p>等待几个小时即可！！！</p>
<p>添加好环境变量之后，就可以用</p>
<div>
<blockquote>
<pre class="">perl <span class="">-</span>MCPAN <span class="">-</span>Mlocal<span class="">::</span>lib <span class="">-</span>e <span class="">'CPAN::install(LWP)'</span></pre>
</blockquote>
<div class="gmail_quote">这样的模式下载模块了，所有的模块都会存储在<span style="color: #993366;">$HOME/.perl/lib/perl5</span> 里面！！！</div>
<div class="gmail_quote">如果是新写的perl程序，需要在开头加入<span style="color: #0000ff;"> <span class="">use</span> <span class="">local</span><span class="">::</span>lib<span class="">;   </span></span></div>
<div class="gmail_quote"><span class=""># sets up a local lib at ~/perl5才能使用该模块！  非常重要，非常重要，非常重要！！！<br />
</span></div>
</div>
<p>&nbsp;</p>
<p>其实你也可以直接打开<span style="color: #ff00ff;"> ~/.bashrc</span>，然后写入下面的内容</p>
<pre><span class="">PERL5LIB</span><span class="">=$</span><span class="">PERL5LIB</span><span class="">:/</span><span class="">PATH_WHERE_YOU_PUT_THE_PACKAGE</span><span class="">/</span><span class="">source</span><span class="">/</span><span class="">bin</span><span class="">/</span><span class="">perl_module</span><span class="">;</span> <span class="">export</span> <span class="">PERL5LIB</span></pre>
<pre><span class="">可以把perl模块安装在任何地方，然后通过这种方式去把模块加载到你的perl程序！</span></pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bio-info-trainee.com/1476.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>perl模块终极解决方案-上</title>
		<link>http://www.bio-info-trainee.com/1474.html</link>
		<comments>http://www.bio-info-trainee.com/1474.html#comments</comments>
		<pubDate>Tue, 15 Mar 2016 12:03:43 +0000</pubDate>
		<dc:creator><![CDATA[ulwvfje]]></dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[local]]></category>
		<category><![CDATA[模块]]></category>
		<category><![CDATA[非root]]></category>

		<guid isPermaLink="false">http://www.bio-info-trainee.com/?p=1474</guid>
		<description><![CDATA[不管别人怎么说，反正我是非常喜欢perl语言的！ 也会继续学习，以前写过不少pe &#8230; <a href="http://www.bio-info-trainee.com/1474.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>不管别人怎么说，反正我是非常喜欢perl语言的！</p>
<p>也会继续学习，以前写过不少perl模块的博客，发现有点乱，正好最近看到了关于local::lib这个模块。</p>
<p>居然是用来解决没有root权限的用户安装，perl模块问题的！</p>
<p>首先说一下，如果是root用户，模块其实没有问题，直接用cpan下载器，几乎能解决所有的模块下载安装问题！</p>
<p>但是如果是非root用户，那么就麻烦了，很难用自动的cpan下载器，这样只能下载模块源码，然后编译，但是编译有个问题，很多模块居然是依赖于其它模块的，你的不停地下载其它依赖模块，最后才能解决，特别麻烦</p>
<p>但是，只需要运行下面的代码：<code></code><br />
<code></code></p>
<blockquote>
<pre class=""><code><span class="">wget </span><span class="">-</span><span class="">O</span><span class="">-</span><span class=""> http</span><span class="">:/</span><span class="">/<a href="http://cpanmin.us">cpanmin.us</a> | perl - -l ~/</span><span class="">perl5 </span><span class="">App</span><span class="">::</span><span class="">cpanminus </span><span class="">local</span><span class="">::</span><span class="">lib
</span><span class="">eval</span> <span class="">`perl -I ~/perl5/lib/perl5 -Mlocal::lib`</span><span class="">
echo </span><span class="">'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`'</span> <span class="">&gt;&gt;</span> <span class="">~</span><span class="">/.profile
echo 'export MANPATH=$HOME/</span><span class="">perl5</span><span class="">/</span><span class="">man</span><span class="">:</span><span class="">$MANPATH</span><span class="">' &gt;&gt; ~/.profile</span></code></pre>
</blockquote>
<p>就能拥有一个私人的cpan下载器，<code><span class="">~/.profile可能需要更改为<span style="color: #ff00ff;">.bash_profile, .bashrc, etc</span>等等，取决于你的linux系统！<br />
</span></code></p>
<p>然后你直接运行<code><span class="">cpanm </span><span class="">Module</span><span class="">::</span><span class="">Name，就跟root用户一样的可以下载模块啦！<br />
</span></code></p>
<p>或者用下面的方式在shell里面安装模块，其中ext是模块的安装目录，可以修改</p>
<blockquote><p> perl -MTime::HiRes -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext Time::HiRes;<br />
perl -MFile::Path -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext File::Path;<br />
perl -MFile::Basename -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext File::Basename;<br />
perl -MFile::Copy -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext File::Copy;<br />
perl -MIO::Handle -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext IO::Handle;<br />
perl -MYAML::XS -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext YAML::XS;<br />
perl -MYAML -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext YAML;<br />
perl -MXML::Simple -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext XML::Simple;<br />
perl -MStorable -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext Storable;<br />
perl -MStatistics::Descriptive -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext Statistics::Descriptive;<br />
perl -MTie::IxHash -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext Tie::IxHash;<br />
perl -MAlgorithm::Combinatorics -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext Algorithm::Combinatorics;<br />
perl -MDevel::Size -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext Devel::Size;<br />
perl -MSort::Key::Radix -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext Sort::Key::Radix;<br />
perl -MSort::Key -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext Sort::Key;<br />
perl -MBit::Vector -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext Bit::Vector;<br />
perl -M"feature 'switch'" -e 1 &gt; /dev/null 2&gt;&amp;1 || cpanm -v --notest -l ext feature;</p></blockquote>
<p>下面是解释为什么这样可以解决问题！！！</p>
<p>&nbsp;</p>
<div>
<p>What follows is a brief explanation of what the commands above do.</p>
<p><code>wget -O- <a href="http://cpanmin.us">http://cpanmin.us</a></code> fetches the latest version of <code>cpanm</code> and prints it to <code>STDOUT</code> which is then piped to <code>perl - -l ~/perl5 App::cpanminus local::lib</code>. The first <code>-</code> tells <code>perl</code> to expect the program to come in on <code>STDIN</code>, this makes <code>perl</code> run the version of <code>cpanm</code> we just downloaded.<code>perl</code> passes the rest of the arguments to <code>cpanm</code>. The <code>-l ~/perl5</code> argument tells <code>cpanm</code> where to install Perl modules, and the other two arguments are two modules to install. <code>[App::cpanmins</code>]<a href="http://search.cpan.org/dist/App-cpanminus/lib/App/cpanminus.pm">1</a> is the package that installs <code>cpanm</code>. <a href="http://search.cpan.org/dist/local-lib/lib/local/lib.pm"><code>local::lib</code></a> is a helper module that manages the environment variables needed to run modules in local directory.</p>
<p>After those modules are installed we run</p>
<pre class=""><code><span class="">eval</span> <span class="">`perl -I ~/perl5/lib/perl5 -Mlocal::lib`</span></code></pre>
<p>to set the environment variables needed to use the local modules and then</p>
<pre class=""><code><span class="">echo </span><span class="">'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`'</span> <span class="">&gt;&gt;</span> <span class="">~/.</span><span class="">profile</span></code></pre>
<p>to ensure we will be able to use them the next time we log in.</p>
<pre class=""><code><span class="">echo </span><span class="">'export MANPATH=$HOME/perl5/man:$MANPATH'</span> <span class="">&gt;&gt;</span> <span class="">~/.</span><span class="">profile</span></code></pre>
<p>will hopefully cause man to find the man pages for your local modules.</p>
</div>
<div>
<p>这种类似的问题被问的特别多！</p>
<p>There's the way documented in <a href="http://faq.perl.org/perlfaq8.html#How_do_I_install_a_m">perlfaq8</a>, which is what <a href="http://search.cpan.org/perldoc/local%3a%3alib#The_bootstrapping_technique">local::lib</a> is doing for you.</p>
<p>It's also a frequently asked StackOverflow question:</p>
<ul>
<li><a href="http://stackoverflow.com/q/1366902/8817">Why does installing certain CPAN modules require root privilege?</a></li>
<li><a href="http://stackoverflow.com/q/102850/8817">How can I install CPAN modules locally without root access (DynaLoader.pm line 229 error)?</a></li>
<li><a href="http://stackoverflow.com/q/786544/8817">How do I tell CPAN.pm to install all modules in a specific directory?</a></li>
<li><a href="http://stackoverflow.com/q/540640/8817">How can I install a CPAN module into a local directory?</a></li>
<li><a href="http://stackoverflow.com/q/251705/8817">How can I use a new Perl module without install permissions?</a></li>
<li><a href="http://stackoverflow.com/q/2980297/8817">How can I use CPAN as a non-root user?</a></li>
<li><a href="http://stackoverflow.com/q/1541638/8817">How can I install local modules with the cpan tool?</a></li>
</ul>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bio-info-trainee.com/1474.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>画基因的外显子覆盖度图</title>
		<link>http://www.bio-info-trainee.com/1392.html</link>
		<comments>http://www.bio-info-trainee.com/1392.html#comments</comments>
		<pubDate>Sun, 31 Jan 2016 07:15:20 +0000</pubDate>
		<dc:creator><![CDATA[ulwvfje]]></dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[基因组学]]></category>
		<category><![CDATA[基因]]></category>
		<category><![CDATA[外显子]]></category>
		<category><![CDATA[覆盖度图]]></category>

		<guid isPermaLink="false">http://www.bio-info-trainee.com/?p=1392</guid>
		<description><![CDATA[一般情况下，我们得到了测序reads在基因组的比对情况文件bam格式的，里面的信 &#8230; <a href="http://www.bio-info-trainee.com/1392.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<div>一般情况下，我们得到了测序reads在基因组的比对情况文件bam格式的，里面的信息非常多，如果我想特定的查看某个基因的情况，那么我们可以选择IGV等可视化工具，但它并不是万能的，因为即使是一个基因，它也会有多个转录本，多个外显子。</div>
<div>所以，我们可以画它的外显子覆盖图，如下：横坐标是外显子的长度，纵坐标是测序深度，每一个小图都是一个外显子</div>
<div> <a href="http://www.bio-info-trainee.com/wp-content/uploads/2016/01/DMD.NM_000109.png"><img class="alignnone size-full wp-image-1394" src="http://www.bio-info-trainee.com/wp-content/uploads/2016/01/DMD.NM_000109.png" alt="DMD.NM_000109" width="1080" height="1080" /></a></div>
<div>根据这个图，我们就可以很明显的看出，DMD基因NM_000109转录本的1，10-17号外显子缺失，用IGV一个个的看这些外显子区域，是同样的结果！可能是芯片捕获不到，也可能是样本本身变异，造成的大片段缺失。但是这个图的信息就非常有用！</div>
<div>那么，我们该如何画这样的图呢？</div>
<div>首先，我们需要找到需要探究的基因的全部转录信息，及外显子信息！</div>
<div>在hg19_refGene.txt里面会有，在UCSC里面可以下载，新手可能会比较麻烦，实在不行你去annovar的目录也可以找到！</div>
<div><a href="http://www.bio-info-trainee.com/wp-content/uploads/2016/01/16.png"><img class="alignnone size-full wp-image-1395" src="http://www.bio-info-trainee.com/wp-content/uploads/2016/01/16.png" alt="1" width="878" height="370" /></a></div>
<div>那么，我们根据这个信息，就可以判断该基因的起始终止位点啦</div>
<div>然后用samtools的depth命令去找这个基因的全部片段的测序深度信息</div>
<div>最后再格式化成下面的三列数据</div>
<div>第一列是该外显子的坐标，从1到该外显子的成都</div>
<div>第二列是该外显子在该坐标的测序深度，通过samtools的depth命令得到</div>
<div>最后一列是该外显子的标记，从exon:79一直倒推到exon:1，因为该基因在染色体的负链，所以外显子顺序是反着的！</div>
<div>1 84 exon:79</div>
<div>2 84 exon:79</div>
<div>3 84 exon:79</div>
<div>4 85 exon:79</div>
<div>5 85 exon:79</div>
<div>6 86 exon:79</div>
<div>7 85 exon:79</div>
<div>8 87 exon:79</div>
<div>9 89 exon:79</div>
<div>10 91 exon:79</div>
<div>11 92 exon:79</div>
<div>12 95 exon:79</div>
<div>13 96 exon:79</div>
<div>14 96 exon:79</div>
<div>15 99 exon:79</div>
<div>16 99 exon:79</div>
<div>17 97 exon:79</div>
<div>最后根据这个txt文档，用R语言，很容易就画出上面那样的图片了！</div>
<div>这里面的信息量还是蛮大的！</div>
<div></div>
<div><a href="http://www.bio-info-trainee.com/wp-content/uploads/2016/01/APOB.NM_000384.png"><img class="alignnone  wp-image-1393" src="http://www.bio-info-trainee.com/wp-content/uploads/2016/01/APOB.NM_000384.png" alt="APOB.NM_000384" width="921" height="921" /></a></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bio-info-trainee.com/1392.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>perl的模块组织方式</title>
		<link>http://www.bio-info-trainee.com/1005.html</link>
		<comments>http://www.bio-info-trainee.com/1005.html#comments</comments>
		<pubDate>Thu, 24 Sep 2015 11:21:18 +0000</pubDate>
		<dc:creator><![CDATA[ulwvfje]]></dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[模块]]></category>

		<guid isPermaLink="false">http://www.bio-info-trainee.com/?p=1005</guid>
		<description><![CDATA[如何使用自己写的私人模块 模块通俗来讲，就是一堆函数的集合。 Personall &#8230; <a href="http://www.bio-info-trainee.com/1005.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>如何使用自己写的私人模块</p>
<div>模块通俗来讲，就是一堆函数的集合。</p>
<div>Personally I prefer to keep my modules (those that I write for myself or for systems I can control) in a certain directory, and also to place them in a subdirectory. As in:</p>
<pre><code>/www/modules/MyMods/Foo.pm
/www/modules/MyMods/Bar.pm</code></pre>
<p>And then where I use them:</p>
<pre><code>use lib qw(/www/modules);useMyMods::Foo; </code></pre>
<p>useMyMods::Bar;</p>
<div></div>
<div>
<p>As reported by "perldoc -f use":</p>
<blockquote><p>It is exactly equivalent to<br />
<code>BEGIN { require Module; import Module LIST; }</code><br />
except that Module must be a bareword.</p></blockquote>
<p>Putting that another way, "use" is equivalent to:</p>
<ul>
<li>running at compile time,</li>
<li>converting the package name to a file name,</li>
<li><code>require</code>-ing that file name, and</li>
<li><code>import</code>-ing that package.</li>
</ul>
<p>So, instead of calling use, you can call require and import inside a BEGIN block:</p>
<pre><code>BEGIN{require'../EPMS.pm';
  EPMS-&gt;import();}</code></pre>
<p>And of course, if your module don't actually do any symbol exporting or other initialization when you call import, you can leave that line out:</p>
<pre><code>BEGIN{require'../EPMS.pm';}</code></pre>
</div>
<div>比如我的一个模块如下，命名为<a href="http://my_stat.pm/">my_stat.pm</a>：</div>
</div>
</div>
<div>package my_stat;</div>
<div>sub mean{</div>
<div>my $sum=0;</div>
<div>$sum+=$_ foreach @_;</div>
<div>$sum/($#_+1);</div>
<div>}</div>
<div>#print &amp;mean(1..10),"\n";</div>
<div>sub stddev{</div>
<div>$avg=&amp;mean(@_);</div>
<div>#print "$avg\n";</div>
<div>my $sum=0;</div>
<div>$sum+=($_-$avg)**2 foreach @_;</div>
<div>sqrt($sum/($#_));</div>
<div>#It will be different if you use $#_+1;</div>
<div>#sqrt($sum/($#_+1));</div>
<div>}</div>
<div>#print &amp;stddev(1..10),"\n";</div>
<div>1;</div>
<div>里面有我定义好的两个函数 mean 和 stddev , 那么我就可以在我的其它perl程序里面直接引用这个模块，从而使用我的两个自定义函数。</div>
<div>use lib "./";  #取决于你把自定义模块<a href="http://my_stat.pm/">my_stat.pm</a>放在哪个目录</div>
<div>use my_stat;</div>
<div>print my_stat::stddev(1..10),"\n";</div>
]]></content:encoded>
			<wfw:commentRss>http://www.bio-info-trainee.com/1005.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>一个基因坐标定位到具体基因的程序的改进</title>
		<link>http://www.bio-info-trainee.com/1001.html</link>
		<comments>http://www.bio-info-trainee.com/1001.html#comments</comments>
		<pubDate>Fri, 18 Sep 2015 11:37:02 +0000</pubDate>
		<dc:creator><![CDATA[ulwvfje]]></dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[基因坐标]]></category>

		<guid isPermaLink="false">http://www.bio-info-trainee.com/?p=1001</guid>
		<description><![CDATA[这是为了回答以前的一个疑问：任意给定基因组的 chr:pos, 判断它在哪个基因 &#8230; <a href="http://www.bio-info-trainee.com/1001.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<h1><span lang="ZH-CN">这是为了回答以前的一个疑问：任意给定基因组的 chr:pos, 判断它在哪个基因上面？这个程序难吗？ </span></h1>
<p><span lang="ZH-CN">基因的chr,start,end都是已知的 </span></p>
<p><span lang="ZH-CN">学术一点讲述这个问题：已知CNV数据在染色体上的position如chr1:2075000-2930999，怎样批量获取其对应的Gene Symbol呢（批量）</span></p>
<p><span lang="ZH-CN">数据如下：</span></p>
<p><b><span lang="EN-US">head gene_position.hg19 //</span></b><b><span lang="ZH-CN">共</span></b><span lang="EN-US">21629</span><span lang="ZH-CN">行</span></p>
<p><span lang="EN-US">1 chr19 58858171 58874214 A1BG ENSG00000121410</span></p>
<p><span lang="EN-US">2 chr12 9220303 9268558 A2M ENSG00000175899</span></p>
<p><span lang="EN-US">3 chr12 9381128 9386803 A2MP1 ENSG00000256069</span></p>
<p><span lang="EN-US">9 chr8 18027970 18081198 NAT1 ENSG00000171428</span></p>
<p><span lang="EN-US">10 chr8 18248754 18258723 NAT2 ENSG00000156006</span></p>
<p><span lang="EN-US">12 chr14 95058394 95090390 <span class="Apple-converted-space"> </span>ENSG00000273259</span></p>
<p><span lang="EN-US">13 chr3 151531860 151546276 AADAC ENSG00000114771</span></p>
<p><span lang="EN-US">14 chr2 219128851 219134893 AAMP ENSG00000127837</span></p>
<p><span lang="EN-US">15 chr17 74449432 74466199 AANAT ENSG00000129673</span></p>
<p><span lang="EN-US">16 chr16 70286296 70323412 AARS ENSG00000090861</span></p>
<p><b><span lang="EN-US">head pfam.df.hg19.bed  <span class="Apple-converted-space"> </span>//</span></b><b><span lang="ZH-CN">共</span></b><span lang="EN-US">340960</span><span lang="ZH-CN">行</span></p>
<p><span lang="EN-US">chr1 <span class="Apple-converted-space"> </span>12190         <span class="Apple-converted-space"> </span>12689         <span class="Apple-converted-space"> </span>Helicase_C_2    <span class="Apple-converted-space"> </span>0       <span class="Apple-converted-space"> </span>+       <span class="Apple-converted-space"> </span>12190         <span class="Apple-converted-space"> </span>12689         <span class="Apple-converted-space"> </span>255,255,0</span></p>
<p><span lang="EN-US">chr1 <span class="Apple-converted-space"> </span>69157         <span class="Apple-converted-space"> </span>69220         <span class="Apple-converted-space"> </span>7tm_4       <span class="Apple-converted-space"> </span>0       <span class="Apple-converted-space"> </span>+       <span class="Apple-converted-space"> </span>69157         <span class="Apple-converted-space"> </span>69220         <span class="Apple-converted-space"> </span>255,255,0</span></p>
<p><span lang="EN-US">chr1 <span class="Apple-converted-space"> </span>69184         <span class="Apple-converted-space"> </span>69817         <span class="Apple-converted-space"> </span>7TM_GPCR_Srsx        <span class="Apple-converted-space"> </span>0       <span class="Apple-converted-space"> </span>+       <span class="Apple-converted-space"> </span>69184         <span class="Apple-converted-space"> </span>69817         <span class="Apple-converted-space"> </span>255,255,0</span></p>
<p><span lang="EN-US">chr1 <span class="Apple-converted-space"> </span>69190         <span class="Apple-converted-space"> </span>69931         <span class="Apple-converted-space"> </span>7tm_1       <span class="Apple-converted-space"> </span>0       <span class="Apple-converted-space"> </span>+       <span class="Apple-converted-space"> </span>69190         <span class="Apple-converted-space"> </span>69931         <span class="Apple-converted-space"> </span>255,255,0</span></p>
<p><span lang="EN-US">chr1 <span class="Apple-converted-space"> </span>69490         <span class="Apple-converted-space"> </span>69910         <span class="Apple-converted-space"> </span>7tm_4       <span class="Apple-converted-space"> </span>0       <span class="Apple-converted-space"> </span>+       <span class="Apple-converted-space"> </span>69490         <span class="Apple-converted-space"> </span>69910         <span class="Apple-converted-space"> </span>255,255,0</span></p>
<p><span lang="ZH-CN">现在需要对我们的</span><span lang="EN-US">pfam</span><span lang="ZH-CN">数据进行注释，根据每一行的</span><span lang="EN-US">chr</span><span lang="ZH-CN">和</span><span lang="EN-US">pos</span><span lang="ZH-CN">来看看是属于哪一个基因</span></p>
<p><span lang="ZH-CN">总共会有</span><span lang="EN-US">338879<span class="Apple-converted-space"> </span></span><span lang="ZH-CN">条</span><span lang="EN-US">pfam</span><span lang="ZH-CN">记录可以注释上基因。</span></p>
<p><span lang="ZH-CN">注释之后应该是</span><span lang="ZH-CN"><span class="Apple-converted-space"> </span></span><b><span lang="EN-US">head pfam.gene.df.hg19</span></b><span lang="EN-US"><span class="Apple-converted-space"> </span> </span><span lang="ZH-CN">这个样子</span></p>
<p><span lang="EN-US">CDK11B      <span class="Apple-converted-space"> </span>chr1 <span class="Apple-converted-space"> </span>1571423    <span class="Apple-converted-space"> </span>1573930    <span class="Apple-converted-space"> </span>Pkinase       <span class="Apple-converted-space"> </span>0       <span class="Apple-converted-space"> </span>-        <span class="Apple-converted-space"> </span>1571423    <span class="Apple-converted-space"> </span>1573930    <span class="Apple-converted-space"> </span>255,255,0</span></p>
<p><span lang="EN-US">CDK11B      <span class="Apple-converted-space"> </span>chr1 <span class="Apple-converted-space"> </span>1572048    <span class="Apple-converted-space"> </span>1573921    <span class="Apple-converted-space"> </span>Pkinase_Tyr         <span class="Apple-converted-space"> </span>0       <span class="Apple-converted-space"> </span>-        <span class="Apple-converted-space"> </span>1572048    <span class="Apple-converted-space"> </span>1573921    <span class="Apple-converted-space"> </span>255,255,0</span></p>
<p><span lang="EN-US">CDK11B      <span class="Apple-converted-space"> </span>chr1 <span class="Apple-converted-space"> </span>1572120    <span class="Apple-converted-space"> </span>1572823    <span class="Apple-converted-space"> </span>Kinase-like <span class="Apple-converted-space"> </span>0       <span class="Apple-converted-space"> </span>-        <span class="Apple-converted-space"> </span>1572120    <span class="Apple-converted-space"> </span>1572823    <span class="Apple-converted-space"> </span>255,255,0</span></p>
<p><span lang="EN-US">CDK11B      <span class="Apple-converted-space"> </span>chr1 <span class="Apple-converted-space"> </span>1572120    <span class="Apple-converted-space"> </span>1572820    <span class="Apple-converted-space"> </span>Kinase-like <span class="Apple-converted-space"> </span>0       <span class="Apple-converted-space"> </span>-        <span class="Apple-converted-space"> </span>1572120    <span class="Apple-converted-space"> </span>1572820    <span class="Apple-converted-space"> </span>255,255,0</span></p>
<p><span lang="EN-US">CDK11B      <span class="Apple-converted-space"> </span>chr1 <span class="Apple-converted-space"> </span>1572120    <span class="Apple-converted-space"> </span>1572817    <span class="Apple-converted-space"> </span>Kinase-like <span class="Apple-converted-space"> </span>0       <span class="Apple-converted-space"> </span>-        <span class="Apple-converted-space"> </span>1572120    <span class="Apple-converted-space"> </span>1572817    <span class="Apple-converted-space"> </span>255,255,0</span></p>
<p><span lang="EN-US">CDK11B      <span class="Apple-converted-space"> </span>chr1 <span class="Apple-converted-space"> </span>1573173    <span class="Apple-converted-space"> </span>1573918    <span class="Apple-converted-space"> </span>Kinase-like <span class="Apple-converted-space"> </span>0       <span class="Apple-converted-space"> </span>-        <span class="Apple-converted-space"> </span>1573173    <span class="Apple-converted-space"> </span>1573918    <span class="Apple-converted-space"> </span>255,255,0</span></p>
<p><span lang="EN-US">CDK11B      <span class="Apple-converted-space"> </span>chr1 <span class="Apple-converted-space"> </span>1575747    <span class="Apple-converted-space"> </span>1577317    <span class="Apple-converted-space"> </span>Daxx <span class="Apple-converted-space"> </span>0       <span class="Apple-converted-space"> </span>-        <span class="Apple-converted-space"> </span>1575747    <span class="Apple-converted-space"> </span>1577317    <span class="Apple-converted-space"> </span>255,255,0</span></p>
<p><span lang="EN-US">CDK11B      <span class="Apple-converted-space"> </span>chr1 <span class="Apple-converted-space"> </span>1576417    <span class="Apple-converted-space"> </span>1577347    <span class="Apple-converted-space"> </span>Nop14        <span class="Apple-converted-space"> </span>0       <span class="Apple-converted-space"> </span>-        <span class="Apple-converted-space"> </span>1576417    <span class="Apple-converted-space"> </span>1577347    <span class="Apple-converted-space"> </span>255,255,0</span></p>
<p><span lang="EN-US">CDK11B      <span class="Apple-converted-space"> </span>chr1 <span class="Apple-converted-space"> </span>1576423    <span class="Apple-converted-space"> </span>1577332    <span class="Apple-converted-space"> </span>Mitofilin     <span class="Apple-converted-space"> </span>0       <span class="Apple-converted-space"> </span>-        <span class="Apple-converted-space"> </span>1576423    <span class="Apple-converted-space"> </span>1577332    <span class="Apple-converted-space"> </span>255,255,0</span></p>
<p><span lang="EN-US">CDK11B      <span class="Apple-converted-space"> </span>chr1 <span class="Apple-converted-space"> </span>1576432    <span class="Apple-converted-space"> </span>1577317    <span class="Apple-converted-space"> </span>SAPS <span class="Apple-converted-space"> </span>0       <span class="Apple-converted-space"> </span>-        <span class="Apple-converted-space"> </span>1576432    <span class="Apple-converted-space"> </span>1577317    <span class="Apple-converted-space"> </span>255,255,0</span></p>
<p><span lang="ZH-CN">我的第一个程序用的是全基因位点扫描到</span><span lang="EN-US">hash</span><span lang="ZH-CN">的方法。这样需要扫描</span><span lang="EN-US">13,1390,4974</span><span lang="ZH-CN">个位点</span><span lang="EN-US">,</span><span lang="ZH-CN">多于三分之一的基因组，这样是非常浪费内存的，尤其是</span><span lang="EN-US">keys</span><span lang="ZH-CN">需要多个字节。</span></p>
<p><span lang="ZH-CN">我用了</span><span lang="EN-US">256G</span><span lang="ZH-CN">的服务器都没有运行完。</span></p>
<p><span lang="ZH-CN">后来我取巧了把我的</span><b><span lang="EN-US">gene_position.hg19</span></b><b><span lang="ZH-CN">文件用</span></b><b><span lang="EN-US">split</span></b><b><span lang="ZH-CN">命令分成了</span></b><b><span lang="EN-US">25</span></b><b><span lang="ZH-CN">个，然后循环</span></b><b><span lang="EN-US">25</span></b><b><span lang="ZH-CN">次对</span></b><b><span lang="EN-US">pfam.df.hg19.bed <span class="Apple-converted-space"> </span></span></b><b><span lang="ZH-CN">文件进行注释。</span></b></p>
<p>&nbsp;</p>
<p><span lang="ZH-CN">这样的确可以解决问了，而且只需要</span><span lang="EN-US">32G</span><span lang="ZH-CN">的内存的服务器即可，时间也很快，就十多分钟吧。</span></p>
<p><span lang="ZH-CN">但这只是取巧的方法，应该要从算法上面优化，首先我仅仅做一个改动，就是不再扫描全基因的位点，对每个基因，我以</span><span lang="EN-US">1K</span><span lang="ZH-CN">的窗口来取位点进行扫描。这样我判断</span><span lang="EN-US">pfam</span><span lang="ZH-CN">的坐标时候，也以</span><span lang="EN-US">1K</span><span lang="ZH-CN">为最小单位进行判断。</span></p>
<p><span lang="ZH-CN">这样只需要不到</span><span lang="EN-US">30s</span><span lang="ZH-CN">就可以出结果，总共注释了</span><span lang="EN-US">303474</span><span lang="ZH-CN">条</span><span lang="EN-US">pfam</span><span lang="ZH-CN">记录，还不是最终的</span><span lang="EN-US">338879</span><span lang="ZH-CN">，因为我这次只注释了基因的</span><span lang="EN-US">1000</span><span lang="ZH-CN">整数倍基因区间，这样如果</span><span lang="EN-US">pfam</span><span lang="ZH-CN">记录落在一个基因的起始终止点不到</span><span lang="EN-US">1K</span><span lang="ZH-CN">位置时就不会被注释。这时候需要对代码进行继续优化。</span></p>
<p><span lang="EN-US"> 脚步懒得上传了，在我的<a href="http://note.youdao.com/share/?id=58e66d138e9434284ffa61c53b65abdc&amp;type=note">有道云笔记里面。</a><br />
</span></p>
<p>http://note.youdao.com/share/?id=58e66d138e9434284ffa61c53b65abdc&#038;type=note</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bio-info-trainee.com/1001.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
