From fd84b4e54618ee6840ed2437ff2d15c78f072ad2 Mon Sep 17 00:00:00 2001 From: Vincent Danjean <Vincent.Danjean@ens-lyon.org> Date: Sun, 19 Apr 2009 07:18:38 +0000 Subject: [PATCH] git-svn-id: svn+ssh://imag/users/huron/danjean/svnroot/claire/altree/trunk@433 cf695345-040a-0410-a956-b889e835fe2e --- ALTree/Nanova.pm | 11 ++++++---- ALTree/Node.pm | 35 +++++++++++++++++++++++++++++- altree | 56 +++++++++++++++++++++++++++--------------------- to_rewrite.pm | 2 +- 4 files changed, 74 insertions(+), 30 deletions(-) diff --git a/ALTree/Nanova.pm b/ALTree/Nanova.pm index 602aa4d..47772d0 100644 --- a/ALTree/Nanova.pm +++ b/ALTree/Nanova.pm @@ -68,10 +68,13 @@ sub FillTableaux my $values = shift; my $groups = shift; my $nb_term = shift; + + print "Node: ", $present_node->Name(), " ", Dumper($values); + print "\n"; if ($present_node->NbChildren()==0) { - $present_node->GetQuantiList(); - push @{$values}, @{$present_node->GetQuantiList()}; + print "list: ", Dumper($present_node->GetQuantiList()), "\n"; + push @{$values}, @{$present_node->GetQuantiListValues()}; push @{$groups}, $present_node->NbQuanti(); $nb_term++; } else { @@ -88,9 +91,9 @@ sub WriteMat my $mat = shift; - print STDERR Dumper($mat); + #print STDERR Dumper($mat); - return; + #return; for (my $i=0; $i<=$#$mat; $i++) { foreach my $elem (@{$mat->[$i]}) { print $elem, "\t"; diff --git a/ALTree/Node.pm b/ALTree/Node.pm index f8cf43a..fd9f18e 100644 --- a/ALTree/Node.pm +++ b/ALTree/Node.pm @@ -239,9 +239,23 @@ sub Name { } } +sub AddQuanti { + my $self=shift; + my $value=shift; + my $num_haplo=shift; + delete($self->{"moyenne"}); + push @{$self->{"quanti"}}, [$value, $num_haplo]; +} + sub GetQuantiList { my $self=shift; - return @{$self->{"quanti"}}; + return $self->{"quanti"}; +} + +sub GetQuantiListValues { + my $self=shift; + my @t=map {$_->[0] } @{$self->{"quanti"}}; + return \@t; } sub NbQuanti { @@ -249,6 +263,25 @@ sub NbQuanti { return scalar(@{$self->{"quanti"}}); } +sub GetQuantiMean { + my $self=shift; + + if (defined($self->{"moyenne"})) { + return $self->{"moyenne"}; + } + + my $tab = $self->GetQuantiListValues(); + my $sum; + my $i; + for ($i=0; $i < scalar (@{$tab}) ; $i++) { + $sum+=$tab->[$i]; + } + my $moy=$sum/($i); + $self->{"moyenne"}=$moy; + + return $moy; +} + #Faire meme chose pour case, control et br_len (HasBrLen), level, high, sequence, label, oldfather #Faire oldchildren (GetOldChildren, SetOldChildren, ) diff --git a/altree b/altree index 7bb8a7e..54d4c40 100755 --- a/altree +++ b/altree @@ -31,7 +31,7 @@ use ALTree::Utils qw(erreur); use ALTree::Input qw(PrepareTree); #use Newchi2treeUtils; use TamuAnova; - +#use NAnova; use ALTree::Nanova; ########################################### @@ -270,18 +270,6 @@ sub FillCaseControl } ######## QUANTITATIF ######## -sub Moyenne -{ - my $tab = shift; - my $sum; - my $i; - for ($i=0; $i < scalar (@{$tab}) ; $i++) { - $sum+=$tab->[$i]->[0]; - } - my $moy=$sum/($i); - return $moy; -} - sub FillQuanti { my($present_node)=shift; @@ -289,12 +277,14 @@ sub FillQuanti if ($present_node->NbChildren()==0) { my($id); $id=$present_node->{"id"}; - if (not defined $present_node->{"quanti"}) {# car sinon, pb pour H000 - $present_node->{"quanti"}=[]; - push @{$present_node->{"quanti"}}, @{$correspondance->{$id}}; - } - my $moy=Moyenne($present_node->{"quanti"}); - $present_node->{"moyenne"}=$moy; + #if (not defined $present_node->{"quanti"}) { + # car sinon, pb pour H000 + #$present_node->{"quanti"}=[]; + #print "cor: ", Dumper($correspondance->{$id}), "\n"; + foreach my $corresp (@{$correspondance->{$id}}) { + $present_node->AddQuanti($corresp->[0], $corresp->[1]); + } + #} #DEBUG print STDERR $present_node->{"id"}, " " ; #DEBUG for (my $i=0; $i< scalar (@{$present_node->{"quanti"}}); $i++) { @@ -305,11 +295,10 @@ sub FillQuanti my($child); for $child ($present_node->GetChildrenList()) { FillQuanti($child, $correspondance); - push (@{$present_node->{"quanti"}}, @{$child->{"quanti"}}); + foreach my $quanti (@{$child->GetQuantiList()}) { + $present_node->AddQuanti($quanti->[0], $quanti->[1]); + } } - my $moy=Moyenne($present_node->{"quanti"}); - $present_node->{"moyenne"}=$moy; - #DEBUG print STDERR $present_node->{"id"}, " " ; #DEBUG for (my $i=0; $i< scalar (@{$present_node->{"quanti"}}); $i++) { #DEBUG print STDERR $present_node->{"quanti"}->[$i]->[0], " (" ,$present_node->{"quanti"}->[$i]->[1], ") "; @@ -1533,8 +1522,27 @@ sub main # my $values = []; # my $groups = []; # my $nb_term=0; -# FillTableaux($tree->GetRoot(), $values, $groups, $nb_term); +# ALTree::Nanova::FillTableaux($tree->GetRoot(), $values, $groups, $nb_term); +# print "Values:\n"; +# foreach my $val (@{$values}) { +# print $val, "\t"; +# } +# print "\n"; +# print "Groups:\n"; +# foreach my $group (@{$groups}) { +# print $group, "\t"; +# } +# print "\n"; +# print "*********\n"; +# my $una_results; +# $una_results = NAnova::UnbalancedNestedANOVA($mat, $groups, $values); +# my $i=1; +# foreach my $res (@{$una_results}) { +# print "Level $i\tF=",$res->{"F"}, "\tp-value=",$res->{"p_value"}, "\n"; +# $i++; + # } # } +# print "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n"; $option_require->("permutations", "The number of permutations used to calculate". diff --git a/to_rewrite.pm b/to_rewrite.pm index 5d1a89f..197333b 100644 --- a/to_rewrite.pm +++ b/to_rewrite.pm @@ -308,7 +308,7 @@ sub InfosAffichees $chaine.=" case/control:".$node->{"case"}."/".$node->{"control"}; } if ($mode==3 || $mode == 4) { - $chaine.= sprintf " mean:%.2f",$node->{"moyenne"}; + $chaine.= sprintf " mean:%.2f",$node->GetQuantiMean(); } if (1) { # affiche les apomorphies $chaine.="\n"; -- GitLab