public static String diffProvenance(ModelProvenance originalProvenance, ModelProvenance newProvenance) throws JsonProcessingException {

        Iterator<Pair<String, Provenance>> originalIter = originalProvenance.iterator();
        Iterator<Pair<String, Provenance>> newIter = newProvenance.iterator();

        String report = mapper.writeValueAsString(diffProvenanceIterators(originalIter, newIter));
        return report;
    }
@Test
    public void testProvDiffWithTransformTrainer() throws IOException, URISyntaxException {
        //TODO: Expand this to actually assert something
        CSVDataSource<Label> csvSource = getCSVDataSource();
        MutableDataset<Label> datasetFromCSV = new MutableDataset<>(csvSource);

        LogisticRegressionTrainer trainer = new LogisticRegressionTrainer();
        LinearSGDModel model = (LinearSGDModel) trainer.train(datasetFromCSV);

        TransformationMap transformations = new TransformationMap(List.of(new LinearScalingTransformation(0,1)));
        TransformTrainer<Label> transformed = new TransformTrainer<>(trainer, transformations);
        Model<Label> transformedModel = transformed.train(datasetFromCSV);

        String report = ReproUtil.diffProvenance(model.getProvenance(), transformedModel.getProvenance());
        // TODO: Evaluate report value, this requires address fact that timestamps will change so can't just
        //  encode the expected report as String
        //System.out.println(report);
    }