public DataBag exec(Tuple input) throws IOException { DataBag output = DefaultBagFactory.getInstance().newDefaultBag(); if (input == null || input.size() == 0) return null; try { String seq = ((String) input.get(0)); // byte[] ba = ((DataByteArray) input.get(0)).get(); int distance = (Integer) input.get(1); // int seqLength = SequenceString.numBases(ba); // String seq = SequenceString.byteArrayToSequence(ba); Set<String> neighbors = MetaUtils.generateAllNeighborsWithinDistance(seq, distance); for (String n : neighbors) { Tuple t = DefaultTupleFactory.getInstance().newTuple(1); t.set(0, n); output.add(t); } } catch (Exception e) { System.err.println("HammingDistance: failed to process input; error - " + e.getMessage()); return null; } return output; }