From 05cac008ec750cf0ea269ea9f0d367afed29e0a7 Mon Sep 17 00:00:00 2001
From: Vincent Danjean <Vincent.Danjean@ens-lyon.org>
Date: Fri, 17 Mar 2006 14:13:29 +0000
Subject: [PATCH] =?UTF-8?q?parcoursQuanti=20et=20CalculAnova=20modifi?=
 =?UTF-8?q?=C3=A9es=20mais=20pas=20finies=20(non=20test=C3=A9es)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

git-svn-id: svn+ssh://imag/users/huron/danjean/svnroot/claire/altree/trunk@144 cf695345-040a-0410-a956-b889e835fe2e
---
 altree | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 101 insertions(+), 1 deletion(-)

diff --git a/altree b/altree
index e693ab9..eacf730 100755
--- a/altree
+++ b/altree
@@ -30,6 +30,7 @@ use ALTree::Import;
 use ALTree::Utils qw(erreur);
 use ALTree::Input qw(PrepareTree);
 #use Newchi2treeUtils;
+use TamuAnova;
 
 ###########################################
 ########  GLOBAL VARIABLES        #########
@@ -453,6 +454,101 @@ sub FillQuanti
     }
     
 }
+
+sub ParcoursQuanti
+{
+    my($tabnodes_a_traiter)=shift;
+    my($prolonge)=shift;
+    my($splitmode)=shift;
+    my($node_ecriture)=shift;
+    my($sign_util)=shift; # vaut 1 si on a besoin de la significativité, 0 sinon
+    my($node, $child, @tab_noeuds_suivants);
+    my($val)=0;
+    my($test, $p_val);
+    my($test_results);
+ 
+#    $test_results->{"ddl"}=scalar(@{$tabnodes_a_traiter})-1; # Nb branches -1
+    my @valeurs;
+    my @facteurs;
+    my $i=0;
+#DEBUG    print STDERR "TTTT ", scalar (@{$tabnodes_a_traiter}), "\n";
+    foreach $node (@{$tabnodes_a_traiter}) {
+	$i++;
+	foreach my $case (@{$node->{"quanti"}}) {
+	    push (@valeurs, $case->[0]);
+	    push (@facteurs, $i);
+	}
+    } 
+    
+# DEBUG    print STDERR "node ";
+#    for (my $i=0; $i<=$#valeurs; $i++) {
+#	print STDERR " $valeurs[$i]";
+#	print STDERR " ($facteurs[$i])";
+#    }
+#    print STDERR "\n";
+    
+    
+   if ($sign_util==SignUtil::YES) {
+	($test, $p_val)=CalculAnova($tabnodes_a_traiter, \@valeur, \@facteur, $test_results, SignUtil::YES );
+    } elsif ($sign_util==SignUtil::NO) { 
+	($p_val)=CalculAnova($tabnodes_a_traiter, \@valeur, \@facteur, $test_results, SignUtil::NO);
+    }
+    $test_results->{"node_teste"}=$node_ecriture;
+    push (@{$node_ecriture->{"res_test"}}, $test_results);
+    $test_results->{"level"}=scalar(@{$node_ecriture->{"res_test"}})-1;
+    
+
+######
+
+    if ($sign_util== SignUtil::YES && $test==1 && $splitmode == SplitMode::CHI2SPLIT) { # sign et que on on est en chi2split
+	foreach $node (@{$tabnodes_a_traiter}) {
+	    if (NbFils($node) != 0) {
+		my @children=$node->GetChildrenList();
+		parcours_nosplit_chi2split(\@children, 
+					   $prolonge, $splitmode, $node);
+	    }
+	}
+    } elsif ($sign_util== SignUtil::NO || $test==0 || $splitmode == SplitMode::NOSPLIT) { # ou alors on est en nosplit
+	foreach $node (@{$tabnodes_a_traiter}) {
+	    if (NbFils($node) != 0) {
+		$val=1;
+		foreach $child ($node->GetChildrenList()) {
+		    push (@tab_noeuds_suivants, $child);
+		}
+	    } else {
+		if ($prolonge == 1) {
+		    push (@tab_noeuds_suivants, $node);
+		}
+	    }
+	}
+	if ($val==1) {
+	    parcours_nosplit_chi2split(\@tab_noeuds_suivants, 
+				       $prolonge, $splitmode, $node_ecriture, $sign_util);
+	} else {
+	    return;
+	}
+    }
+}
+
+sub CalculAnova
+{
+    my $tabnodes_a_traiter=shift;
+    my $valeur=shift;
+    my $facteur=shift;
+    my $test_results =shift;
+    my $sign_util=shift;
+    
+    my $significatif;
+
+    if (scalar (@{$tabnodes_a_traiter}) < 2) {
+	$test_results->{"texte"}=
+	    "Only one category";
+	if ($sign_util==SignUtil::YES) {
+	    $significatif=ALTree::Chi2::NON_SIGNIFICATIF;
+	}
+    }
+}
+
 ########## GENERAL ##########
 
 sub FillLevel
@@ -1534,7 +1630,11 @@ sub main
 	    } else {
 		die "invalid value for the number of permutation: $permutation\n";
 	    }
-	parcours_nosplit_chi2split(\@children, $prolonge, $splitmode, $racine, $sign_util );
+	if ($dataqual == DataQual::QUALI) {
+	    parcours_nosplit_chi2split(\@children, $prolonge, $splitmode, $racine, $sign_util );
+	} else {
+	    ParcoursQuanti(\@children, $prolonge, $splitmode, $racine, $sign_util ); 
+	}
        	
 	{
 	    if ($permutation==0) {
-- 
GitLab