當前位置:首頁 » 網頁前端 » 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;
}

}