/* * Created on Sep 6, 2006 */ package org.seqcode.data.io.parsing.affyexpr; import java.util.*; import java.io.*; /** * @author tdanford */ public class AffyProbeSet { private Map<String,AffyProbe> probes; private Map<String,Set<AffyProbe>> symbol, unigene, locus, name; public AffyProbeSet(File f) throws IOException { probes = new HashMap<String,AffyProbe>(); symbol = new HashMap<String,Set<AffyProbe>>(); unigene = new HashMap<String,Set<AffyProbe>>(); locus = new HashMap<String,Set<AffyProbe>>(); name = new HashMap<String,Set<AffyProbe>>(); BufferedReader br = new BufferedReader(new FileReader(f)); String line = null; while((line = br.readLine()) != null) { line = line.trim(); if(line.length() > 0) { AffyProbe ap = new AffyProbe(line); addProbe(ap); } } br.close(); } private void addProbe(AffyProbe ap) { if(probes.containsKey(ap.getProbeName())) { throw new IllegalArgumentException(ap.getProbeName()); } probes.put(ap.getProbeName(), ap); if(!symbol.containsKey(ap.getGeneSymbol())) { symbol.put(ap.getGeneSymbol(), new HashSet<AffyProbe>()); } symbol.get(ap.getGeneSymbol()).add(ap); if(!unigene.containsKey(ap.getUnigene())) { unigene.put(ap.getUnigene(), new HashSet<AffyProbe>()); } unigene.get(ap.getUnigene()).add(ap); if(!locus.containsKey(ap.getLocusID())) { locus.put(ap.getLocusID(), new HashSet<AffyProbe>()); } locus.get(ap.getLocusID()).add(ap); if(!name.containsKey(ap.getGeneName())) { name.put(ap.getGeneName(), new HashSet<AffyProbe>()); } name.get(ap.getGeneName()).add(ap); } public AffyProbe getAffyProbe(String pn) { return probes.get(pn); } public int size() { return probes.size(); } public Set<AffyProbe> getAllAffyProbes() { return new HashSet<AffyProbe>(probes.values()); } public Set<AffyProbe> lookupGeneSymbol(String v) { return symbol.get(v); } public Set<AffyProbe> lookupUnigene(String v) { return unigene.get(v); } public Set<AffyProbe> lookupLocusID(String v) { return locus.get(v); } public Set<AffyProbe> lookupGeneName(String v) { return name.get(v); } }