diff --git a/uk/ac/sanger/artemis/components/variant/VCFRecord.java b/uk/ac/sanger/artemis/components/variant/VCFRecord.java
index e96b68f02a9edf476537d6f75a54b281f205c517..a9d9ba6f98c1c7a3ab9b6ce04bc9c0f1a65ef812 100644
--- a/uk/ac/sanger/artemis/components/variant/VCFRecord.java
+++ b/uk/ac/sanger/artemis/components/variant/VCFRecord.java
@@ -29,7 +29,7 @@ class VCFRecord
   protected String alt;
   protected String ref;
   protected String filter;
-  protected String seqID;
+  protected String chrom;
   protected int pos;
   protected float quality;
   protected String info;
@@ -38,10 +38,45 @@ class VCFRecord
   
   public String toString()
   {
-    return seqID+"\t"+pos+"\t"+ID+"\t"+ref+"\t"+alt+"\t"+quality+
+    return chrom+"\t"+pos+"\t"+ID+"\t"+ref+"\t"+alt+"\t"+quality+
            "\t"+filter+"\t"+info+"\t"+format+"\t"+getSampleDataString();
   }
   
+  /**
+   * Parse a VCF line and return a VCFRecord
+   * @param line
+   * @return
+   */
+  protected static VCFRecord parse(String line)
+  {
+    VCFRecord rec = new VCFRecord();
+    String parts[] = line.split("\\t");
+
+    rec.chrom = parts[0];
+    rec.pos   = Integer.parseInt(parts[1]);
+    rec.ID    = parts[2];
+    rec.ref   = parts[3];
+    rec.alt   = parts[4];
+    rec.quality = Float.parseFloat(parts[5]);
+    rec.filter  = parts[6];
+    rec.info    = parts[7];
+    
+    if(parts.length > 9)
+    {
+      rec.format  = parts[8].trim();
+      int nsamples = parts.length-9;
+      int nfmt = rec.format.split(":").length;
+      
+      rec.data = new String[nsamples][nfmt];
+      for(int i=0; i<nsamples; i++)
+      {
+        String data[] = parts[9+i].split(":");
+        rec.data[i] = data;
+      }
+    }
+    return rec;
+  }
+  
   /**
    * Return the sample data as a tab-delimited string
    * @return