/* * The MIT License (MIT) * * Copyright (c) 2007-2015 Broad Institute * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.broad.igv.util; import java.io.*; import java.util.HashSet; /** * @author jrobinso */ public class IlluminaUtils { public static final String LOCUS_DELIMITER = "///"; public static void main(String[] args) throws IOException { File annotFile = new File( "/Users/jrobinso/IGV/ProbeAnnotations/illumina"); File outputFile = new File( "/Users/jrobinso/IGV/ProbeAnnotations/illumina_probe_gene_mapping.txt"); createProbeMappingFile(annotFile, outputFile); } static void createProbeMappingFile(File inputDir, File outputFile) throws IOException { BufferedReader reader = null; PrintWriter pw = null; HashSet<String> processedProbes = new HashSet(100000); try { int dupCount = 0; pw = new PrintWriter(outputFile); for (File inputFile : inputDir.listFiles()) { System.out.println(inputFile.getName()); reader = new BufferedReader(new FileReader(inputFile)); String nextLine; while ((nextLine = reader.readLine()) != null) { String[] tokens = nextLine.split("\t"); boolean isMIArray = inputFile.getName().endsWith("MAP.txt"); int probeColumn = isMIArray ? 3 : 13; int chrColumn = isMIArray ? 19 : 18; int coordColumn = 20; int probeSeqColumn = 4; if (tokens.length > coordColumn) { int probeLength = tokens[probeSeqColumn].trim().length(); String probe = tokens[probeColumn].trim(); if (processedProbes.contains(probe)) { dupCount++; } else { processedProbes.add(probe); String chr = "chr" + tokens[chrColumn].trim(); String[] coords = tokens[coordColumn].split(":"); pw.print(probe + "\t"); for (int i = 0; i < coords.length; i++) { pw.print(chr + ":" + coords[i]); if (isMIArray) { pw.print("-" + (Integer.parseInt(coords[i]) + probeLength)); } if (i < coords.length - 1) { pw.print(LOCUS_DELIMITER); } } pw.println(); } } } reader.close(); reader = null; } System.out.println("# overlapping probes = " + dupCount); } finally { if (reader != null) { reader.close(); } pw.close(); } } }