【发布时间】:2023-04-04 02:38:01
【问题描述】:
我使用正则表达式逐行读取文件,然后将其拆分为如下标量变量,正则表达式可以正常工作。
while (<GTFFILE>) {
if ($_ =~ /(^\d)\s+\w+\s+(\w+)\s+(\d+)\s+(\d+)\s+\.\s+\W\s+\.\s+(\w+\_\w+\s+\"\w+\"\;)/){
my $gene = $1;
my $type = $2;
my $start = $3;
my $end = $4;
my $geneId = $5;
尝试从从正则表达式中获取的值生成散列。
$featurestart{$start} = $start;
$featureend{$end} = $end;
我需要使用从正则表达式生成的哈希来查找外显子的长度。这是每行完成的,但我收到错误:Missing $ on loop variable。有什么想法吗?
for each ($_) {
$exonlength = ($featureend{$_} - $featurestart{$_});
printf ("Exon lengths: = %1.1f\n", $exonlength);
}
在这里我一无所知,我想找到$geneId中每个单词的出现次数。我将如何匹配未知单词,并计算每个未知单词的不同出现次数?我猜测某种函数可以聚集在一起,也许在散列/数组中将一个单词的重复放在一起,然后以某种方式计算每个簇?
$geneCount{$geneId} = $type;
foreach $geneId {
}
}
}
}
GTF 文件的每一行是: 1 个未知外显子 3204563 3207049。 - 。基因ID“Xkr4”;基因名称“Xkr4”; p_id "P15240"; transcript_id "NM_001011874.1"; tss_id "TSS13146"; 这就是正则表达式正在阅读的内容。外显子因行而异,可以是外显子,也可以是 cds 等,每行只有一个或另一个,因此计算外显子一词的出现次数,计算文件中外显子的数量。 “外显子”后面用空格隔开的两个数字是坐标,外显子长度是通过从第一个数字中减去第二个数字来计算的。用';'分隔的短语被分组为geneId。对于这些,我想计算整个文件中这部分的出现次数,类似于外显子,这会发生变化,但是不知道字符串可能是什么,所以想法是找出这个变量中有多少不同的字符串出现。
【问题讨论】:
标签: regex perl count hashmap tr