Skip to content

Commit 43a5338

Browse files
authored
Merge pull request #8 from PankratzLab/case_control_file
Add case/control output file
2 parents 1d80884 + 2d67ed6 commit 43a5338

1 file changed

Lines changed: 25 additions & 19 deletions

File tree

src/main/java/org/pankratzlab/internal/gwas/MatchMaker.java

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,11 @@
44
import java.io.File;
55
import java.io.IOException;
66
import java.io.PrintWriter;
7-
import java.nio.file.FileAlreadyExistsException;
87
import java.nio.file.Files;
98
import java.nio.file.Path;
109
import java.nio.file.Paths;
1110
import java.util.ArrayList;
12-
import java.util.Arrays;
13-
import java.util.Collections;
1411
import java.util.HashMap;
15-
import java.util.HashSet;
1612
import java.util.LinkedHashMap;
1713
import java.util.LinkedHashSet;
1814
import java.util.List;
@@ -24,24 +20,24 @@
2420
import java.util.concurrent.ExecutionException;
2521
import java.util.logging.Logger;
2622
import java.util.stream.Collectors;
27-
import java.util.stream.Stream;
2823

29-
import org.apache.commons.io.FileUtils;
3024
import org.pankratzlab.common.ArrayUtils;
3125
import org.pankratzlab.common.HashVec;
3226
import org.pankratzlab.common.Matrix;
3327
import org.pankratzlab.common.PSF;
34-
import org.pankratzlab.internal.gwas.FactorLoadings;
3528
import org.pankratzlab.kdmatch.KDMatch;
3629
import org.pankratzlab.kdmatch.KDTree;
3730
import org.pankratzlab.kdmatch.Match;
3831
import org.pankratzlab.kdmatch.Sample;
3932
import org.pankratzlab.kdmatch.SelectOptimizedNeighbors;
4033

41-
import com.google.common.collect.Sets;
4234
import com.google.common.primitives.Ints;
4335

4436
public class MatchMaker {
37+
private static final String naiveMatchFileName = "match.naive.txt";
38+
private static final String naiveStatusFileName = "status.naive.txt";
39+
private static final String optimizedMatchFileName = "match.optimized.txt";
40+
private static final String optimizedStatusFileName = "status.optimized.txt";
4541

4642
private static List<Match> kdMatchMaker(Path baseDir, Path inputSamples, List<Sample> caseList,
4743
List<Sample> controlList,
@@ -63,9 +59,10 @@ private static List<Match> kdMatchMaker(Path baseDir, Path inputSamples, List<Sa
6359
initialNumSelect)
6460
.collect(Collectors.toList());
6561

66-
String outputBase = baseDir + File.separator + "match.naive.txt";
62+
String outputBaseFileName = baseDir + File.separator + naiveMatchFileName;
63+
String statusBaseFileName = baseDir + File.separator + naiveStatusFileName;
6764
log.info("reporting full baseline selection of " + initialNumSelect + " nearest neighbors to "
68-
+ outputBase);
65+
+ outputBaseFileName);
6966
LinkedHashSet<String> setConvert = new LinkedHashSet<String>();
7067

7168
try {
@@ -75,9 +72,11 @@ private static List<Match> kdMatchMaker(Path baseDir, Path inputSamples, List<Sa
7572
setConvert.add(header[i]);
7673
}
7774
try {
78-
KDMatch.writeToFile(naiveMatches.stream(), outputBase,
75+
KDMatch.writeToFile(naiveMatches.stream(), outputBaseFileName,
7976
setConvert.stream().toArray(String[]::new),
8077
setConvert.stream().toArray(String[]::new), initialNumSelect);
78+
79+
KDMatch.writeSampleStatusFile(naiveMatches.stream(), statusBaseFileName, initialNumSelect);
8180
} catch (IOException e) {
8281
e.printStackTrace();
8382
}
@@ -86,8 +85,8 @@ private static List<Match> kdMatchMaker(Path baseDir, Path inputSamples, List<Sa
8685
System.exit(1);
8786
}
8887

89-
String outputOpt = baseDir + File.separator + "match.optimized.txt";
90-
88+
String outputOptFileName = baseDir + File.separator + optimizedMatchFileName;
89+
String statusOptFileName = baseDir + File.separator + optimizedStatusFileName;
9190
log.info("selecting optimized nearest neighbors");
9291

9392
List<Match> optimizedMatches = null;
@@ -96,10 +95,11 @@ private static List<Match> kdMatchMaker(Path baseDir, Path inputSamples, List<Sa
9695
threads, log)
9796
.collect(Collectors.toList());
9897
log.info("reporting optimized selection of " + finalNumSelect + " nearest neighbors to "
99-
+ outputOpt);
100-
KDMatch.writeToFile(optimizedMatches.stream(), outputOpt,
98+
+ outputOptFileName);
99+
KDMatch.writeToFile(optimizedMatches.stream(), outputOptFileName,
101100
setConvert.stream().toArray(String[]::new),
102101
setConvert.stream().toArray(String[]::new), finalNumSelect);
102+
KDMatch.writeSampleStatusFile(optimizedMatches.stream(), statusOptFileName, finalNumSelect);
103103
} catch (StackOverflowError s1) {
104104
s1.printStackTrace();
105105
log.info("To potentially prevent this StackOverflowError, try increasing the Thread Stack Size with the -Xss argument passed to the java virtual machine (i.e. java -Xss10m)");
@@ -577,9 +577,13 @@ public static void main(String[] args) {
577577
log.info("Starting sample match using k-d tree nearest neighbors.");
578578

579579
try {
580-
File naive = new File(d + "/match.naive.txt");
581-
File optimized = new File(d + "/match.optimized.txt");
582-
if (naive.exists() || optimized.exists()) {
580+
List<String> fileNames = List.of(naiveMatchFileName, naiveStatusFileName,
581+
optimizedMatchFileName, optimizedStatusFileName);
582+
final Path finalD = d;
583+
boolean outputExists = fileNames.stream()
584+
.map(name -> new File(finalD + File.separator + name))
585+
.anyMatch(File::exists);
586+
if (outputExists) {
583587
log.info("Output already exists.");
584588
System.exit(0);
585589
}
@@ -597,7 +601,9 @@ public static void main(String[] args) {
597601
loadingIndicesForVis[s] = loadingIndicesForVis[s] - 1;
598602
}
599603
for (int i = 0; i < finalNumSelect; i++) {
600-
buildVisHelpers(d, Paths.get(optimized.toString()), samples, i, log);
604+
Path resultsFile = Paths.get(new File(d + File.separator
605+
+ optimizedMatchFileName).toString());
606+
buildVisHelpers(d, resultsFile, samples, i, log);
601607
if (!onlyBuildVisFiles) {
602608
new MatchesVisualized(d.toString(), samples.toString(),
603609
d + "/visual_helpers/vis_helper_factors.temp",

0 commit comments

Comments
 (0)