美文网首页
标记之间插值填补

标记之间插值填补

作者: 风知秋 | 来源:发表于2024-01-31 10:19 被阅读0次

现在是这样的,遗传图谱中的标记是散在分布的,在某些计算中需要特定位点的基因型。

所以需要根据遗传图谱,填补两个 marker 之间所有位点的基因型。

原先的遗传图谱:

插值填补之后的图谱会补充1到308551之间的所有位点,按分位值进行补充。

#!/usr/bin/perl

use strict;

use warnings;

use List::Util qw(min max);

my $filename = shift;

my $output_filename = shift;

open(my $input_fh, '<', $filename) or die "can not open the file '$filename' $!";

open(my $output_fh, '>', $output_filename) or die "can not creat the file '$output_filename' $!";

my @data;

while (my $line = <$input_fh>) {

    chomp $line;

    my @fields = split(/\t/, $line);

    push @data, \@fields;

}

# 填充位点并计算分位数,并将结果写入新文件

for my $i (0..$#data-1) {

    my ($start_chr, $start_pos, $start_val) = @{$data[$i]};

    my ($end_chr, $end_pos, $end_val) = @{$data[$i+1]};

    # 计算填充的行数

    my $num_rows = $end_pos - $start_pos;

    # 计算分位数

    my $min_val = min($start_val, $end_val);

    my $max_val = max($start_val, $end_val);

    # 填充位点并写入新文件

    for my $j (0..$num_rows-1) {

        my $interpolated_val = $start_val + ($end_val - $start_val) * ($j / $num_rows);

        my $pos = $start_pos + $j;

        print $output_fh "$start_chr\t$pos\t$interpolated_val\n";

    }

}

my ($last_chr, $last_pos, $last_val) = @{$data[$#data]};

print $output_fh "$last_chr\t$last_pos\t$last_val\n";

close($input_fh);

close($output_fh);

相关文章

  • AngularJS学习之路——表达式(2)

    插值字符串 插值字符串就是拥有插值标记的字符串 举个栗子 这里的 {{ expr }} 就是插值标记,str 就是...

  • [pr]变速中的“时间插值”选择

    一、定义 插值 是指在两个已知值之间填充未知数据的过程时间插值 是时间值的插值 二、分类与比较 三、tip 光流法...

  • 第十二章 D3插值器

    两个值之间多种插值的方法 d3.interpolateNumber(a, b) 数字插值器 默认 d3.inter...

  • Unity3D中的线性插值Lerp()函数解析

    经常用线性插值函数Lerp()来在两者之间插值,两者之间可以是两个材质之间、两个向量之间、两个浮点数之间、两个颜色...

  • 网格间的插值

    网格间的插值 这个例子展示了如何在两个不同的有限元空间之间插值。插值暂且不支持并行运算。 见 https://bi...

  • 缺失值处理-拉格朗日插值

    常用的插值法有:一维插值法:拉格朗日插值、牛顿插值、分段低次插值、埃尔米特插值、样条插值。二维插值法:双线性插值、...

  • 《Pro Swift》 第四章:函数(Functions)

    当编写代码在两个数字之间进行插值时,很容易默认为线性插值。然而,在两个值之间平稳过渡通常会更好。所以我的建议是避免...

  • 28. 图像缩放

    插值方法 四种插值,最近邻域插值 双线性插值 像素关系重采样 立方插值其中最近邻域插值、双线性插值原理如下: 1)...

  • 语法及常用标记(html)

    1.常规标记/双标记 <标记 属性="属性值" 属性="属性值"> 2. 空标记/单标记 <标记 属性=...

  • 数值分析之插值

    插值 一.基本概念 1.1插值需要研究的问题 插值函数是否存在? 如何构造插值函数? 如何评估误差? 1.2插值法...

网友评论

      本文标题:标记之间插值填补

      本文链接:https://www.haomeiwen.com/subject/lwgoodtx.html