#!usr/bin/perl -w
use strict;
use 5.010;
#打開DNA序列文件句柄
open FILE,"contig"
my %hash;
#讀入序列
my $DNA = ;
#按照"N"來拆分序列,并且剔除"N"
my @list = split(/N/,$DNA);
#總長度
my $whole_len = 0;
#最長和最短
my $max = rindex $list[0]."\$","\$";;
my $min = rindex $list[0]."\$","\$";;
foreach(@list){
#取得長度
my $len = rindex $_."\$","\$";
if($max < $len){
$max = $len;
}
if($min > $len){
$min = $len;
}
# 長度=>contig
$hash{$len} = $_;
$whole_len += $len;
}
#輸出最長contig的堿基數(shù)和最短contig的堿基數(shù)
say "最長contig的堿基數(shù):$max\n";
say "最短contig的堿基數(shù):$min\n";
#求 N50 和 N90
my $links;
my $temp_len;
foreach my $key(reverse sort keys %hash){
$links .= $hash{$key};
$temp_len += $key;
if($temp_len > $whole_len/2){
say "N50是 :$links\n";
}
elsif($temp_len > $whole_len*9/10){
say "N90是 :$links\n";
}
}
#求(G+C)/(A+T+G+C)的比例
my @list_all = split(//,$DNA);
my ($num_A,$num_T,$num_G,$num_C);
foreach(@list_all){
if($_ eq "A"){
$num_A++;
}
if($_ eq "T"){
$num_T++;
}
if($_ eq "G"){
$num_G++;
}
if($_ eq "C"){
$num_C++;
}
}
my $a = ($num_G+$num_C)/($num_A+$num_T+$num_G+$num_C);
say "(G+C)/(A+T+G+C) = $a";
算法已經(jīng)測試過了,沒啥問題.你需要把DNA序列存在 DNA.txt里面就可以了.然后我只是想幫幫你而已,分?jǐn)?shù)又不能吃飯.
用perl語言測DNA序列,全部分給你!
用perl語言測DNA序列,全部分給你!
首先先說說,DNA的堿基由ATCG四種堿基組成,假如有一段堿基序列,里面有未知的堿基,我們把未知的堿基命名為N.
假如現(xiàn)在有一段堿基序列:ATCGNATCGNAATTCGGNTTGGANATTCGGATGCCNTATCUACGTATNGNTCGATGCNGT
這一段包含著N(也就是未知堿基)的序列我們稱之為scaffod
現(xiàn)在我們對(duì)scafford上的堿基一個(gè)一個(gè)地看,逢遇到N就將它剔除,這時(shí),我們會(huì)得到很多段小序列,如:ATCG ATCG AATTCGG ……,這些子序列我們稱之為contig
現(xiàn)在我們按堿基數(shù)的由大到小排列contig
從最長的一列一直往較小一列遞加下去,直到加到某一列后,堿基數(shù)的總和是所有contig堿基數(shù)總和的50%及以上,那一列我們稱之為N50
同理,若加到某一列,堿基數(shù)的總和是所有contig堿基數(shù)總和的90%及以上,那一列我們稱之為N90
現(xiàn)在要請(qǐng)用perl語言設(shè)計(jì)一個(gè)算法,測出N50、N90、最長contig的堿基數(shù)、最短contig的堿基數(shù)、所有contig連起來后的(G+C)/(A+T+G+C)的比例
首先先說說,DNA的堿基由ATCG四種堿基組成,假如有一段堿基序列,里面有未知的堿基,我們把未知的堿基命名為N.
假如現(xiàn)在有一段堿基序列:ATCGNATCGNAATTCGGNTTGGANATTCGGATGCCNTATCUACGTATNGNTCGATGCNGT
這一段包含著N(也就是未知堿基)的序列我們稱之為scaffod
現(xiàn)在我們對(duì)scafford上的堿基一個(gè)一個(gè)地看,逢遇到N就將它剔除,這時(shí),我們會(huì)得到很多段小序列,如:ATCG ATCG AATTCGG ……,這些子序列我們稱之為contig
現(xiàn)在我們按堿基數(shù)的由大到小排列contig
從最長的一列一直往較小一列遞加下去,直到加到某一列后,堿基數(shù)的總和是所有contig堿基數(shù)總和的50%及以上,那一列我們稱之為N50
同理,若加到某一列,堿基數(shù)的總和是所有contig堿基數(shù)總和的90%及以上,那一列我們稱之為N90
現(xiàn)在要請(qǐng)用perl語言設(shè)計(jì)一個(gè)算法,測出N50、N90、最長contig的堿基數(shù)、最短contig的堿基數(shù)、所有contig連起來后的(G+C)/(A+T+G+C)的比例
其他人氣:595 ℃時(shí)間:2020-02-05 16:29:54
優(yōu)質(zhì)解答
我來回答
類似推薦
- 有兩個(gè)fastaq格式的DNA序列文件,想寫一個(gè)perl程序完成!
- a little love這首歌所表達(dá)的意思是什么?
- 拋物線y=x平方-3x-10與x軸相交于點(diǎn)A和B 在x軸下方的拋物線上有一點(diǎn)P 設(shè)三角形ABP面積為S 則S最大值?
- they are all places of great interest.of great interest.為什么這么用,他在這里作什么作用.
- K為何值時(shí),方程組
- 一種電腦,如果減少定價(jià)的百分之十出售,可盈利215元;如果減少定價(jià)的百分之二十,虧本125元.進(jìn)價(jià)多少元
- 設(shè)函數(shù)f(x)=4sin(2x+1)-x,則f(x)的零點(diǎn)個(gè)數(shù)有幾個(gè)?
- 商場舉行促銷活動(dòng),某種洗衣機(jī)每臺(tái)按2400元出售獲利潤20%,如果按原來得標(biāo)
- 五角星是凸多邊形嗎
- how nothing's funny when it's you 不懂
- 6個(gè)邊長0.2分米的正方形拼成長方形的周長是()或()
- In order to give him a present now【目的狀語】,he goes to the park 我的分析對(duì)嗎
猜你喜歡
- 1等我明白了什么是愛,你卻已離開(或者是 不在). 這句話翻譯成英文,優(yōu)美一點(diǎn)…
- 2歷史上除了諸葛亮外,還有誰“受任于敗軍之際,奉命于危難之間”?
- 3圓錐和圓柱半徑的比是3:2,體積的比是3:4,那么圓錐和圓柱高的比是_.
- 4長江起源于哪個(gè)省
- 5已知A={y/y=x的平方-4x+3,x∈R},B={y/y=x的平方-2x+2,x∈R},則A交集B等于( ).
- 6摩擦生熱的同時(shí)也起電了嗎?不是說摩擦生熱,也有摩擦起電嗎
- 7分子加5等于1/2,分母減3等于1/3求這個(gè)分?jǐn)?shù),要用二元二次方程
- 81_____is te second month of a year.2His b_____is october 3rd.空格應(yīng)填什么?
- 9數(shù)列題:1/9,1,7,36下一個(gè)是什么?
- 10機(jī)械設(shè)計(jì),現(xiàn)要設(shè)計(jì)一容器,容器中的溶劑,在工作時(shí)溫度保持在一定攝氏度
- 11衍射光柵中,如何將相鄰兩條光譜分的更開些
- 12小明學(xué)習(xí)了電學(xué)知識(shí)后,想知道家里有一臺(tái)電磁爐的電率,他利用了接在他家電路里的一個(gè)電能表來測量 除了電