JAL-2738 accept .csi, default to GRCh37:homo_sapiens if no ##reference
[jalview.git] / src / jalview / io / vcf / VCFLoader.java
index 9831af7..04c73b5 100644 (file)
@@ -100,10 +100,12 @@ public class VCFLoader
    */
   private static final String VCF_ASSEMBLY = "VCF_ASSEMBLY";
 
-  private static final String DEFAULT_VCF_ASSEMBLY = "assembly19=GRCh38,hs37=GRCh37,grch37=GRCh37,grch38=GRCh38";
+  private static final String DEFAULT_VCF_ASSEMBLY = "assembly19=GRCh37,hs37=GRCh37,grch37=GRCh37,grch38=GRCh38";
 
   private static final String VCF_SPECIES = "VCF_SPECIES"; // default is human
 
+  private static final String DEFAULT_REFERENCE = "grch37"; // fallback default is human GRCh37
+
   /*
    * keys to fields of VEP CSQ consequence data
    * see https://www.ensembl.org/info/docs/tools/vep/vep_formats.html
@@ -263,7 +265,12 @@ public class VCFLoader
   public SequenceI loadVCFContig(String contig)
   {
     VCFHeaderLine headerLine = header.getOtherHeaderLine(VCFHeader.REFERENCE_KEY);
-    String ref = headerLine == null ? null : headerLine.getValue();
+    if (headerLine == null)
+    {
+      Cache.log.error("VCF reference header not found");
+      return null;
+    }
+    String ref = headerLine.getValue();
     if (ref.startsWith("file://"))
     {
       ref = ref.substring(7);
@@ -282,7 +289,7 @@ public class VCFLoader
     }
     else
     {
-      System.err.println("VCF reference not found: " + ref);
+      Cache.log.error("VCF reference not found: " + ref);
     }
 
     return seq;
@@ -301,7 +308,7 @@ public class VCFLoader
     {
       VCFHeaderLine ref = header
               .getOtherHeaderLine(VCFHeader.REFERENCE_KEY);
-      String reference = ref.getValue();
+      String reference = ref == null ? null : ref.getValue();
 
       setSpeciesAndAssembly(reference);
 
@@ -373,8 +380,11 @@ public class VCFLoader
    */
   protected void setSpeciesAndAssembly(String reference)
   {
+    if (reference == null)
+    {
+      reference = DEFAULT_REFERENCE; // default to GRCh37 if not specified
+    }
     reference = reference.toLowerCase();
-    vcfSpecies = DEFAULT_SPECIES;
 
     /*
      * for a non-human species, or other assembly identifier,
@@ -397,6 +407,7 @@ public class VCFLoader
       }
     }
 
+    vcfSpecies = DEFAULT_SPECIES;
     prop = Cache.getProperty(VCF_SPECIES);
     if (prop != null)
     {