作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个基因列表和以下信息:
my %geneID = map { $xloc[$_] => [ $scaffold[$_], $start[$_], $stop[$_] ] } (0 .. $#xloc);
open FASTA, '<', 'genome.fasta' || die "Can't open 'genome.fasta'\n"; #Read in 'fasta' file
my (@head, @sequence);
while (<FASTA>) {
chomp;
push @head, $_ if /^>/;
push @sequence, $_ if /^[A-Z]/;
}
my %scaf;
@scaf{@head} = @sequence; # All scaffolds, as ordered in FH.
foreach my $xloc (sort keys %geneID) {
print "gene sequence for $xloc is: ";
my $chm = @{$geneID{$xloc}}[0];
my $start = @{$geneID{$xloc}}[1];
my $end = @{$geneID{$xloc}}[2];
my $seq = substr($scaf{$chm},$start-1,$end-($start-1));
print "$seq\n";
}
>Scaffold1
ONEATCGCGCTTAGTGCAGTACGTAGCTACGTGACTACTGA
>Scaffold2
TWOATCGCGCTTAGTGCAGTACGTAGCTACGTGACTACTGA
>Scaffold3
THREEATCGCGCTTAGTGCAGTACGTAGCTACGTGACTACTGA
>Scaffold4
FOURATCGCGCTTAGTGCAGTACGTAGCTACGTGACTACTGA
>Scaffold5
FIVEATCGCGCTTAGTGCAGTACGTAGCTACGTGACTACTGA
>Scaffold6
SIXATCGCGCTTAGTGCAGTACGTAGCTACGTGACTACTGA
>Scaffold7
SEVENATCGCGCTTAGTGCAGTACGTAGCTACGTGACTACTGA
>Scaffold8
EIGHTATCGCGCTTAGTGCAGTACGTAGCTACGTGACTACTGA
>Scaffold9
NINEATCGCGCTTAGTGCAGTACGTAGCTACGTGACTACTGA
>Scaffold10
TENATCGCGCTTAGTGCAGTACGTAGCTACGTGACTACTGA
Key: XLOC_000027 contains the values: >Scaffold1 1 10
Key: XLOC_000037 contains the values: >Scaffold2 1 15
Key: XLOC_000038 contains the values: >Scaffold3 2 9
Key: XLOC_000051 contains the values: >Scaffold4 6 8
Key: XLOC_000077 contains the values: >Scaffold5 2 7
Key: XLOC_000079 contains the values: >Scaffold6 4 16
Key: XLOC_000096 contains the values: >Scaffold7 4 9
Key: XLOC_000100 contains the values: >Scaffold8 3 20
Key: XLOC_000117 contains the values: >Scaffold9 6 8
Key: XLOC_000119 contains the values: >Scaffold10 7 14
gene sequence for XLOC_000027 is: ONEATCGCG
gene sequence for XLOC_000037 is: TWOATCGCGCTTAG
gene sequence for XLOC_000038 is: HREEATCG
gene sequence for XLOC_000051 is: TCGCGCT
gene sequence for XLOC_000077 is: IVEATC
gene sequence for XLOC_000079 is: ATCGCGCTTAGTGCA
gene sequence for XLOC_000096 is: ENATCGCG
gene sequence for XLOC_000100 is: GHTATCGCGCTTAGTGCAG
gene sequence for XLOC_000117 is: TCGCGCT
gene sequence for XLOC_000119 is: GCGCTTAGTGCAG
最佳答案
听起来您需要将每组(脚手架、开始、停止)值推送到 %geneID
的每个元素的数组中。哈希。像这样
my %geneID;
push @{ $geneID{ $xloc[$_] } }, [ $scaffold[$_], $start[$_], $stop[$_] ] for 0 .. $#xloc;
%scaf
散列已经构建,您可以在序列的所有组成部分的循环中构建子序列的串联。
for my $xloc (sort keys %geneID) {
my $sequence;
for my $part (@{ $geneID{$xloc} }) {
my ($chm, $start, $end) = @$part;
my $off = $start - 1;
my $len = $end - $off;
$sequence .= substr $scaf{$chm}, $off, $len;
}
print "gene sequence for $xloc is: $sequence\n";
}
open
中有一个错误声明。
open FASTA, '<', 'genome.fasta' || die "Can't open 'genome.fasta'\n"
open FASTA, '<', ('genome.fasta' || die "Can't open 'genome.fasta'\n")
0
)
die
永远不会被调用。
or
运算符,连同词法文件句柄作为全局文件句柄被认为是不好的做法。
open my $fasta, '<', 'genome.fasta' or die "Can't open 'genome.fasta'\n"
\n
在您的
die
的末尾string 阻止 perl 显示发生错误的文件和行号。
my $fasta_file = 'genome.fasta';
open my $fasta, '<', $fasta_file or die "Can't open '$fasta_file'";
my (%scaf, $scaffold);
while (<$fasta>) {
chomp;
$scaffold = $_ if /^>/;
$scaf{$scaffold} = $_ if /^[A-Z]/;
}
关于perl - perl 中的哈希键可以有多个 'subvalues' 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17218110/
我有一个基因列表和以下信息: 他们的名字是“XLOC_0000...” 他们所在的基因组支架“支架...” 每个特征在其脚手架上的位置('开始','停止') 我已经编写了一段 Perl 代码,用于查找
我正在使用 MongoDb Go Driver并且我无法从在我的结构中解码的 JSON 中获取 ObjectId 子值。 注意:我使用的库/API 不同于 this question , 所以请不要将
我是一名优秀的程序员,十分优秀!