当前位置:首页 » 网页前端 » perl脚本基因探针
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

perl脚本基因探针

发布时间: 2022-06-24 20:52:33

A. genesis perl脚本

你知道在个genesis中有特殊指令,可以屏蔽错误报告。
不管这个step 是否存在,你直接去新建这个step就好了如果存在他不会报错。
cshell 中如下:
VOF
COM 。。。。。。。
VON

perl 中如下:

sub VOF {
local ($genesis) = shift;
$genesis->sendCommand("VOF","");
}

B. 用Perl语言写一个脚本实现滑动窗口(比如窗口100格每次滑动1格)统计一段DNA序列中的CG含量

usestrict;

#$win_width:窗口的宽度
#$pos:当前窗口的位置,从1开始,$DNA_len-$win_width+1结束
#$DNA:DNA序列

my$DNA="";
my$win_width=10;

for(my$i=0;$i<length($DNA)-$win_width+1;$i++){
printcalc($DNA,$win_width,$i+1)." ";
}

subcalc{
my($DNA,$win_width,$pos)=@_;
$DNA=~s/s+//g;
$DNA=uc($DNA);
if($DNA=~/[^ATGC]/){
print"非法字符";
return;
}
my$sub_DNA=substr($DNA,$pos-1,$win_width);
my@atgc=split("",$sub_DNA);
my%atgc;#atgc含量
map{$atgc{$_}++}@atgc;
returnsprintf("%.2f",($atgc{"G"}+$atgc{"C"})/$win_width);
}

C. perl编程处理DNA序列文件fasta格式,输出大于某数值bp的文件

不需要你自己重新来写,单枪匹马,刀耕火种,不是一个好的办法。
正好我也在做bioinformatics这块儿,学了点bioperl,我帮你写了个小脚本,用这个工具能很快捷的搞定你的序列!!
我大致给你说下,具体自己上bioperl网站看How To。
现在假定你的序列都为fasta格式,先用
cat *.fasta > single_all_fasta.fasta
将所有fasta序列整合到一个fasta格式中。
然后编写bioperl脚本(你要事先安装bioperl,在debian和ubuntu下很简单,自带源里就有,直接sudo apt-get install bioperl即可,很方便),你参考下:
脚本使用方法为:
perl get_fasta_length.pl single_all_fasta.fasta length.result
脚本我没有测试,一些小错误你可以修改下:

#!/usr/bin/perl -w
use strict;
use Bio::SeqIO;
my $in = shift; #读取文件名称
my $out = shift; #读取输出文件名称
my $flag = 0; #计数
open WH,">> $out";
$seqio_obj= Bio::SeqIO->new (-file =>'$in',
-f =>'fasta');
while($seq_obj = $seqio_obj->next_seq() ) {
print WH "$seq_obj->desc \t $seq_obj->length\n" ;
print "正在处理第$flag条序列...\n";
$flag++;
}
print "完毕,共处理$flag条序列!结果保存至$out文件\n";
close WH;

建议:
学好bioinfo,不会perl不行,不会bioperl更不行,它不仅可以轻松批量处理序列格式,解析blast结果,甚至在脚本里做blast,而且还可以操作biosql数据库。呵呵 建议深入学习下。

D. 如何调试perl脚本

进入退出:
perl
-d debugtest用调试器载入perl程序运行,交互式界面

Loading
DB routines from perl5db.pl version 1.3

Editor
support available.

Enter
h or `h h' for help, or `perldoc
perldebug'
for more help.

main::(p4.pl:2): my($xx,$yy)=(1,1);

DB<1>

先是欢迎信息,显示第一个可执行行:程序将要执行的当前行号。包名,文件名,文件中的行号。

提示符DB<n>
n为命令行号。h可看帮助,q退出调试器
l
缺省显示10行 再输入l接着显示10行

l
10 指定显示第10行

l
8-10 指定显示行的范围

l
8+3 指定从哪行开始多少行。

l
subs 指定显示函数,提供函数名。如果太长只显示前几行,用l接着显示

-
显示在当前行前面的行,再输入-继续向前

w
7 包含指定行的显示窗口 windows可能不一样

//
?? 从当前行搜索包含指定模式的行 /find/
//从前向后正向搜索,??从后向前逆向搜索 可忽略?? //中后面的? /。

S
列出所有函数,包名::函数
无参数的缺省形式列出所有底层和继承的函数,太多。加上搜索模式,指定当前程序包 S main可列出含main的函数
s 执行单条语句 显示下一条要执行的语句。如果需要交互会等待输入。

对于函数,仅仅是进入不执行,如果不进入函数内部,要跳过用n。不能进入系统内部的库函数,只能进入自己定义的

n 执行一行程序,stepover 不进入函数。

f 执行当前函数剩下的语句,显示跟随函数的语句
step
out 旧命令,现在为切换文件名

回车
如果执行了s或n,以后只用回车重复执行上一个s或n的命令。

r 在函数中执行到函数外
b 10
在哪一行设置断点。如果此行非执行语句,显示不能设置断点。如果一条语句有多行,则在第一行设置,其余行不能设置。

b func在函数处设置断点

b 10
($curdir eq
"") 当条件为真时中断执行

c
执行到断点或终止。继续

c
12临时断点,只中断一次,继续执行在12行中断。

L
列出所有断点。列出前几行,当前行,断点。断点条件。

B
10删除断点。不带参数认为是下一行是断点。

B *
删除所有断点。
X
var 不带参数列出main包的所有变量,包括预定义的变量。指定变量不带$,@。可能是符号表中的变量才行。现在与V同。

V
var 列出任何包的变量。只指定包名列出包的所有变量。指定包及变量为main
var。无::

S
列出所有可用的函数,包名::函数 无参数的缺省形式列出所有底层和继承的函数,太多。加上搜索模式,

指定当前程序包
S
main可列出含main的函数

p
expr
指印表达式值。把标准输出重定向也会输出到屏幕。
程序到达某一行时指定执行一条或多条语句。常见的行动作是显示变量值或把含错误值的变量重置为指定的值

a
10 print ("curdir is $curdir\n") 多条语句在一行中用分号;分开,当要续行时用\ 执行完第10行执行指定的语句。

A
*删除所有行动作
A 10删除第10行的动作

>
print 在程序开始执行前执行语句。无参数形式删除设置

<
print 在程序执行完成后执行语句。无参数形式删除设置
跟踪 显示每一个执行行。

t
打开,关闭跟踪。每执行显示一行。

任何非调试命令的perl语句都可执行。分号可忽略。更改变量值。

H
列出从前命令

!
n 执行从前命令。忽略行号执行上一条命令
n=-2跳过2条命令。从当前H列表逆向跳过。

T
栈跟踪。调用级

$
= &main::sub2('hi') from file debug1 line 7

$
= &main::sub1('hi') from file debug1 line 3

当前程序在第7行,在main包的sub2函数中,以hi为实际传递的参数。返回简单变量,此函数由sub1调用。

=
别名 命令 给命令定义别名 =
pc print ("curdir is $curdir\n");别名存在%DB(%DB::alias)中。无参数列出定义的别名。输入pc打印语句。

预定义别名:每次加载调试器自动定义别名。在.perldb中加入$DB'alias{"pc"} = 's/^pc/print
("curdir is $curdir\n");/';
错误检查
Lint perl -MO=Lint,-u pl 编译时检查

perldiag错误信息

-w 重定义函数变量未使用

Use strict;

use diagnostics 警告信息。
命令行参数简介
-c 语法检查

-v版本

-w警告信息

-e执行单行程序

-s为程序提供命令行选项。perl -s prog.pl
-q =>$q=1作为选项。不出现在@ARGV中。否则不加-s,-q作为字符串存在@ARGV中。可赋值-abc="abc"
跟在程序名后带-的是选项,不带-的不是,不是选项的项后面的所有都不是选项。

-P先运行c预处理器,输出再由perl执行

-I指定目录中的包含文件

-n循环处理多个文件。不用while

-p读文件行并显示。同n,不用print自动显示。

-i编辑文件,读然后写回文件。
-a分割行到@F

-F分割模式,指定分割符

-0
指定输入行结束符,用八进制表示

-1
指定输出行结束符

-x从消息中抽取程序。忽略行,直到遇到#!..perl。到文件尾,ctrl-d
ctrl-z __END__时结束

-u产生coremp

-U可以执行不安全操作

-S从路径中查找程序

-D设置调试标志

-T写安全程序。从外部获得的数据不能作为命令或修改文件系统

-d使用调试器

E. Perl脚本在数字IC设计中有哪些应用

Perl脚本可以用于生成有规律的代码,如SOC地址仲裁模块verilog代码、不同规格的CRC校验verilog代码、不同规格的FIFO代码。
在芯片设计过程中,所用到的FIFO数量很多,大于100多个很常见,甚至大于500个都是存在的。而不同规格的FIFO基本都是用最基础的RAM模块来搭建实现的,如果依靠人工编写,错误率高而且效率极其低下。因此,使用perl脚本编写不同规格的FIFO代码是可靠高效的方式。
快速生成testbench:在进行功能仿真的时候,需要编写测试案例testbench,可以利用perl脚本快速生成测试案例的大部分代码,手动添加少量verilog,即可快速完成testbench的编写,有效减少工作量。
Verilog代码自动对齐:verilog代码在人工编写时全靠手敲空格符会很累,并且效率低下,采用perl脚本一键对齐,效率高节省体力。
Mole例化连接:有些mole模块的输入输出信号有上百条,依靠手动添加会很繁琐,此时利用perl脚本生成例化模块可以有效提高效率,降低错误率。

F. perl脚本怎么调用perl脚本

方法有许多种,最简单的 system("~/myperl.pl");最常用的 @result=`"~/myperl.pl"`;

G. 谁知道PERL脚本语言的特征和优点[给点详细点的]

perl 是脚本语言,功能类似与SHELL,但是shell是使用在unix下的。
perl的通用性要比shell好支持更多的平台,可以与java媲美。
perl语言的数据类型简单,他能够自动区别数值和字符串。
perl是免费的语言!!!有很多免费的模块;例如:socket ,dbi等等
perl中的数据类型有hash,这个是其他语言不具备的!!!!
除了可以写CGI,perl的正则表达式是处理字符的超强手段!!

H. 我想求一个perl程序,从参考基因组中提取符合某个特定条件的序列!如

usestrict
if(@ARGV!=3){
print"$0input_reference_fastasequenceoutput.txt";
}
$ARGV[1]=uc($ARGV[1]);
$/=">";
openFA,$ARGV[0]ordie;
openOUT,">$ARGV[2]"ordie;
while(<FA>){
chomp;
nextif(/^$/);#空行
my($chr,$seq)=split/ +/,$_,2;
$seq=~s/s+//g;
$seq=uc($seq);
while($seq=~m/$ARGV[1]/){
print"$chr ",pos($seq)," ";
}
}
closeFA;
closeOUT;

I. perl编写Genesis脚本的问题

1. csh.exe
2. cd c:/perl/lib/core
3. h2ph.bat * sys/*
4. 会在c:/perl/site/lib/下产生*.ph
5. 在c:/winnt/system32/drivers/etc/services文件里加入
genesis 56753/tcp # Genesis port for scripts
6. 将Genesis.pm,server.pl 拷贝到c:/perl/site/lib
这样以后写程式就不用特别指定路径只需use Genesis; 即可
7. 程式的开头如下
use Genesis;
$f = new Genesis; 程式后面就看你要写什么了...........
8 Genesis for NT 要用CSH写一个调用程式
假设主程式名称为Example.pl
另外写一个呼叫Example.pl的小程式,其档名为: call_example.csh(档名随便)
call_example.sh的内容如下:
#!/bin/csh
perl $path/example.pl 要加一个enter,确定换行
9. 然后就可以Run

J. Perl写生信脚本,从一坨比对过后的DNA序列中摘出符合度最高的几条

open(A,"test.txt");
while(my$line=<A>){
@sss=split(" ",$line);
if(!exists$hash{$sss[0]}){
print$line;
$hash{$sss[0]}=1;
}

}