/** This method will process each argument and assign new varibles */
  public void processArgs(String[] args) {
    File file = null;
    Pattern pat = Pattern.compile("-[a-z]");
    for (int i = 0; i < args.length; i++) {
      String lcArg = args[i].toLowerCase();
      Matcher mat = pat.matcher(lcArg);
      if (mat.matches()) {
        char test = args[i].charAt(1);
        try {
          switch (test) {
            case 'f':
              file = new File(args[i + 1]);
              i++;
              break;
            case 'v':
              genomeVersion = args[i + 1];
              i++;
              break;
            case 's':
              sumScores = true;
              break;
            case 't':
              threshold = Float.parseFloat(args[++i]);
              break;
            case 'h':
              printDocs();
              System.exit(0);
            default:
              Misc.printExit("\nError, unknown option! " + mat.group());
          }
        } catch (Exception e) {
          System.out.print("\nSorry, something doesn't look right with this parameter: -" + test);
          System.out.println();
          System.exit(0);
        }
      }
    }
    if (file == null || file.exists() == false)
      Misc.printErrAndExit("Problem finding your bed files!\n");
    // pull files
    File[][] tot = new File[3][];
    tot[0] = IO.extractFiles(file, ".bed");
    tot[1] = IO.extractFiles(file, ".bed.zip");
    tot[2] = IO.extractFiles(file, ".bed.gz");
    bedFiles = IO.collapseFileArray(tot);
    if (bedFiles == null || bedFiles.length == 0)
      Misc.printErrAndExit("Problem finding your xxx.bed(.zip/.gz OK) files!\n");

    // genome version
    if (genomeVersion == null)
      Misc.printErrAndExit(
          "Please enter a genome version (e.g. H_sapiens_Mar_2006, see http://genome.ucsc.edu/FAQ/FAQreleases\n");
  }
  /** This method will process each argument and assign new varibles */
  public void processArgs(String[] args) {
    Pattern pat = Pattern.compile("-[a-z]");
    File dir = null;
    for (int i = 0; i < args.length; i++) {
      String lcArg = args[i].toLowerCase();
      Matcher mat = pat.matcher(lcArg);
      if (mat.matches()) {
        char test = args[i].charAt(1);
        try {
          switch (test) {
            case 'f':
              dir = new File(args[i + 1]);
              i++;
              break;
            case 'v':
              genomeVersion = args[i + 1];
              i++;
              break;
            case 's':
              strand = args[++i];
              break;
            case 't':
              stairStep = true;
              break;
            case 'h':
              printDocs();
              System.exit(0);
            default:
              Misc.printExit("\nError: unknown option! " + mat.group());
          }
        } catch (Exception e) {
          Misc.printExit(
              "\nSorry, something doesn't look right with this parameter: -" + test + "\n");
        }
      }
    }
    if (dir == null || dir.canRead() == false)
      Misc.printExit("\nError: cannot find or read your sgr file/ directory.\n");
    File[][] tot = new File[3][];
    tot[0] = IO.extractFiles(dir, ".sgr");
    tot[1] = IO.extractFiles(dir, ".sgr.zip");
    tot[2] = IO.extractFiles(dir, ".sgr.gz");
    sgrFiles = IO.collapseFileArray(tot);

    if (sgrFiles == null || sgrFiles.length == 0)
      Misc.printExit("\nError: cannot find your xxx.sgr.zip file(s)");
    if (genomeVersion == null)
      Misc.printExit(
          "\nError: you must supply a genome version. Goto http://genome.ucsc.edu/cgi-"
              + "bin/hgGateway load your organism to find the associated genome version.\n");
  }
  /** This method will process each argument and assign new variables */
  public void processArgs(String[] args) {
    Pattern pat = Pattern.compile("-[a-z]");
    File forExtraction = null;
    for (int i = 0; i < args.length; i++) {
      String lcArg = args[i].toLowerCase();
      Matcher mat = pat.matcher(lcArg);
      if (mat.matches()) {
        char test = args[i].charAt(1);
        try {
          switch (test) {
            case 'v':
              forExtraction = new File(args[++i]);
              break;
            case 'm':
              minimumSSC = Float.parseFloat(args[++i]);
              break;
            case 'a':
              minimumCount = Integer.parseInt(args[++i]);
              break;
            case 'r':
              minimumAbsFractionChange = Double.parseDouble(args[++i]);
              break;
            case 'n':
              maximumNormalAltFraction = Double.parseDouble(args[++i]);
              break;
            default:
              Misc.printErrAndExit("\nProblem, unknown option! " + mat.group());
          }
        } catch (Exception e) {
          Misc.printErrAndExit(
              "\nSorry, something doesn't look right with this parameter: -" + test + "\n");
        }
      }
    }
    System.out.println(
        "\n" + IO.fetchUSeqVersion() + " Arguments: " + Misc.stringArrayToString(args, " ") + "\n");

    // pull vcf files
    if (forExtraction == null || forExtraction.exists() == false)
      Misc.printErrAndExit(
          "\nError: please enter a path to a vcf file or directory containing such.\n");
    File[][] tot = new File[3][];
    tot[0] = IO.extractFiles(forExtraction, ".vcf");
    tot[1] = IO.extractFiles(forExtraction, ".vcf.gz");
    tot[2] = IO.extractFiles(forExtraction, ".vcf.zip");
    vcfFiles = IO.collapseFileArray(tot);
    if (vcfFiles == null || vcfFiles.length == 0 || vcfFiles[0].canRead() == false)
      Misc.printExit("\nError: cannot find your xxx.vcf(.zip/.gz OK) file(s)!\n");
  }
  /** This method will process each argument and assign new variables */
  public void processArgs(String[] args) {
    Pattern pat = Pattern.compile("-[a-z]");
    File forExtraction = null;
    File ucscDir = null;
    for (int i = 0; i < args.length; i++) {
      String lcArg = args[i].toLowerCase();
      Matcher mat = pat.matcher(lcArg);
      if (mat.matches()) {
        char test = args[i].charAt(1);
        try {
          switch (test) {
            case 'b':
              forExtraction = new File(args[++i]);
              break;
            case 'd':
              ucscDir = new File(args[++i]);
              break;
            case 'v':
              versionedGenome = args[++i];
              break;
            case 'e':
              verbose = false;
              break;
            case 'f':
              forceConversion = true;
              break;
            case 'h':
              printDocs();
              System.exit(0);
              break;
            default:
              USeqUtilities.printExit("\nProblem, unknown option! " + mat.group());
          }
        } catch (Exception e) {
          USeqUtilities.printExit(
              "\nSorry, something doesn't look right with this parameter: -" + test + "\n");
        }
      }
    }
    if (verbose)
      System.out.println(
          "\n"
              + IO.fetchUSeqVersion()
              + " Arguments: "
              + USeqUtilities.stringArrayToString(args, " ")
              + "\n");

    // versioned genome?
    if (versionedGenome == null)
      USeqUtilities.printExit(
          "\nError: you must supply a genome version. Goto http://genome.ucsc.edu/cgi-"
              + "bin/hgGateway load your organism to find the associated genome version (e.g. H_sapiens_Mar_2006, H_sapiens_Feb_2009).\n");

    // make files
    if (ucscDir == null || ucscDir.isDirectory() == false)
      USeqUtilities.printExit(
          "\nCannot find your directory containing the UCSC wig2BigWig and bed2BigBed apps -> "
              + ucscDir);
    bigWigToWig = new File(ucscDir, "bigWigToWig");
    bigBedToBed = new File(ucscDir, "bigBedToBed");

    // check files
    // if (bigWigToBedGraph.canExecute() == false) USeqUtilities.printExit("\nCannot find or execute
    // -> "+bigWigToBedGraph+"\n");
    if (bigWigToWig.canExecute() == false)
      USeqUtilities.printExit("\nCannot find or execute -> " + bigWigToWig + "\n");
    if (bigBedToBed.canExecute() == false)
      USeqUtilities.printExit("\nCannot find or execute -> " + bigBedToBed + "\n");

    // pull ucsc files
    if (forExtraction == null || forExtraction.exists() == false)
      Misc.printExit(
          "\nError: please enter a bw or bb file or directory containing such to convert!\n");
    File[][] tot = new File[2][];
    tot[0] = USeqUtilities.fetchFilesRecursively(forExtraction, ".bw");
    tot[1] = USeqUtilities.fetchFilesRecursively(forExtraction, ".bb");

    ucscArchives = IO.collapseFileArray(tot);
    if (ucscArchives == null || ucscArchives.length == 0 || ucscArchives[0].canRead() == false)
      Misc.printExit("\nError: cannot find or read any xxx.bb or xxx.bw file(s)!\n");
  }