@Override
  public ExampleSet read() throws OperatorException {
    FileInputStream inStream = null;
    try {
      inStream = new FileInputStream(getParameterAsFile(PARAMETER_FASTA_FILE_NAME));
    } catch (FileNotFoundException e) {
      // TODO: "Fill"
    }
    FastaReader<DNASequence, NucleotideCompound> fastaReader =
        new FastaReader<DNASequence, NucleotideCompound>(
            inStream,
            new GenericFastaHeaderParser<DNASequence, NucleotideCompound>(),
            new DNASequenceCreator(DNACompoundSet.getDNACompoundSet()));
    LinkedHashMap<String, DNASequence> b = null;
    try {
      b = fastaReader.process();
    } catch (Exception e) {
      // TODO: "Fill"
    }
    String data[][] = new String[0][];
    if (b != null) {
      data = new String[b.size()][2];
      int i = 0;
      for (Map.Entry<String, DNASequence> entry : b.entrySet()) {
        data[i][0] = entry.getValue().getOriginalHeader();
        data[i][1] = entry.getValue().getSequenceAsString();
        i++;
      }
    }

    ExampleSet outSet = ExampleSetFactory.createExampleSet(data);
    outSet.getAttributes().get("att1").setName("DNA name");
    outSet.getAttributes().get("att2").setName("Chain");
    return outSet;
  }
  @Override
  public ExampleSet read() throws OperatorException {
    FileInputStream inStream = null;
    try {
      inStream = new FileInputStream(getParameterAsFile(PARAMETER_FASTA_NAME));
    } catch (FileNotFoundException e) {
      // TODO: "Fill"
    }
    FastaReader<DNASequence, NucleotideCompound> fastaReader =
        new FastaReader<DNASequence, NucleotideCompound>(
            inStream,
            new GenericFastaHeaderParser<DNASequence, NucleotideCompound>(),
            new DNASequenceCreator(DNACompoundSet.getDNACompoundSet()));
    LinkedHashMap<String, DNASequence> genome = null;
    try {
      genome = fastaReader.process();
    } catch (Exception e) {
      // TODO: "Fill"
    }

    ORMFinder finder = new ORMFinder();
    ArrayList<DNASequence> startTrip = new ArrayList<DNASequence>();
    startTrip.add(new DNASequence("ATG")); // +
    startTrip.add(new DNASequence("TTG")); // +
    startTrip.add(new DNASequence("CTG")); // +
    startTrip.add(new DNASequence("ATT")); // +
    startTrip.add(new DNASequence("ATC")); // --
    startTrip.add(new DNASequence("ATA")); // --
    startTrip.add(new DNASequence("GTG")); // +
    ArrayList<DNASequence> stopTrip = new ArrayList<DNASequence>();
    stopTrip.add(new DNASequence("TAA"));
    stopTrip.add(new DNASequence("TAG"));
    stopTrip.add(new DNASequence("TGA"));
    ArrayList<String> orfs = null;
    ArrayList<String> starts = null;
    ArrayList<String> stops = null;
    for (Map.Entry<String, DNASequence> entry : genome.entrySet()) {
      orfs =
          finder.find(
              entry.getValue(), getParameterAsInt(PARAMETER_ORF_MIN_LENGTH), startTrip, stopTrip);
      starts = finder.getStarts();
      stops = finder.getStops();
    }

    String data[][] = null;
    if (orfs != null) {
      data = new String[orfs.size()][4];
    }
    for (int i = 0; (i < orfs.size()) && (i < starts.size()) && (i < stops.size()); i++) {
      int annotationEnd = orfs.get(i).indexOf(")");
      String currentAnotation = orfs.get(i).substring(0, annotationEnd + 1);
      String currentOrf = orfs.get(i).substring(annotationEnd + 2, orfs.get(i).length() - 1);
      data[i][0] = currentAnotation;
      data[i][1] = currentOrf;
      data[i][2] = starts.get(i).toString();
      data[i][3] = stops.get(i).toString();
    }
    ExampleSet outSet = ExampleSetFactory.createExampleSet(data);
    outSet.getAttributes().get("att1").setName("Annotation");
    outSet.getAttributes().get("att2").setName("Chain");
    outSet.getAttributes().get("att3").setName("Start position");
    outSet.getAttributes().get("att4").setName("Stop position");
    return outSet;
  }