perl
文章平均质量分 62
morningCV
喜欢电脑技术,喜欢结交朋友
展开
-
perl 在window下输出结果到文件,以及>,和>>的区别
上一个博客中我们统计出来了碱基的数量,现在我们来吧他们输出到一个特定的文件中:#下面的程序是用来计算一段DNA序列中ATGC的数量的#首先定义四种碱基的数量为0$count_A=0;$count_T=0;$count_C=0;$count_G=0;#首先要先把序列进行合并成一行#先确定所要处理的文件的路径及文件名(在windows系统下面要按照这样的例子写#f:\\pe原创 2012-09-25 23:00:13 · 3613 阅读 · 0 评论 -
猜数字游戏:设计裸块,redo,和字符串的判断
下面是正确的程序:$secretnumber=int(1 + rand 100);print "$secretnumber\n";{#一个裸块print "Please guess a number from one to hushand!\n";chomp($gussnumber=);if ($gussnumber=~/quit|exit|\A\s*\z/i)#必须要放在前面,原创 2012-09-18 14:31:00 · 1021 阅读 · 1 评论 -
perl中chomp的使用
在输入的过程中主义使用chomp才能够得到正确的结果如下程序:print "Please input an string and a number by order!\n";$the_string=<>;$the_numb=<>;print "The result is \n";print "$the_string"x"$the_numb";结果如下:The res原创 2012-09-12 09:06:01 · 2558 阅读 · 0 评论 -
perl中子程序的运用,以及在子程序中变量进行私有(my)声明的重要性
我们都知道用my可以来定义私有变量,这个可以在很多情况下防止错误的发生,下面我们通过一个例子来看一看。下面是一个转换程序,也就是简单的把DNA序列中的A转变成T,第一种情况没有使用私有变量。如下:#下面是一段DNA序列$DNA=ATTATATAT;#这里是我们的序列$result=A_to_T($DNA);print "I changed all $DNA A to T, and原创 2012-09-26 22:25:08 · 1442 阅读 · 0 评论 -
perl中子程序中参数的两种引用(传递)方式:pass by value and pass by Reference(传入引用)
这里主要讨论的是当你要传递的参数不是仅仅一个的时候,也就是两个以上,并且他们数据的类型还不一致的时候,我们要遇到的问题:下面是一个例子:use strict; #这里是两个数组my @i =('1','2','3');my @j =('a','b','c');#在进行处理之前,我们把他们先打印出来,看一看他们的样子print "In main program bef原创 2012-09-27 20:20:42 · 3559 阅读 · 0 评论 -
perl中push用法,子程序返回值的反思
今天晚上用了半个多小时写了一个简单的程序,输出一串数字中比平均值大的数,其中有两个问题值得注意:sub above_average{ $number=@_; foreach $how(@_) { $total=$total+$how; } $the_average=$total/$number; foreach (@_) { if ($_>$the_average)原创 2012-09-12 22:14:17 · 3533 阅读 · 0 评论 -
perl输入,排序,输出,一行代码解决所有的问题
今天在learning perl的第三章的一个练习题,只用一行代码就解决了所有的问题: 基本的方法:print "This program will sort the string as ASCII.\n";chomp(@strings=);@strings=sort @strings;print "@strings\n.";上面的后面三行代码解决的是输入,然后排序,最后将排序原创 2012-09-12 19:54:21 · 1539 阅读 · 1 评论 -
perl的格式化输出,顺便再提一下chomp的重要性
perl格式化输出的一例,learning perl中的一道习题以下为代码:print "please input some lines,then press Ctrl+Z. \n";chomp(@s=);print "1234567890"x 3 ."\n";#做为输出结果的一个标尺foreach $s(@s){printf "%20s\n",$s;#输出的格式为右对齐,所原创 2012-09-13 22:11:33 · 1357 阅读 · 0 评论 -
建立哈希,访问哈希
%friend=('fred'=>flintstone,'barney'=>rubble,'wilma'=>flintstone,);#构建哈希print "Please input second name,and you will get the family name\n";chomp($second_name=<>);#又一次忘记写chomp了$family_name=$friend{原创 2012-09-15 14:40:21 · 869 阅读 · 0 评论 -
哈希因赋值而诞生,单词个数的统计
程序如下print "Please input the name\n";chomp(@words=);foreach $word(@words){ $count{$word} +=1;#哈希因赋值而诞生}foreach $word(keys %count)#在这里如果写成foreach $word(sort keys %count),那么就可以对输出的信息进行排序{ pri原创 2012-09-16 10:10:14 · 1059 阅读 · 0 评论 -
perl关于qw以空格为分隔符的问题以及若干替代方案+学会变通+split函数的使用
我们在创建数组的时候,可以使用到qw,这是一个非常方便的简写,省去了我们书写大量引号的麻烦。但是有这样一个问题。如果们要创建有20个人名组成的数组,并且每个人的名字是这种形式的"Join smith" "Harry Potter"也就是每一个名字既包含姓也包含名。这样的话,我们的qw就不能起作用了。因为qw是用空格作为分隔符。我们只能想一些替代的方案来解决。方案一:用最原始的方案,也就原创 2012-10-08 22:00:54 · 2144 阅读 · 0 评论 -
window下perl模块的安装(转载) ,PPM
perl ppm使用可以直接键入cpan命令进行模块安装前面我们介绍了如何在Windows下面安装ActivePerl,ActivePerl有一个好处就是使用了图形化的模块管理界面,确实使得安装新的模块异常的简单,这里我就介绍一下如何使用PPM(Perl Package Manager)安装模块。打开PPM,我们看到的界面是这样的:我们看到第二行是工具栏,从左到右,第一个是查看仓库里面转载 2012-09-18 14:34:13 · 4376 阅读 · 1 评论 -
perl高级排序学习,<=>操作符,飞船操作符
高级排序的关键在于你要指定排序的方式,利用的操作符是spaceship operator():下面是按照你的要求进行的排序:@number=qw/5 10 15 3 2 4 8 6 /;my @descending =sort {$a$b} @number;#这里$a=5,$b=10,因为$a在前,perl得到的结果是小数在前,也就是升序排列print "@descending\n";原创 2012-09-19 09:43:23 · 2001 阅读 · 0 评论 -
利用perl对比两个文件,并对数据进行筛选,涉及到哈希的应用和perl编程风格的改变
my %scyjm;open (CONTACT,"f:\\perl\\f.txt")||die("can not open the file!"); while (){ next if /^#/;#if($_=~/^#/的简写 chomp; my @information =split;# my @information=split/\s+/,$_;的简写 next if(($inf原创 2012-10-12 19:35:17 · 2494 阅读 · 0 评论 -
perl 中一个随机编故事的程序(rand随机函数的应用举例)+好的程序本身就是注释
use strict;use warnings;#定义变量my $count;my $input;my $number;my $sentence;my $story;#定义四个数组#定义了人物数组my @nouns=( 'Dad', 'TV', 'Mom', 'Groucho', 'Rebecca', 'Harpo', 'Robin Hood', 'Joe原创 2012-10-08 19:54:30 · 2054 阅读 · 0 评论 -
perl从文件中读取数据,然后输出,附一个蛋白质序列的读取
window下读取某个文件,他的格式是:open (filehand,"路径e.g:d:\\data.txt");然后将打开的内容赋值给一个变量:e.g:$protein=;下面是一个读取蛋白质序列的程序:open (PROTEINFILE,"f:\\perl\\data.txt")||die("can not open the file!");$pro原创 2012-09-22 11:07:24 · 2622 阅读 · 0 评论 -
perl的srand()函数使用,time的各个函数的使用
srand()提供供rand()使用的随机数种子,rand()产生随机数生成器。、如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand()。使用同种子相同的数调用srand()会导致相同的随机数序列被生成。举例如下:srand(26);$number1=rand(100);print "$number1\n";sran原创 2012-10-15 19:19:20 · 3513 阅读 · 0 评论 -
perl碱基计数的三种不同的方法,for循环+while循环+tr///
第一种方式,我们运用的for循环,然后用了if......else.......结构for ($position=0;$position<length $DNA;++$position){ $base=substr($DNA,$position,1); if ($base eq 'A') { $count_A=$count_A+1; } elsif ($base eq 'T原创 2012-09-26 14:28:31 · 5756 阅读 · 0 评论 -
perl,读取所需文件的路径,然后打开相应的文件,并对文件中的DNA序列进行计数,substr函数对长字符串的片段化处理功能
以下是DNA序列,存储在window下F:\perl\data.txt里面:AAAAAAAAAAAAAAGGGGGGGTTTTCCCCCCCC CCCCCGTCGTAGTAAAGTATGCAGTAGCVG CCCCCCCCCCGGGGGGGGAAAAAAAAAAAAAAATTTTTTAT AAACG 下面是程序:#下面的程序是用来计算一段DNA序列中ATGC的原创 2012-09-25 09:05:09 · 3207 阅读 · 2 评论 -
perl应用:生物突变的随机模拟程序
use strict;use warnings; #随便找一个比较好识别的序列my $DNA="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n";my $i;my $mutant;srand(time|$$);$mutant=mutate($DNA);print "Mutate \n"原创 2012-10-16 23:03:34 · 1832 阅读 · 0 评论 -
关于随机模拟DNA突变的反思
在上一篇文章中,我们随机选取了DNA的一个位置,然后从四个碱基中随机选取了一个碱基,然后用我们随机选取的碱基对DNA某一个位置上碱基进行替换。我们来考虑一下,这个过程中有没有什么问题存在。突变是否真的产生了?大家可以从上一篇文章中观察到其中的几行的输出结果是一样的。是什么造成了这种结果:我们来想一想,我们选取的DNA序列中碱基和我们从四个碱基中选取的碱基,在我们的程序中没有进行特别原创 2012-10-17 19:14:25 · 2271 阅读 · 0 评论 -
指定长度,生成一个随机的DNA序列
use strict;use warnings; #进行定义my @dna;my $dna_length;my $newbase;my $i=0;print "please input the DNA length\n";chomp($dna_length=<>);while($i<$dna_length){ #从四个碱基中原创 2012-10-17 20:41:50 · 9535 阅读 · 0 评论 -
Perl风格:各有所爱
*风格问题很容易变成信仰问题。*我要告诉你们的绝大部分是个人意见。其中既有泛泛之论,也有指路明灯。*警告:我不一定总是按自己说的做!:)*我并不期望你们永远和我保持一致。选择一种风格,坚持下去。连贯性才是最重要的!*K&P, K&R, S&W, Rob Pike, 和Larry Wall的基础性工作对本文有间接贡献。Jon Orwant, Mark-Jason Dominus,转载 2012-10-19 10:20:16 · 3359 阅读 · 0 评论 -
perl哈希要点,哈希与数组的关系以及相互转化,哈希结构的转化(键值转换),测试关键字,
use strict;use warnings;my %movies;my $film;my %reverse_result;my $director;my @data;%movies =( 'The Shining' => 'Kubrick', 'Ten Commandments' => 'DeMille', 'Goonies' =>原创 2012-10-19 23:04:48 · 7386 阅读 · 0 评论 -
perl应用:DNA序列酶切图谱的创建
程序里面有很多小的知识点,大家要认真的看,才能发现:a.fasta的DNA序列如下:> sample dna | (This is a typical fasta header.) agatggcggcgctgaggggtcttgggggctctaggccggccacctactgg tttgcagcggagacgacgcatggggcctgcgcaatagg原创 2012-10-30 23:09:10 · 2746 阅读 · 2 评论 -
perl:编码规范;严格要求自己
PERL编码规范 目录目录目 录...................................................................................................................................................III1原创 2012-10-22 20:22:37 · 3010 阅读 · 0 评论 -
perl:DNA序列翻译成氨基酸序列的若干方法,直接法,简并法,哈希法,以及perl中的uc和lc函数(上)
1.直接转换法use warnings;use strict;#利用perl来进行DNA序列到氨基酸序列的翻译,我们来介绍一下几种方法:#第一种方法:#DNA序列和氨基酸序列通过密码子来联系,密码子一共有61个,蛋白质有20个#第一种方法也就是最简单的方法,就是建立一一对应的关系# A subroutine to translate a DNA 3-character原创 2012-10-22 18:48:23 · 10238 阅读 · 0 评论 -
perl应用:DNA序列翻译为蛋白质的完整程序(中)
use warnings;use strict;my $dna='cgacgtcttcgtacgggactagctcgtgtcggtcgc';my $protein=' ';my $codon;for(my $i=0; $i<(length($dna)-2);$i+=3){ $codon=substr($dna,$i,3); $protein.=codon2aa($codon)原创 2012-10-22 20:17:46 · 6303 阅读 · 0 评论 -
perl应用:DNA互补序列的获取
sub revcom{ # A subroutine to compute the reverse complement of DNA sequence # 一个获取DNA互补序列的子程序 my($dna)=@_; print $dna."\n"; my ($revcom)=reverse($dna); $revcom=~tr/ACGTacgt/TGCAtgca/; return原创 2012-10-24 16:06:58 · 5597 阅读 · 1 评论 -
perl应用:DNA序列翻译(下):从fasta格式中读取序列,然后输出蛋白质序列,以及fasta格式的介绍
use strict; use warnings; my $dna =''; my $protein =''; my @file_data=( ); my @filedata; @filedata = get_file_data();$dna = extract_sequence_from_fasta_data(@filedat原创 2012-10-23 22:45:43 · 12153 阅读 · 3 评论 -
perl应用:六框阅读翻译DNA序列
生物学知识:1.六框翻译 因为DNA为双链, 平时从NCBI等里面得到的只是其中的一条链,还有一个互补链没有结出. 先从一条链讲起, 如此链为ACGATGCCG....则现在有以下三种读法:第一种,ACG/ATG/CCG.... 第二种,把A看做前面的部分,则为A/CGA/TGC/CG..... 第三种,把AC看做是前面的部分,则为AC/GAT/GCC/G...原创 2012-10-24 16:17:35 · 5568 阅读 · 2 评论 -
perl应用:从NCBI提供的信息中获取需要的序列(上)
我们首先来看一下GenBank中序列的格式,我从http://www.ncbi.nlm.nih.gov/nuccore/JX118024.1中复制了这个信息到strawberry.gb中LOCUS JX118024 460 bp DNA linear PLN 25-SEP-2012DEFINITION Fragari原创 2012-11-03 09:44:45 · 2616 阅读 · 0 评论 -
perl应用:从NCBI提供的信息中获取需要的序列(上)use Arrays
我们首先来看一下GenBank中序列的格式,我从http://www.ncbi.nlm.nih.gov/nuccore/JX118024.1中复制了这个信息到strawberry.gb中LOCUS JX118024 460 bp DNA linear PLN 25-SEP-2012DEFINITION Fragari原创 2012-11-07 17:13:53 · 1368 阅读 · 0 评论 -
Three condition,多条件的过滤数据
#!/usr/bin/perl# Now we choose the line bur=oy; edi=no and col hi kn ler mt rsch tsu wu# are same to bur or edi use strict;use warnings;my @information;open(THREE, "OnlyATGC.txt") || die("c原创 2012-11-25 14:56:10 · 1049 阅读 · 0 评论 -
perl应用:从NCBI提供的信息中获取需要的序列(下)use Scalar
use strict;use warnings;my $annotation =' ';my $dna =' ';my $record =' ';my $save_input_separator =$/;open (DNAFILENAME,'f:\\perl\\strawberry.gb')||die("can not open the file!");$/ = "//\n";原创 2012-11-10 14:43:49 · 1380 阅读 · 0 评论 -
perl应用:SNP的提取(3):18个样品SNP的合并join.pl,+忽略-多的行
在(2)中我们只是取出了一个sample的snp位点,我们的想法是把所有的SNP位点统计到一个文本里面,这样,我们就可以看出哪些SNP位点的出现的频率更大。也就是哪些是真正的SNP位点,只出现在一个样品中的SNP位点,有可能是因为测序不准,导致的假阳性。思路如下:1.先打开第一个样品的snp位点,然后将snp在ref的位置和碱基作为hash的key,然后把样品的碱基作为value。2.原创 2012-11-21 18:57:50 · 2801 阅读 · 0 评论 -
统计一行中字符串字符的个数的三种方法:利用excel,利用perl(length函数,tr//),利用vim。统计引物中引物的碱基数目必用
大家在设计引物以后,假如说设计了100个,公司的订单要求提供每一个引物的碱基个数!我们怎么快速的把这100个引物中每个引物中碱基的个数统计出来呢?方法一:Excel中提供了很好的函数,来帮助我们实现这一功能。这里我们可以从图中看到我们用了一个函数“=LEN(B2)”。这也就是一个求指定单元格中字符的多少的。方法二:利用perl,统计每一行中字符串的个数。在这里,我们把引原创 2012-10-07 16:27:07 · 6622 阅读 · 3 评论 -
perl应用:SNP的提取(2):从对比序列中找到SNP位点并输出 a.pl
我们从第一步中得到的是一个如下的文件:##maf version=1 scoring=lastz.v1.02.00# lastz.v1.02.00 --ambiguous=iupac --notransition --step=20 --nogapped --format=maf ## hsp_threshold = 3000# gapped_threshold =原创 2012-11-21 16:34:30 · 7979 阅读 · 2 评论 -
perl应用:SNP的提取(4):信息的补全all.pl和重复区域的删除repeat_move_all_information.pl!
我们在上一篇文章中看了最后的输出结果如下:pos TAIR bur can ct edi hi kn ler mt no oy po rsch sf tsu wil ws wu zu 1000 G - A - - - - - - - - - - - - - - - -10000003 C - - - - - G - - - - - - - - - - - -10000013 A -原创 2012-11-21 20:49:26 · 1833 阅读 · 0 评论 -
perl应用:snp提取后续处理:非ATGC行的删除
有如下的数据结构,我们知道DNA中碱基只有四种,ATGC,但是因为测序过程中的种种原因,可能出现R,M等情况,也就是所谓的兼并碱基,可参考前面的标准核酸表。如下面中第三行中有一个R,但是我们在分析的过程中,希望把这样的行给去掉。25806202 T T C T T T T T T C T T T T T T T T T 25806240 C C C C C C C C C C C C原创 2012-11-23 19:51:36 · 1954 阅读 · 0 评论