use of org.cytoscape.filter.model.NamedTransformer in project cytoscape-impl by cytoscape.
the class FilterIO method readTransformers.
@SuppressWarnings({ "unchecked", "rawtypes" })
public void readTransformers(File file, AbstractPanel panel) throws IOException {
try (BufferedInputStream stream = new BufferedInputStream(new FileInputStream(file))) {
CyTransformerReader reader = serviceRegistrar.getService(CyTransformerReader.class);
NamedTransformer<CyNetwork, CyIdentifiable>[] transformers = (NamedTransformer<CyNetwork, CyIdentifiable>[]) reader.read(stream);
AbstractPanelController controller = panel.getController();
controller.addNamedTransformers(panel, transformers);
}
}
use of org.cytoscape.filter.model.NamedTransformer in project cytoscape-impl by cytoscape.
the class FilterIOTest method testSerializationRoundTrip.
@Test
public void testSerializationRoundTrip() throws Exception {
DegreeFilter degreeFilter = new DegreeFilter();
degreeFilter.setCriterion(new Double[] { 0.2, 5.5 });
degreeFilter.setEdgeType(CyEdge.Type.ANY);
DummyFilter dummyFilter = new DummyFilter();
CyTransformerWriter writer = new CyTransformerWriterImpl();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
writer.write(stream, FilterIO.createNamedTransformer("filter1", degreeFilter), FilterIO.createNamedTransformer("filter2", dummyFilter));
String serialized = stream.toString("utf-8");
TransformerManagerImpl transformerManager = new TransformerManagerImpl();
Map<String, String> properties = Collections.emptyMap();
transformerManager.registerFilterFactory(new DegreeFilterFactory(), properties);
transformerManager.registerFilterFactory(new DummyFilterFactory(), properties);
CyTransformerReaderImpl reader = new CyTransformerReaderImpl();
reader.registerTransformerManager(transformerManager, null);
ByteArrayInputStream inputStream = new ByteArrayInputStream(stream.toByteArray());
NamedTransformer<?, ?>[] transformers = reader.read(inputStream);
ByteArrayOutputStream stream2 = new ByteArrayOutputStream();
writer.write(stream2, transformers);
String serialized2 = stream2.toString("utf-8");
Assert.assertEquals(serialized, serialized2);
}
use of org.cytoscape.filter.model.NamedTransformer in project cytoscape-impl by cytoscape.
the class FilterIOTest method testSubFilterTransformerRoundTrip.
@SuppressWarnings("rawtypes")
@Test
public void testSubFilterTransformerRoundTrip() throws Exception {
ColumnFilter columnFilter = new ColumnFilter();
columnFilter.setColumnName("MyColName");
columnFilter.setPredicateAndCriterion(Predicate.CONTAINS, "blah");
AdjacencyTransformer adjacency = new AdjacencyTransformer();
adjacency.setAction(Action.REPLACE);
adjacency.setEdgesAre(EdgesAre.INCOMING);
adjacency.setFilterTarget(What.EDGES);
adjacency.setOutput(What.EDGES);
adjacency.getCompositeFilter().append(columnFilter);
CyTransformerWriter writer = new CyTransformerWriterImpl();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
writer.write(stream, FilterIO.createNamedTransformer("transformer1", adjacency));
// String serialized = stream.toString("utf-8");
TransformerManagerImpl transformerManager = new TransformerManagerImpl();
Map<String, String> properties = Collections.emptyMap();
transformerManager.registerFilterFactory(new ColumnFilterFactory(), properties);
transformerManager.registerElementTransformerFactory(new AdjacencyTransformerFactory(), properties);
CyTransformerReaderImpl reader = new CyTransformerReaderImpl();
reader.registerTransformerManager(transformerManager, null);
ByteArrayInputStream inputStream = new ByteArrayInputStream(stream.toByteArray());
NamedTransformer<?, ?>[] transformers = reader.read(inputStream);
Assert.assertNotNull(transformers);
Assert.assertEquals(1, transformers.length);
NamedTransformer<?, ?> namedTransformer = transformers[0];
Assert.assertNotNull(namedTransformer);
Assert.assertEquals("transformer1", namedTransformer.getName());
List children = namedTransformer.getTransformers();
Assert.assertEquals(1, children.size());
Transformer child = (Transformer) children.get(0);
Assert.assertNotNull(child);
Assert.assertTrue(child instanceof AdjacencyTransformer);
AdjacencyTransformer adjacency2 = (AdjacencyTransformer) child;
Assert.assertEquals(adjacency.getAction(), adjacency2.getAction());
Assert.assertEquals(adjacency.getEdgesAre(), adjacency2.getEdgesAre());
Assert.assertEquals(adjacency.getFilterTarget(), adjacency2.getFilterTarget());
Assert.assertEquals(adjacency.getOutput(), adjacency2.getOutput());
CompositeFilter<?, ?> composite = adjacency2.getCompositeFilter();
Assert.assertEquals(1, composite.getLength());
Filter filter = composite.get(0);
Assert.assertTrue(filter instanceof ColumnFilter);
ColumnFilter columnFilter2 = (ColumnFilter) filter;
Assert.assertEquals(columnFilter.getColumnName(), columnFilter2.getColumnName());
Assert.assertEquals(columnFilter.getPredicate(), columnFilter2.getPredicate());
Assert.assertEquals(columnFilter.getCriterion(), columnFilter2.getCriterion());
}
use of org.cytoscape.filter.model.NamedTransformer in project cytoscape-impl by cytoscape.
the class TransformerJsonTunable method getTransformer.
public NamedTransformer<CyNetwork, CyIdentifiable> getTransformer(String name, CyTransformerReader transformerReader) {
String wrapper = "[ { \"name\" : \"%s\", \"transformers\" : [ %s ] } ]";
String fullJson = String.format(wrapper, name, json);
byte[] bytes = fullJson.getBytes();
try (InputStream in = new ByteArrayInputStream(bytes)) {
@SuppressWarnings("unchecked") NamedTransformer<CyNetwork, CyIdentifiable>[] transformers = (NamedTransformer<CyNetwork, CyIdentifiable>[]) transformerReader.read(in);
if (transformers == null || transformers.length == 0 || transformers[0] == null) {
return null;
}
return transformers[0];
} catch (Exception e) {
return null;
}
}
use of org.cytoscape.filter.model.NamedTransformer in project cytoscape-impl by cytoscape.
the class CyTransformerReaderImpl method read.
@Override
public NamedTransformer<?, ?>[] read(InputStream stream) throws IOException {
JsonParser parser = factory.createParser(stream);
try {
assertNextToken(parser, JsonToken.START_ARRAY);
List<NamedTransformer<?, ?>> namedTransformers = new ArrayList<NamedTransformer<?, ?>>();
while (parser.nextToken() != JsonToken.END_ARRAY) {
assertEquals(JsonToken.START_OBJECT, parser.getCurrentToken());
assertField(parser, FilterIO.NAME_FIELD);
String name = parser.nextTextValue();
assertField(parser, FilterIO.TRANSFORMERS_FIELD);
assertNextToken(parser, JsonToken.START_ARRAY);
List<Transformer<?, ?>> transformers = new ArrayList<Transformer<?, ?>>();
while (true) {
Transformer<?, ?> transformer = readTransformer(parser);
if (transformer == null) {
break;
}
transformers.add(transformer);
}
assertNextToken(parser, JsonToken.END_OBJECT);
namedTransformers.add(FilterIO.createNamedTransformer(name, transformers));
}
return namedTransformers.toArray(new NamedTransformer[namedTransformers.size()]);
} finally {
parser.close();
}
}
Aggregations