package abra.cadabra; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; /** * Temporary code for adding quality scores to existing VCF files. * * @author lmose */ public class AddQualities { public void run(String filename, boolean isMerged) throws FileNotFoundException, IOException { BufferedReader reader = new BufferedReader(new FileReader(filename)); String line = reader.readLine(); while (line != null) { if (!line.startsWith("#") && (line.contains("CADABRA") || !isMerged)) { line = addQual(line); } System.out.println(line); line = reader.readLine(); } reader.close(); } private String addQual(String line) { String[] fields = line.split("\t"); String[] normalAd = fields[9].split(":")[1].split(","); String[] tumorAd = fields[10].split(":")[1].split(","); int normalRef = Integer.parseInt(normalAd[0]); int normalAlt = Integer.parseInt(normalAd[1]); int tumorRef = Integer.parseInt(tumorAd[0]); int tumorAlt = Integer.parseInt(tumorAd[1]); double qual = Cadabra.calcPhredScaledQuality(normalRef, normalAlt, tumorRef, tumorAlt); fields[5] = String.valueOf(qual); StringBuffer updatedLine = new StringBuffer(); for (String field : fields) { updatedLine.append(field); updatedLine.append('\t'); } // remove trailing tab updatedLine.deleteCharAt(updatedLine.length()-1); return updatedLine.toString(); } public static void main(String[] args) throws Exception { String filename = args[0]; boolean isMerged = args.length > 1 && args[1].equalsIgnoreCase("merged"); AddQualities aq = new AddQualities(); aq.run(filename, isMerged); System.err.println("Add qualities done."); } }