extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/vcf/SnpData.java

Code
Comments
Other
Rev Date Author Line
4620 16 Nov 17 nicklas 1 package net.sf.basedb.reggie.vcf;
4620 16 Nov 17 nicklas 2
4620 16 Nov 17 nicklas 3 import org.json.simple.JSONObject;
4620 16 Nov 17 nicklas 4
6455 25 Oct 21 nicklas 5 import net.sf.basedb.util.EqualsHelper;
6455 25 Oct 21 nicklas 6
4620 16 Nov 17 nicklas 7 /**
4620 16 Nov 17 nicklas 8   Holds information about a SNP we found in a VCF file.
4620 16 Nov 17 nicklas 9   If we are parsing more than one file with {@ink VcfParser}
4620 16 Nov 17 nicklas 10   the SNP information will be shared.
4620 16 Nov 17 nicklas 11
4620 16 Nov 17 nicklas 12   @author nicklas
4620 16 Nov 17 nicklas 13   @since 4.13
4620 16 Nov 17 nicklas 14 */
4620 16 Nov 17 nicklas 15 public class SnpData 
4620 16 Nov 17 nicklas 16 {
4620 16 Nov 17 nicklas 17
4620 16 Nov 17 nicklas 18   
4620 16 Nov 17 nicklas 19   private final String id;
4620 16 Nov 17 nicklas 20   
4620 16 Nov 17 nicklas 21   private String chromosome;
4620 16 Nov 17 nicklas 22   private long position;
4620 16 Nov 17 nicklas 23   
4620 16 Nov 17 nicklas 24   private String ref;
4620 16 Nov 17 nicklas 25   private String alt;
7413 10 Nov 23 nicklas 26   private String filter;
4620 16 Nov 17 nicklas 27   
5729 18 Nov 19 nicklas 28   private InfoData info;
5729 18 Nov 19 nicklas 29   
4620 16 Nov 17 nicklas 30   /**
4620 16 Nov 17 nicklas 31     Creates a new instance.
4620 16 Nov 17 nicklas 32     @param The rsId value for the SNP
4620 16 Nov 17 nicklas 33   */
4620 16 Nov 17 nicklas 34   public SnpData(String id)
4620 16 Nov 17 nicklas 35   {
4620 16 Nov 17 nicklas 36     this.id = id;
4620 16 Nov 17 nicklas 37   }
4620 16 Nov 17 nicklas 38
4620 16 Nov 17 nicklas 39   /**
4620 16 Nov 17 nicklas 40     Get the rsId for the SNP.
4620 16 Nov 17 nicklas 41   */
4620 16 Nov 17 nicklas 42   public String getId()
4620 16 Nov 17 nicklas 43   {
4620 16 Nov 17 nicklas 44     return id;
4620 16 Nov 17 nicklas 45   }
4620 16 Nov 17 nicklas 46
4620 16 Nov 17 nicklas 47   /**
4620 16 Nov 17 nicklas 48     Get the chromosome.
4620 16 Nov 17 nicklas 49   */
4620 16 Nov 17 nicklas 50   public String getChromosome() 
4620 16 Nov 17 nicklas 51   {
4620 16 Nov 17 nicklas 52     return chromosome;
4620 16 Nov 17 nicklas 53   }
4620 16 Nov 17 nicklas 54
4620 16 Nov 17 nicklas 55   /**
4620 16 Nov 17 nicklas 56     Set the chromosome.
4620 16 Nov 17 nicklas 57   */
4620 16 Nov 17 nicklas 58   public void setChromosome(String chromosome) 
4620 16 Nov 17 nicklas 59   {
4620 16 Nov 17 nicklas 60     this.chromosome = chromosome;
4620 16 Nov 17 nicklas 61   }
4620 16 Nov 17 nicklas 62
4620 16 Nov 17 nicklas 63   /**
4620 16 Nov 17 nicklas 64     Get the location in the chromosome.
4620 16 Nov 17 nicklas 65   */
4620 16 Nov 17 nicklas 66   public long getPosition()
4620 16 Nov 17 nicklas 67   {
4620 16 Nov 17 nicklas 68     return position;
4620 16 Nov 17 nicklas 69   }
4620 16 Nov 17 nicklas 70
4620 16 Nov 17 nicklas 71   /**
4620 16 Nov 17 nicklas 72     Set the location in the chromosome.
4620 16 Nov 17 nicklas 73   */
4620 16 Nov 17 nicklas 74   public void setPosition(long position) 
4620 16 Nov 17 nicklas 75   {
4620 16 Nov 17 nicklas 76     this.position = position;
4620 16 Nov 17 nicklas 77   }
4620 16 Nov 17 nicklas 78
4620 16 Nov 17 nicklas 79   /**
4620 16 Nov 17 nicklas 80     Get the reference allele. 
4620 16 Nov 17 nicklas 81   */
4620 16 Nov 17 nicklas 82   public String getRef() 
4620 16 Nov 17 nicklas 83   {
4620 16 Nov 17 nicklas 84     return ref;
4620 16 Nov 17 nicklas 85   }
4620 16 Nov 17 nicklas 86
4620 16 Nov 17 nicklas 87   /**
4620 16 Nov 17 nicklas 88     Set the reference allelle.
4620 16 Nov 17 nicklas 89   */
4620 16 Nov 17 nicklas 90   public void setRef(String ref) 
4620 16 Nov 17 nicklas 91   {
4620 16 Nov 17 nicklas 92     this.ref = ref;
4620 16 Nov 17 nicklas 93   }
4620 16 Nov 17 nicklas 94
4620 16 Nov 17 nicklas 95   /**
4620 16 Nov 17 nicklas 96     Get the alternate allelle(s). If more than one
4620 16 Nov 17 nicklas 97     alternate exists, this is a comma-separated list.
4620 16 Nov 17 nicklas 98   */
4620 16 Nov 17 nicklas 99   public String getAlt()
4620 16 Nov 17 nicklas 100   {
4620 16 Nov 17 nicklas 101     return alt;
4620 16 Nov 17 nicklas 102   }
4620 16 Nov 17 nicklas 103
4620 16 Nov 17 nicklas 104   /**
4620 16 Nov 17 nicklas 105     Set the alternate allelle(s). If more than one
4620 16 Nov 17 nicklas 106     alternate exists, this should be comma-separated list.
4620 16 Nov 17 nicklas 107   */
4620 16 Nov 17 nicklas 108   public void setAlt(String alt) 
4620 16 Nov 17 nicklas 109   {
4620 16 Nov 17 nicklas 110     this.alt = alt;
4620 16 Nov 17 nicklas 111   }
4620 16 Nov 17 nicklas 112   
6455 25 Oct 21 nicklas 113   /**
6455 25 Oct 21 nicklas 114     Check if the SNP has the given REF and ALT alleles.
6455 25 Oct 21 nicklas 115     @since 4.34
6455 25 Oct 21 nicklas 116   */
6455 25 Oct 21 nicklas 117   public boolean hasRefAlt(String ref, String alt)
6455 25 Oct 21 nicklas 118   {
6455 25 Oct 21 nicklas 119     return EqualsHelper.equals(this.ref, ref) && EqualsHelper.equals(this.alt, alt);
6455 25 Oct 21 nicklas 120   }
6455 25 Oct 21 nicklas 121   
7413 10 Nov 23 nicklas 122   /**
7413 10 Nov 23 nicklas 123     Get the filter flag.
7413 10 Nov 23 nicklas 124     @since 4.50
7413 10 Nov 23 nicklas 125   */
7413 10 Nov 23 nicklas 126   public String getFilter()
7413 10 Nov 23 nicklas 127   {
7413 10 Nov 23 nicklas 128     return filter;
7413 10 Nov 23 nicklas 129   }
7413 10 Nov 23 nicklas 130   
7413 10 Nov 23 nicklas 131   /**
7413 10 Nov 23 nicklas 132     Set the filter flag.
7413 10 Nov 23 nicklas 133     @since 4.50
7413 10 Nov 23 nicklas 134   */
7413 10 Nov 23 nicklas 135   public void setFilter(String filter)
7413 10 Nov 23 nicklas 136   {
7413 10 Nov 23 nicklas 137     this.filter = filter;
7413 10 Nov 23 nicklas 138   }
7413 10 Nov 23 nicklas 139   
5729 18 Nov 19 nicklas 140   public void setInfo(InfoData info)
5729 18 Nov 19 nicklas 141   {
5729 18 Nov 19 nicklas 142     this.info = info;
5729 18 Nov 19 nicklas 143   }
5729 18 Nov 19 nicklas 144   
5729 18 Nov 19 nicklas 145   public InfoData getInfo()
5729 18 Nov 19 nicklas 146   {
5729 18 Nov 19 nicklas 147     return info;
5729 18 Nov 19 nicklas 148   }
5729 18 Nov 19 nicklas 149
4620 16 Nov 17 nicklas 150   /**
4620 16 Nov 17 nicklas 151     Get all information as a JSON object. A new JSON object 
4620 16 Nov 17 nicklas 152     is created each time this method is called.
4620 16 Nov 17 nicklas 153   */
4620 16 Nov 17 nicklas 154   public JSONObject asJSONObject()
4620 16 Nov 17 nicklas 155   {
4620 16 Nov 17 nicklas 156     JSONObject json = new JSONObject();
4620 16 Nov 17 nicklas 157     json.put("id", getId());
4620 16 Nov 17 nicklas 158     json.put("chromosome", getChromosome());
4620 16 Nov 17 nicklas 159     json.put("position", getPosition());
4620 16 Nov 17 nicklas 160     json.put("ref", getRef());
4620 16 Nov 17 nicklas 161     json.put("alt", getAlt());
5729 18 Nov 19 nicklas 162     if (info != null) 
5729 18 Nov 19 nicklas 163     {
5729 18 Nov 19 nicklas 164       json.put("info", info.asJSONObject());
5729 18 Nov 19 nicklas 165     }
4620 16 Nov 17 nicklas 166     return json;
4620 16 Nov 17 nicklas 167   }
4620 16 Nov 17 nicklas 168
4620 16 Nov 17 nicklas 169   
4620 16 Nov 17 nicklas 170 }