44import java .io .File ;
55import java .io .IOException ;
66import java .io .PrintWriter ;
7- import java .nio .file .FileAlreadyExistsException ;
87import java .nio .file .Files ;
98import java .nio .file .Path ;
109import java .nio .file .Paths ;
1110import java .util .ArrayList ;
12- import java .util .Arrays ;
13- import java .util .Collections ;
1411import java .util .HashMap ;
15- import java .util .HashSet ;
1612import java .util .LinkedHashMap ;
1713import java .util .LinkedHashSet ;
1814import java .util .List ;
2420import java .util .concurrent .ExecutionException ;
2521import java .util .logging .Logger ;
2622import java .util .stream .Collectors ;
27- import java .util .stream .Stream ;
2823
29- import org .apache .commons .io .FileUtils ;
3024import org .pankratzlab .common .ArrayUtils ;
3125import org .pankratzlab .common .HashVec ;
3226import org .pankratzlab .common .Matrix ;
3327import org .pankratzlab .common .PSF ;
34- import org .pankratzlab .internal .gwas .FactorLoadings ;
3528import org .pankratzlab .kdmatch .KDMatch ;
3629import org .pankratzlab .kdmatch .KDTree ;
3730import org .pankratzlab .kdmatch .Match ;
3831import org .pankratzlab .kdmatch .Sample ;
3932import org .pankratzlab .kdmatch .SelectOptimizedNeighbors ;
4033
41- import com .google .common .collect .Sets ;
4234import com .google .common .primitives .Ints ;
4335
4436public class MatchMaker {
@@ -63,9 +55,10 @@ private static List<Match> kdMatchMaker(Path baseDir, Path inputSamples, List<Sa
6355 initialNumSelect )
6456 .collect (Collectors .toList ());
6557
66- String outputBase = baseDir + File .separator + "match.naive.txt" ;
58+ String outputBaseFileName = baseDir + File .separator + "match.naive.txt" ;
59+ String statusBaseFileName = baseDir + File .separator + "status.naive.txt" ;
6760 log .info ("reporting full baseline selection of " + initialNumSelect + " nearest neighbors to "
68- + outputBase );
61+ + outputBaseFileName );
6962 LinkedHashSet <String > setConvert = new LinkedHashSet <String >();
7063
7164 try {
@@ -75,9 +68,11 @@ private static List<Match> kdMatchMaker(Path baseDir, Path inputSamples, List<Sa
7568 setConvert .add (header [i ]);
7669 }
7770 try {
78- KDMatch .writeToFile (naiveMatches .stream (), outputBase ,
71+ KDMatch .writeToFile (naiveMatches .stream (), outputBaseFileName ,
7972 setConvert .stream ().toArray (String []::new ),
8073 setConvert .stream ().toArray (String []::new ), initialNumSelect );
74+
75+ KDMatch .writeSampleStatusFile (naiveMatches .stream (), statusBaseFileName , initialNumSelect );
8176 } catch (IOException e ) {
8277 e .printStackTrace ();
8378 }
@@ -86,8 +81,8 @@ private static List<Match> kdMatchMaker(Path baseDir, Path inputSamples, List<Sa
8681 System .exit (1 );
8782 }
8883
89- String outputOpt = baseDir + File .separator + "match.optimized.txt" ;
90-
84+ String outputOptFileName = baseDir + File .separator + "match.optimized.txt" ;
85+ String statusOptFileName = baseDir + File . separator + "status.optimized.txt" ;
9186 log .info ("selecting optimized nearest neighbors" );
9287
9388 List <Match > optimizedMatches = null ;
@@ -96,10 +91,11 @@ private static List<Match> kdMatchMaker(Path baseDir, Path inputSamples, List<Sa
9691 threads , log )
9792 .collect (Collectors .toList ());
9893 log .info ("reporting optimized selection of " + finalNumSelect + " nearest neighbors to "
99- + outputOpt );
100- KDMatch .writeToFile (optimizedMatches .stream (), outputOpt ,
94+ + outputOptFileName );
95+ KDMatch .writeToFile (optimizedMatches .stream (), outputOptFileName ,
10196 setConvert .stream ().toArray (String []::new ),
10297 setConvert .stream ().toArray (String []::new ), finalNumSelect );
98+ KDMatch .writeSampleStatusFile (optimizedMatches .stream (), statusOptFileName , finalNumSelect );
10399 } catch (StackOverflowError s1 ) {
104100 s1 .printStackTrace ();
105101 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)" );
0 commit comments