1 package com.github.celldynamics.quimp.plugin.snakes; 2 3 import com.github.celldynamics.quimp.Snake; 4 import com.github.celldynamics.quimp.plugin.IQuimpCorePlugin; 5 import com.github.celldynamics.quimp.plugin.QuimpPluginException; 6 7 /** 8 * General interface that defines filter run on Snakes directly. 9 * 10 * <p>Modification of Node object that form Snake should be done with carefulness. Read 11 * documentation 12 * for Snake 13 * 14 * @author p.baniukiewicz 15 * @see com.github.celldynamics.quimp.plugin.engine.PluginFactory 16 * @see com.github.celldynamics.quimp.Snake 17 */ 18 public interface IQuimpBOASnakeFilter extends IQuimpCorePlugin { 19 20 /** 21 * Runs filter and return filtered points in the same order as input points. 22 * 23 * <p>Number of returned points can be different. 24 * 25 * <p><b>Warning</b> 26 * 27 * <p>Plugin may be run without attached data. Plugin must deal with this 28 * 29 * @return Filtered points 30 * @throws QuimpPluginException on any problems during filter execution 31 */ 32 Snake runPlugin() throws QuimpPluginException; 33 34 /** 35 * Attach processed data to plugin. 36 * 37 * <p>This method allows to process data by plugin without running it what is important e.g. for 38 * visualizing. 39 * 40 * <p><b>Warning</b> 41 * 42 * <p>Plugin may be run without attached data. Plugin must deal with this 43 * 44 * @param data snake to connect 45 */ 46 void attachData(final Snake data); 47 }