package org.seqcode.deepseq; import java.util.ArrayList; import java.util.List; /** * Read represents the sequence tag which is generated by a short read sequencer. <br> * Each <tt>Read</tt> can map to different locations (<tt>ReadHits</tt>) on * the genome (if non-unique hits are supported) * * Read and ReadHit are only used as a convenient way to represent multiply mapping reads when reading from certain file formats. * @author mahony * */ public class Read { protected List<ReadHit> hits = new ArrayList<ReadHit>(); protected float numHits=0; //have to store this separately because we can't always trust the size of the hits list public Read(){ } //Accessor public double getNumHits(){return (double)hits.size();} public void setNumHits(float n){ numHits=n; float w = 1/numHits; for(ReadHit x : hits){ x.setWeight(w); } } public void addHit(ReadHit h){addHit(h, true);} public void addHit(ReadHit h, boolean updateWeight){ //First add the hit hits.add(h); numHits++; if(updateWeight){ //Now propagate the effect of adding the hit to the read weights float w = 1/numHits; for(ReadHit x : hits){ x.setWeight(w); } } } public List<ReadHit> getHits(){return hits;} }