// Path: src/main/java/genepi/imputationserver/util/LegendFileLiftOver.java
// public class LegendFileLiftOver {
// 
// 	public static class LegendFileLiftOverResults{
// 		
// 		public Vector<String> errors;
// 		
// 		public int snpsWritten;
// 		
// 	}
// 	
// 	public static LegendFileLiftOverResults liftOver(String input, String output, String chainFile, String tempDir,
// 			String chromosome) throws IOException {
// 
// 		LineReader reader = new LineReader(input);
// 		GzipLineWriter writer = new GzipLineWriter(output);
// 
// 		LiftOver liftOver = new LiftOver(new File(chainFile));
// 
// 		Vector<String> errors = new Vector<String>();
// 		Vector<String> buffer = new Vector<String>();
// 
// 		// read file and perform lift over
// 		while (reader.next()) {
// 			String line = reader.get();
// 			if (line.startsWith("id")) {
// 				writer.write(line);
// 			} else {
// 
// 				String[] tiles = line.split(" ", 3);
// 				Interval source = new Interval("chr" + chromosome, Integer.parseInt(tiles[1]),
// 						Integer.parseInt(tiles[1]) + 1, false, chromosome + ":" + tiles[1]);
// 				Interval target = liftOver.liftOver(source);
// 				if (target != null) {
// 					if (source.getContig().equals(target.getContig())) {
// 						buffer.add(tiles[0] + " " + target.getStart() + " " + tiles[2]);
// 					} else {
// 						errors.add(target.getContig() + ":" + tiles[1] + "\t" + "LiftOver" + "\t"
// 								+ "On different chromosome after LiftOver. SNP removed.");
// 					}
// 				} else {
// 					errors.add(tiles[0] + ":" + tiles[1] + "\t" + "LiftOver" + "\t" + "LiftOver failed. SNP removed.");
// 				}
// 			}
// 
// 		}
// 
// 		// sort legend file by position
// 		Collections.sort(buffer, new Comparator<String>() {
// 			@Override
// 			public int compare(String o1, String o2) {
// 				String[] tiles1 = o1.split(" ", 3);
// 				String[] tiles2 = o2.split(" ", 3);
// 				int position1 = Integer.parseInt(tiles1[1]);
// 				int position2 = Integer.parseInt(tiles2[1]);
// 				return Integer.compare(position1, position2);
// 			}
// 		});
// 
// 		// write file
// 		for (String line : buffer) {
// 			writer.write(line);
// 		}
// 
// 		reader.close();
// 		writer.close();
// 
// 		LegendFileLiftOverResults result = new LegendFileLiftOverResults();
// 		result.errors = errors;
// 		result.snpsWritten = buffer.size();
// 		
// 		return result;
// 	}
// 
// }
// 
// Path: src/main/java/genepi/imputationserver/util/LegendFileLiftOver.java
// public static class LegendFileLiftOverResults{
// 		
// 	public Vector<String> errors;
// 		
// 	public int snpsWritten;
// 		
// }


import genepi.base.Tool;
import genepi.imputationserver.util.LegendFileLiftOver;
import genepi.imputationserver.util.LegendFileLiftOver.LegendFileLiftOverResults;
import genepi.io.text.LineWriter;
package genepi.imputationserver.tools;


public class LegendFileLiftOverTool extends Tool {

	public LegendFileLiftOverTool(String[] args) {
		super(args);
	}

	@Override
	public void createParameters() {
		addParameter("input", "input vcf file");
		addParameter("output", "output vcf file");
		addParameter("chr", "chromosome");
		addParameter("chain", "chain file");
	}

	@Override
	public void init() {
		System.out.println("LegendFile LiftOver Tool");
		System.out.println("");
	}

	@Override
	public int run() {

		String input = getValue("input").toString();
		String output = getValue("output").toString();
		String chain = getValue("chain").toString();
		String chromosome = getValue("chr").toString();

		try {
// Path: src/main/java/genepi/imputationserver/util/LegendFileLiftOver.java
// public class LegendFileLiftOver {
// 
// 	public static class LegendFileLiftOverResults{
// 		
// 		public Vector<String> errors;
// 		
// 		public int snpsWritten;
// 		
// 	}
// 	
// 	public static LegendFileLiftOverResults liftOver(String input, String output, String chainFile, String tempDir,
// 			String chromosome) throws IOException {
// 
// 		LineReader reader = new LineReader(input);
// 		GzipLineWriter writer = new GzipLineWriter(output);
// 
// 		LiftOver liftOver = new LiftOver(new File(chainFile));
// 
// 		Vector<String> errors = new Vector<String>();
// 		Vector<String> buffer = new Vector<String>();
// 
// 		// read file and perform lift over
// 		while (reader.next()) {
// 			String line = reader.get();
// 			if (line.startsWith("id")) {
// 				writer.write(line);
// 			} else {
// 
// 				String[] tiles = line.split(" ", 3);
// 				Interval source = new Interval("chr" + chromosome, Integer.parseInt(tiles[1]),
// 						Integer.parseInt(tiles[1]) + 1, false, chromosome + ":" + tiles[1]);
// 				Interval target = liftOver.liftOver(source);
// 				if (target != null) {
// 					if (source.getContig().equals(target.getContig())) {
// 						buffer.add(tiles[0] + " " + target.getStart() + " " + tiles[2]);
// 					} else {
// 						errors.add(target.getContig() + ":" + tiles[1] + "\t" + "LiftOver" + "\t"
// 								+ "On different chromosome after LiftOver. SNP removed.");
// 					}
// 				} else {
// 					errors.add(tiles[0] + ":" + tiles[1] + "\t" + "LiftOver" + "\t" + "LiftOver failed. SNP removed.");
// 				}
// 			}
// 
// 		}
// 
// 		// sort legend file by position
// 		Collections.sort(buffer, new Comparator<String>() {
// 			@Override
// 			public int compare(String o1, String o2) {
// 				String[] tiles1 = o1.split(" ", 3);
// 				String[] tiles2 = o2.split(" ", 3);
// 				int position1 = Integer.parseInt(tiles1[1]);
// 				int position2 = Integer.parseInt(tiles2[1]);
// 				return Integer.compare(position1, position2);
// 			}
// 		});
// 
// 		// write file
// 		for (String line : buffer) {
// 			writer.write(line);
// 		}
// 
// 		reader.close();
// 		writer.close();
// 
// 		LegendFileLiftOverResults result = new LegendFileLiftOverResults();
// 		result.errors = errors;
// 		result.snpsWritten = buffer.size();
// 		
// 		return result;
// 	}
// 
// }
// 
// Path: src/main/java/genepi/imputationserver/util/LegendFileLiftOver.java
// public static class LegendFileLiftOverResults{
// 		
// 	public Vector<String> errors;
// 		
// 	public int snpsWritten;
// 		
// }


// Path: src/main/java/genepi/imputationserver/tools/LegendFileLiftOverTool.java
import genepi.base.Tool;
import genepi.imputationserver.util.LegendFileLiftOver;
import genepi.imputationserver.util.LegendFileLiftOver.LegendFileLiftOverResults;
import genepi.io.text.LineWriter;

package genepi.imputationserver.tools;


public class LegendFileLiftOverTool extends Tool {

	public LegendFileLiftOverTool(String[] args) {
		super(args);
	}

	@Override
	public void createParameters() {
		addParameter("input", "input vcf file");
		addParameter("output", "output vcf file");
		addParameter("chr", "chromosome");
		addParameter("chain", "chain file");
	}

	@Override
	public void init() {
		System.out.println("LegendFile LiftOver Tool");
		System.out.println("");
	}

	@Override
	public int run() {

		String input = getValue("input").toString();
		String output = getValue("output").toString();
		String chain = getValue("chain").toString();
		String chromosome = getValue("chr").toString();

		try {
			LegendFileLiftOverResults results = LegendFileLiftOver.liftOver(input, output, chain, "", chromosome);