编程经验
文章平均质量分 61
morningCV
喜欢电脑技术,喜欢结交朋友
展开
-
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 · 2563 阅读 · 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 · 1447 阅读 · 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 · 3567 阅读 · 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 · 1541 阅读 · 1 评论 -
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 · 3537 阅读 · 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 · 873 阅读 · 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 · 1061 阅读 · 0 评论 -
perl关于qw以空格为分隔符的问题以及若干替代方案+学会变通+split函数的使用
我们在创建数组的时候,可以使用到qw,这是一个非常方便的简写,省去了我们书写大量引号的麻烦。但是有这样一个问题。如果们要创建有20个人名组成的数组,并且每个人的名字是这种形式的"Join smith" "Harry Potter"也就是每一个名字既包含姓也包含名。这样的话,我们的qw就不能起作用了。因为qw是用空格作为分隔符。我们只能想一些替代的方案来解决。方案一:用最原始的方案,也就原创 2012-10-08 22:00:54 · 2152 阅读 · 0 评论 -
window下perl模块的安装(转载) ,PPM
perl ppm使用可以直接键入cpan命令进行模块安装前面我们介绍了如何在Windows下面安装ActivePerl,ActivePerl有一个好处就是使用了图形化的模块管理界面,确实使得安装新的模块异常的简单,这里我就介绍一下如何使用PPM(Perl Package Manager)安装模块。打开PPM,我们看到的界面是这样的:我们看到第二行是工具栏,从左到右,第一个是查看仓库里面转载 2012-09-18 14:34:13 · 4389 阅读 · 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 · 2011 阅读 · 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 · 2496 阅读 · 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 · 2627 阅读 · 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 · 2058 阅读 · 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 · 3521 阅读 · 0 评论 -
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 · 1837 阅读 · 0 评论 -
perl,读取所需文件的路径,然后打开相应的文件,并对文件中的DNA序列进行计数,substr函数对长字符串的片段化处理功能
以下是DNA序列,存储在window下F:\perl\data.txt里面:AAAAAAAAAAAAAAGGGGGGGTTTTCCCCCCCC CCCCCGTCGTAGTAAAGTATGCAGTAGCVG CCCCCCCCCCGGGGGGGGAAAAAAAAAAAAAAATTTTTTAT AAACG 下面是程序:#下面的程序是用来计算一段DNA序列中ATGC的原创 2012-09-25 09:05:09 · 3209 阅读 · 2 评论 -
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 · 3616 阅读 · 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 · 5758 阅读 · 0 评论 -
关于随机模拟DNA突变的反思
在上一篇文章中,我们随机选取了DNA的一个位置,然后从四个碱基中随机选取了一个碱基,然后用我们随机选取的碱基对DNA某一个位置上碱基进行替换。我们来考虑一下,这个过程中有没有什么问题存在。突变是否真的产生了?大家可以从上一篇文章中观察到其中的几行的输出结果是一样的。是什么造成了这种结果:我们来想一想,我们选取的DNA序列中碱基和我们从四个碱基中选取的碱基,在我们的程序中没有进行特别原创 2012-10-17 19:14:25 · 2278 阅读 · 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 · 9547 阅读 · 0 评论 -
Perl风格:各有所爱
*风格问题很容易变成信仰问题。*我要告诉你们的绝大部分是个人意见。其中既有泛泛之论,也有指路明灯。*警告:我不一定总是按自己说的做!:)*我并不期望你们永远和我保持一致。选择一种风格,坚持下去。连贯性才是最重要的!*K&P, K&R, S&W, Rob Pike, 和Larry Wall的基础性工作对本文有间接贡献。Jon Orwant, Mark-Jason Dominus,转载 2012-10-19 10:20:16 · 3367 阅读 · 0 评论 -
window 命令行常用命令总结,为了使用的时候方便(边使用边补充)
1.清理屏幕:CLS2.原创 2012-10-20 09:52:10 · 1798 阅读 · 3 评论 -
vim正则表达式
1. / (搜索)命令2.:s/正则表达式/替换字符串/选项3.元字符: .匹配任意一个字符[abc]匹配方括号中的任意一个字符。可以使用-表示字符范围,如[a-z0-9]匹 配小写字母和阿拉伯数字。[^abc]在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符。\d匹配阿拉伯数字,等同于[0-原创 2012-10-20 10:00:56 · 1468 阅读 · 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 · 7397 阅读 · 0 评论 -
perl应用:DNA序列酶切图谱的创建
程序里面有很多小的知识点,大家要认真的看,才能发现:a.fasta的DNA序列如下:> sample dna | (This is a typical fasta header.) agatggcggcgctgaggggtcttgggggctctaggccggccacctactgg tttgcagcggagacgacgcatggggcctgcgcaatagg原创 2012-10-30 23:09:10 · 2751 阅读 · 2 评论 -
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 · 10277 阅读 · 0 评论 -
perl:编码规范;严格要求自己
PERL编码规范 目录目录目 录...................................................................................................................................................III1原创 2012-10-22 20:22:37 · 3014 阅读 · 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 · 6312 阅读 · 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 · 5603 阅读 · 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 · 12165 阅读 · 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 · 5579 阅读 · 2 评论 -
使用子程序的优点
子程序的作用: 1 降低复杂性:使用子程序的最首要原因是为了降低程序的复杂性,可以使用子程序来隐含 信息,从而使你不必再考虑这些信息。 2 避免代码段重复:无可置疑,生成子程序最普遍的原因是为了避免代码段重复。 3 限制改动带来的影响:由于在独立区域进行改动,因此,由此带来的影响也只限于一个或最多几个区域中。要把最可能改动的区域设计成最容易改动的区域。最可能被改动的区域包括:硬件依赖部原创 2012-10-24 16:43:55 · 8765 阅读 · 0 评论 -
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 · 2618 阅读 · 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 · 1372 阅读 · 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 · 1055 阅读 · 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 · 1381 阅读 · 0 评论 -
linux中cat命令;解压缩命令
学会了以后真的很有用,很快捷。cat主要有三大功能:1.一次显示整个文件。$ cat filename2.从键盘创建一个文件。$ cat > filename只能创建新文件,不能编辑已有文件.3.将几个文件合并为一个文件。$cat file1 file2 > filecat具体命令格式为 : cat [-AbeEnstT原创 2012-11-26 17:07:57 · 8289 阅读 · 0 评论 -
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的提取(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 · 2813 阅读 · 0 评论 -
统计一行中字符串字符的个数的三种方法:利用excel,利用perl(length函数,tr//),利用vim。统计引物中引物的碱基数目必用
大家在设计引物以后,假如说设计了100个,公司的订单要求提供每一个引物的碱基个数!我们怎么快速的把这100个引物中每个引物中碱基的个数统计出来呢?方法一:Excel中提供了很好的函数,来帮助我们实现这一功能。这里我们可以从图中看到我们用了一个函数“=LEN(B2)”。这也就是一个求指定单元格中字符的多少的。方法二:利用perl,统计每一行中字符串的个数。在这里,我们把引原创 2012-10-07 16:27:07 · 6633 阅读 · 3 评论