package org.seqcode.data.core.tools; import java.io.*; import java.util.Collection; import org.seqcode.genome.Genome; import org.seqcode.gseutils.Args; /** * Replaces a chromosome name with its ID in a column of tab-delimited text. * * eg, * cat PPG_D5_WCE-iHoxc6_1.bowtie.align.gz | gunzip | java org.seqcode.data.readdb.BowtieToReadDB | \ * java org.seqcode.data.core.tools.ChromColumn2ID --species "$MM;mm8" --column 0 * */ public class ChromColumn2ID { public static void main(String args[]) throws Exception { Genome genome = Args.parseGenome(args).cdr(); Collection<String> fs = Args.parseStrings(args,"column"); boolean reverse = Args.parseFlags(args).contains("reverse"); int fields[] = new int[fs.size()]; int i = 0; for (String fieldstring : fs) { fields[i++] = Integer.parseInt(fieldstring); } BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String line; StringBuffer out = new StringBuffer(); while ((line = reader.readLine()) != null) { String pieces[] = line.split("\\t"); for (i = 0; i < fields.length; i++) { int field = fields[i]; if (reverse) { pieces[field] = genome.getChromName(Integer.parseInt(pieces[field])); } else { pieces[field] = Integer.toString(genome.getChromID(pieces[field].replaceAll("^chr",""))); } } out.delete(0,out.length()); out.append(pieces[0]); for (i = 1; i < pieces.length ; i++) { out.append("\t" + pieces[i]); } System.out.println(out.toString()); } } }