public static void extractGM(String pathToGMData) {
    String directoryPath = DirectorySettings.getCacheDirectory().getAbsolutePath();
    try {
      File data = new File(pathToGMData);
      ZipFile zipData = new ZipFile(data.getAbsolutePath());
      Enumeration entries = zipData.entries();
      while (entries.hasMoreElements()) {
        ZipEntry entry = (ZipEntry) entries.nextElement();
        if (entry.isDirectory()) {
          (new File(directoryPath + File.separator + entry.getName())).mkdirs();
          continue;
        }

        IOUtils.copy(
            zipData.getInputStream(entry),
            new FileOutputStream(directoryPath + File.separator + entry.getName()));
      }
      zipData.close();
      FileWriter fstream =
          new FileWriter(
              DirectorySettings.getGeneManiaDirectory()
                  + File.separator
                  + DirectorySettings.GENEMANIA_CHECK_FILE);
      BufferedWriter out = new BufferedWriter(fstream);
      out.write("This file indicates that the GeneMANIA data has finished downloading.");
      out.close();
      if (!data.delete()) {
        LOG.error("Couldn't delete GeneMANIA .zip: " + data.getAbsolutePath());
      }

    } catch (IOException ex) {
      java.util.logging.Logger.getLogger(GenemaniaInfoRetriever.class.getName())
          .log(Level.SEVERE, null, ex);
    }
  }
 // returns invalid genes that were not set
 public void setGenes(List<String> geneNames) {
   try {
     this.genes = getValidGenes(geneNames);
   } catch (Exception ex) {
     java.util.logging.Logger.getLogger(GenemaniaInfoRetriever.class.getName())
         .log(Level.SEVERE, null, ex);
   }
 }