$value) {
$_SESSION[$variable] = $value;
}
// Form Processing:
// The form is broken down by section. Commands are added to the $cmdline variable
// and error messages accumulate when input doesn't match. A count is kept of all errors.
// If $errcnt=0, we go to pom3 and display the commandline built. If $errcnt > 0,
// we go back to pom2 so the form can be fixed.
// --- Input/Output Section --------------------------------------------------------------
if ($file && !$ped && !$map) { $cmdline .= " --file ".$file; }
elseif ($bfile && !$bed && !$bim && !$fam) { $cmdline .= " --bfile ".$bfile; }
elseif ($ped && $map && !$file) { $cmdline .= " --ped ".$ped." --map ".$map; }
elseif ($bed && $bim && $fam && !$bfile) { $cmdline .= " --bed ".$bed." --bim ".$bim." --fam ".$fam; }
elseif ($file && ($ped || $map))
{ $errcnt++; $errlist .= " Error: too many input files.
";}
elseif ($bfile && ($bed || $bim || $fam))
{ $errcnt++; $errlist .= " Error: too many input files.
";}
else { $errcnt++; $errlist .= " Error: missing input files.
";}
// If there is a value that isn't the default, add it, otherwise leave well
// enough alone.
if ($missg && $missg !="0")
{$cmdline .= " --missing-genotype ".$missg;}
if ($missp && $missp !="-9")
{$cmdline .= " --missing-phenotype ".$missp;}
if ($fmt2=="mul")
{
if ($pheno && !$mpheno) {$cmdline .= " --pheno ".$pheno;}
elseif ($pheno && $mpheno) {$cmdline .= " --pheno ".$pheno." --mpheno ".$mpheno;}
elseif ($mpheno && !$pheno)
{$errcnt++; $errlist .= " Error: phenotype file required.
";}
}
// The default output file is plink, doesn't need display.
if ($out)
{
if ($out !== "plink")
{ $cmdline .= " --out ".$out;}
}
else
{ $errcnt++; $errlist .= " Error: no output file.
";}
// --- End of Input/Output Section -------------------------------------------------------
// --- Data Management Section -----------------------------------------------------------
if ($m=="recode") $cmdline .= " --recode";
if ($m=="recode12") $cmdline .= " --recode12";
if ($m=="recodeAD") $cmdline .= " --recodeAD";
if ($m=="makebed") $cmdline .= " --make-bed";
if ($m=="merge")
{
$cmdline .= " --merge ".$mergeped." ".$mergemap." --merge-mode ".$mmode;
if (!$mergeped || !$mergemap || !$mmode) // If one of the merge files is missing
{$errcnt++; $errlist .= " Error: missing merge file.
";}
}
if ($m=="mmerge")
{
if ($mmerge)
{$cmdline .= " --merge-list ".$mmerge;}
else
{$errcnt++; $errlist .= " Error: missing merge-list file.
";}
}
if ($m=="extract") $cmdline .= " --extract ".$extract;
if ($m=="extract" && !$extract) { $errcnt++; $errlist .= " Error: no extract file.
";}
if ($m=="exclude") $cmdline .= " --exclude ".$exclude;
if ($m=="exclude" && !$exclude) { $errcnt++; $errlist .= " Error: no exclude file.
";}
if ($m=="keep") $cmdline .= " --keep ".$keep;
if ($m=="keep" && !$keep) { $errcnt++; $errlist .= " Error: no keep file.
";}
if ($m=="remove") $cmdline .= " --remove ".$remove;
if ($m=="remove" && !$remove) { $errcnt++; $errlist .= " Error: no remove file.
";}
if ($m=="flip") $cmdline .= " --flip ".$flip;
if ($m=="flip" && !$flip) { $errcnt++; $errlist .= " Error: no flip file.
";}
if ($m=="merge" || $m=="mmerge" || $m=="extract" || $m=="exclude" || $m=="keep" || $m=="remove" || $m=="flip")
{
if ($p=="1") $cmdline .= " --recode";
if ($p=="2") $cmdline .= " --make-bed";
}
// --- End of Data Management Section ----------------------------------------------------
// --- Summary Stats Section -------------------------------------------------------------
if ($m=="missing") { $cmdline .= " --missing"; }
if ($m=="test-missing") { $cmdline .= " --test-missing"; }
if ($m=="freq") { $cmdline .= " --freq"; }
if ($m=="hardy") { $cmdline .= " --hardy "; }
if ($m=="mendel") { $cmdline .= " --mendel ";}
// --- End of Summary Stats Section ------------------------------------------------------
// --- Population Stratification Section--------------------------------------------------
if ($m=="cluster")
{
$cmdline .= " --cluster";
if ($pmerge) {$cmdline .= " --ppc ".$pmerge;}
if ($ch_matrix=="yes") $cmdline .= " --matrix";
if (($mcc1 && !$mcc2) || ($mcc2 && !$mcc1))
{$errcnt++; $errlist .= "Error: Either both values or neither are required for mcc.
";}
if (($mcc1 || $mcc2) && ($mc || $ch_cc=="yes"))
{$errcnt++; $errlist .= "Error: too many optional clustering parameters.
";}
if ($mcc1 && $mcc2)
{$cmdline .= " --mcc ".$mcc1." ".$mcc2;}
if ($mc)
{$cmdline .= " --mc ".$mc;}
if ($ch_cc=="yes")
{$cmdline .= " --cc";}
// Two choices: match (with matchtype optional)
// or qmatch and qt (both required)
if ($p==2)
{
if ($match) {$cmdline .= " --match ".$match;}
if ($matchtype) {$cmdline .= " --match-type ".$matchtype;}
if ($qmatch && $qt) {$cmdline .= " --qmatch ".$qmatch." --qt ".$qt;}
if ($match && ($qmatch || $qt))
{$errcnt++; $errlist .= "Error: too many cluster files.
";}
// One of qmatch or qt is missing, and match is missing
if (!$match && (!$qmatch || !$qt))
{$errcnt++; $errlist .= "Error: missing cluster file.
";}
}
}
if ($m=="genome") $cmdline .= " --genome --min " .$min;
if ($m=="genome" && !$min) {$errcnt++; $errlist .= "Error: no min value.
";}
if ($m=="inbreeding") $cmdline .= " --het ";
if ($m=="homo-run-snps") $cmdline .= " --homo-run-snps " .$homo_run_snps;
if ($m=="homo-run-snps" && !$homo_run_snps) {$errcnt++; $errlist .= "Error: no homo-run-snps value.
";}
// --- End of Population Stratification Section-------------------------------------------
// --- Linkage Disequilibrium Section--------------------------------------------------
if ($m=="ld-r")
{
if ($ld==1)
{ $cmdline .= " --r"; }
elseif ($ld==2)
{ $cmdline .= " --r2"; }
}
if ($m=="hap")
{
if ($hap) {$cmdline .= " --hap ".$hap;}
if (!$hap) {$errcnt++; $errlist .= "Error: no hap file.
";}
if ($p==1)
{ $cmdline .= " --hap-freq"; }
elseif ($p==2)
{ $cmdline .= " --hap-phase"; }
elseif ($p==3)
{ $cmdline .= " --hap-assoc"; }
elseif ($p==4)
{
$cmdline .= " --hap-impute --pp ".$pp;
if ($p==4 && !$pp) {$errcnt++; $errlist .= "Error: no pp value.
";}
}
}
// --- End of Linkage Disequilibrium Section-------------------------------------------
// --- Association Analysis/Single SNP Section-----------------------------------------
if ($m=="assoc") { $cmdline .= " --assoc"; }
if ($m=="model") { $cmdline .= " --model"; }
if ($m=="qt") { $cmdline .= " --assoc"; }
if ($m=="assoc" || $m=="model" || $m=="qt" || $m=="within-file" || $m=="qt-within-file")
{
if ($p==2)
{
$cmdline .= " --perm";
}
elseif ($p==3)
{
$cmdline .= " --mperm ".$mperm;
if (!$mperm) {$errcnt++; $errlist .= "Error: missing number of permutations.
";}
}
}
if ($m=="mh") { $cmdline .= " --mh"; }
if ($m=="mh2") { $cmdline .= " --mh2"; }
if ($m=="homog")
{
if ($homog==1) { $cmdline .= " --bd"; }
elseif ($homog==2) { $cmdline .= " --homog"; }
}
if ($m=="within-file" || $m=="mh" || $m=="mh2" || $m=="homog" || $m=="qt-within-file")
{
if ($within && !$ch_family=="yes") { $cmdline .= " --within ".$within; }
elseif ($ch_family=="yes" && !$within) { $cmdline .= " --family"; }
else {$errcnt++; $errlist .= "Error: choose exactly one of --within or --family.
";}
}
if ($m=="tdt")
{
if ($tdt==1)
{ $cmdline .= " --tdt"; }
elseif ($tdt==2)
{ $cmdline .= " --parentdt1"; }
elseif ($tdt==3)
{ $cmdline .= " --parentdt2"; }
if ($p==2)
{ $cmdline .= " --perm"; }
if ($p==3)
{
$cmdline .= " --mperm ".$mperm; }
if (!$mperm) {$errcnt++; $errlist .= "Error: missing number of permutations.
";
}
}
// Currently $p=1 and $p=2 are identical, this may change later.
if ($m=="qtdt") { $cmdline .= " --genedrop"; }
if ($m=="gxe")
{
$cmdline .= " --gxe";
if ($covar && !$mcovar && !$ncovar)
{$cmdline .= " --covar ".$covar;}
elseif ($mcovar && $ncovar && !$covar)
{$cmdline .= " --mcovar ".$mcovar." ".$ncovar;}
elseif ($covar && ($mcovar || $ncovar))
{$errcnt++; $errlist .= " Error: too many covariate files.
";}
else
{ $errcnt++; $errlist .= " Error: missing covariate files.
";}
}
// --- End of Association Analysis/Single SNP Section----------------------------------
// --- Association Analysis/Epistatic Analysis Section---------------------------------
if ($m=="epi")
{
$cmdline .= " --epistasis";
if ($p==1)
{
$cmdline .= " --case-only";
}
if ($epi==1)
{}
elseif ($epi==2)
{ $cmdline .= " --set ".$set;}
elseif ($epi==3)
{ $cmdline .= " --set ".$set ." --set-by-all";}
elseif ($epi==4)
{ $cmdline .= " --set ".$set;}
if (($epi==2 || $epi==3 || $epi==4) && (!$set))
{$errcnt++; $errlist .= "Error: no set file.
"; }
$cmdline .= " --epi1 ".$epi1;
if (!$epi1) {$errcnt++; $errlist .= "Error: no epi1 value.
";}
$cmdline .= " --epi2 ".$epi2;
if (!$epi2) {$errcnt++; $errlist .= "Error: no epi2 value.
";}
}
if ($m=="genepi")
{
$cmdline .= " --genepi --R";
if ($p==1) { $cmdline .= " --case-only"; }
$cmdline .= " --set ".$set;
if (!$set) {$errcnt++; $errlist .= "Error: no set file.
";}
$cmdline .= " --mperm ".$perm;
if (!$perm) {$errcnt++; $errlist .= "Error: missing number of permutations.
";}
}
if ($m=="t2")
{
$cmdline .= " --T2";
$cmdline .= " --set ".$set;
if (!$set) {$errcnt++; $errlist .= "Error: no set file.
";}
if ($p==2)
{$cmdline .= " --perm";}
elseif ($p==3)
{
$cmdline .= " --mperm ".$mperm;
if (!$mperm) {$errcnt++; $errlist .= "Error: missing number of permutations.
";}
}
}
if ($m=="sumstat")
{
$cmdline .= " --assoc";
$cmdline .= " --set ".$set;
if (!$set) {$errcnt++; $errlist .= "Error: no set file.
";}
if ($setmin && $setmin!="1") { $cmdline .= " --set-min ".$setmin; }
if ($setmax && $setmax!="n/a") { $cmdline .= " --set-max ".$setmax; }
$cmdline .= " --mperm ".$mperm;
if (!$mperm) {$errcnt++; $errlist .= "Error: missing number of permutations.
";}
}
// --- End of Association Analysis/Epistatic Analysis Section--------------------------
// --- Sel Global Variable Section ----------------------------------------------------
if ($sel1=="yes")
{
if ($mind && $mind!="0.1") {$cmdline .= " --mind " .$mind;}
if ($geno && $geno!="0.1") {$cmdline .= " --geno " .$geno;}
if ($maf && $maf!="0.01") {$cmdline .= " --maf " .$maf;}
if ($m=="model" && $cell && $cell!="5")
{
$cmdline .= " --cell " .$cell;
}
if ($hwe && $hwe!="0.001")
{
$cmdline .= " --hwe " .$hwe;
}
if ($ime && $fme)
{
$cmdline .= " --me ".$ime ." " .$fme;
}
if (($ime && !$fme) || (!$ime && $fme))
{
{$errcnt++; $errlist .= "Error: either both or neither Mendel values are required.
";}
}
}
if ($sel2=="yes")
{
if ($chr && !$from && !$to)
{$cmdline .= " --chr " .$chr;}
elseif ($from && $to && !$chr)
{
$cmdline .= " --from " .$from;
$cmdline .= " --to " .$to;
}
elseif ($chr && ($from || $to))
{$errcnt++; $errlist .= "Error: too many location files.
";}
}
// --- End Sel Global Variable Section ------------------------------------------------
// --- Cleanup and form redirection -----------------------------------------
// Errchecked means "came from build_command. We need to set this so pom2 won't look
// for new m and p values
$_SESSION['errchecked']='yes';
$_SESSION['errcnt'] = $errcnt;
$_SESSION['errlist'] = $errlist;
$_SESSION['cmdline']= $cmdline;
// CODE FOR DEBUGGING:
foreach($_SESSION as $variable => $value) {
$varlist .= "Variable Name: " . $variable . " Value: $value
";
}
if ($errcnt > 0) {
echo "";
} else {
echo "";
}
// --- End cleanup and form redirection -------------------------------------
?>