关于Mantel Test

算地理距离与遗传距离相关性,扯到了Mantel Test,那些中文文献里面全说用一个老软件:TFPGA v1.3(目前我已下下来了,正准备凑数据去算下),心里有些排斥过于老的软件,于是想看R里面谁能算。

初步Google发现了ade4这个包,已尝试,貌似都得转换成dist类型。

又在这里:http://blog.sina.com.cn/s/blog_4b678be40100o464.html看到了ape这个包,还没试;

另外又瞅到vegan包里面貌似也有相关函数。

可以试试多方验证。

#======================================================

format4tfpga.pl

#!/usr/bin/perl
use strict;
use warnings;
# 准备数据供TFPGA v1.3使用
# 另外,生成地理距离、遗传距离杂合矩阵

# files
my $f1 = 'gen.txt'; # 遗传距离矩阵
my $f2 = 'geo.txt'; # 地理距离矩阵
my $out = 'for_tfpga_0.txt';
my $geo_gen = 'geo_gen_matrix.txt'; # 附带生成杂和矩阵

my $str = '***';

open F1, '<', $f1 or die "Can't open '$f1': $!";
open F2, '<', $f2 or die "Can't open '$f2': $!";
open OUT, '>', $out or die "Can't write to '$out'";
open GG, '>', $geo_gen or die "Can't write to '$geo_gen'";

# matrix
# %mat1 => genic distances; %mat2 => geographic distances
my (%mat1, %mat2);
my $m = 0;
while (<F1>) {
	next if /^\s+$/;
	$m++;
	my $n = 0;
	for my $x (split) {
		$n++;
		$mat1{$m}{$n} = $x;
	}
}
close F1;

$m = 0;
while (<F2>) {
	next if /^\s+$/;
	$m++;
	my $n = 0;
	for my $x (split) {
		$n++;
		$mat2{$m}{$n} = $x / 1000;
	}
}
close F2;

for my $i (1 .. ($m - 1)) {
	for my $j (($i + 1) .. $m) {
		print OUT "$i,$j, $mat1{$i}{$j},$mat2{$i}{$j}\n";
	}
}
print OUT "0,0, 0,0\n";
close OUT;

for my $i (1 .. $m) {
	my @out;
	if ($i == 1) {
		@out = ($str, @{$mat2{$i}}{2 .. $m});
	} elsif ($i == $m) {
		@out = (@{$mat1{$i}}{1 .. ($m-1)}, $str);
	} else {
		@out = (@{ $mat1{$i} }{1 .. ($i-1)}, $str, @{ $mat2{$i} }{ ($i+1 ) .. $m });
	}
	my $line = join "\t", @out;
	print GG "$line\n";
}
close GG;

print "Done!\n";

system 'pause';



转载于:https://my.oschina.net/u/727594/blog/190491

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mantel test是一种用于计算两个相关性矩阵之间相关性的统计检验方法,它用于判断两个矩阵之间的关联是否存在显著性。mantel test python包则是用于在Python编程语言中进行Mantel test的工具包。 mantel test python包通常提供了实现Mantel test所需的函数和方法。使用这个工具包,我们可以将两个相关性矩阵作为输入,并计算它们之间的相关性,并给出相关性的检验结果。根据结果,我们可以判断两个矩阵之间的相关性是否具有统计显著性。 在使用mantel test python包时,通常需要先导入相应的库,例如scipy和numpy。然后,我们可以使用这些库中的函数来计算相关性矩阵,并使用mantel test函数来执行Mantel test。根据具体的使用情况,我们可以指定两个矩阵的类型(如距离矩阵或相关系数矩阵)、相关性的计算方法以及显著性水平。 值得注意的是,mantel test python包不仅仅适用于基础的Mantel test,它还常常提供了其他变种的相关性检验方法,如Partial Mantel test和Pearson Mantel test等。这些方法可以处理更复杂的相关性分析问题,增加了在实际问题中的应用范围。 总结来说,mantel test python包是用于在Python中进行Mantel test的工具包,它提供了计算相关性矩阵并执行相关性检验的函数和方法。使用mantel test python包,我们可以判断两个矩阵之间的相关性是否显著,并进行更复杂的相关性分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值