Skip to content
Snippets Groups Projects
Select Git revision
  • 58285aacfce1d74df5e55aa288dee0daf78b2b55
  • master default protected
2 results

fq_demux.py

Blame
  • ImageAnalysisModule.java 7.28 KiB
    package plugins.nherve.toolbox.imageanalysis;
    
    import icy.preferences.IcyPreferences;
    import icy.preferences.XMLPreferences;
    
    import java.awt.Color;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javax.swing.JPanel;
    
    import plugins.nherve.toolbox.Algorithm;
    import plugins.nherve.toolbox.image.mask.Mask;
    import plugins.nherve.toolbox.image.mask.MaskException;
    import plugins.nherve.toolbox.image.mask.MaskStack;
    
    
    public abstract class ImageAnalysisModule extends Algorithm {
    	public final static int STOPPED = 1;
    	public final static int RUNNING = 2;
    	public final static int FINISHED = 3;
    	
    	private int state;
    	private String name;
    	private List<String> neededParameters;
    	private ImageAnalysisModule parentModule;
    	private boolean linkWithFollowing;
    	private boolean debugEnabled;
    	
    	private Map<ImageAnalysisModuleListener, ImageAnalysisModuleListener> listeners;
    	
    	public ImageAnalysisModule(String name) {
    		super();
    		state = STOPPED;
    		setName(name);
    		neededParameters = new ArrayList<String>();
    		listeners = new HashMap<ImageAnalysisModuleListener, ImageAnalysisModuleListener>();
    		parentModule = null;
    		setLinkWithFollowing(false);
    		setDebugEnabled(false);
    	}
    	
    	public void addListener(ImageAnalysisModuleListener l) {
    		listeners.put(l, l);
    	}
    	
    	protected boolean addNeededParameter(String p) {
    		return neededParameters.add(getParameterInternalName(p));
    	}
    	
    	public abstract boolean analyze(ImageAnalysisContext context) throws ImageAnalysisException;
    	
    	public void checkParametersBeforeAnalysis(ImageAnalysisContext context) throws ImageAnalysisParameterException {
    		String missing = "";
    		for (String p : neededParameters) {
    			if (!context.containsParameter(p)) {
    				if (missing.length() > 0) {
    					missing += ", ";
    				}
    				missing += p;
    			}
    		}
    		if (missing.length() > 0) {
    			throw new ImageAnalysisParameterException("Missing parameters for " + getName() + ": " + missing);
    		}
    	}
    	
    	public Mask createBackgroundMask(ImageAnalysisContext context, String label) throws MaskException {
    		MaskStack stack = context.getStack();
    		Mask msk = stack.createBackgroundMask(label, Color.WHITE);
    		tag(context, msk);
    		return msk;
    	}
    
    	public abstract JPanel createGUI(ImageAnalysisParameters defaultParameters);
    	
    	
    	public Mask createNewMask(ImageAnalysisContext context, String label) throws MaskException {
    		MaskStack stack = context.getStack();
    		Mask msk = stack.createNewMask(label, true, Color.WHITE, 1.0f);
    		tag(context, msk);
    		return msk;
    	}
    	
    	protected void fireChangeEvent() {
    		// log("** " + getName() + " fireChangeEvent("+state+")");
    		for (ImageAnalysisModuleListener l : listeners.keySet()) {
    			l.statutsChanged(this);
    		}
    	}
    	
    	public String getName() {
    		return name;
    	}
    	
    	public Object getObject(ImageAnalysisContext context, String k) {
    		return context.getObject(k);
    	}
    	
    	public boolean getParameterAsBoolean(ImageAnalysisContext context, String p) throws ImageAnalysisParameterException {
    		return context.getParameterAsBoolean(getParameterInternalName(p));
    	}
    	
    	public boolean getParameterAsBoolean(ImageAnalysisParameters parameters, String p) throws ImageAnalysisParameterException {
    		return parameters.getParameterAsBoolean(getParameterInternalName(p));
    	}
    
    	public double getParameterAsDouble(ImageAnalysisContext context, String p) throws ImageAnalysisParameterException {
    		return context.getParameterAsDouble(getParameterInternalName(p));
    	}
    
    	public double getParameterAsDouble(ImageAnalysisParameters parameters, String p) throws ImageAnalysisParameterException {
    		return parameters.getParameterAsDouble(getParameterInternalName(p));
    	}
    
    	public int getParameterAsInt(ImageAnalysisContext context, String p) throws ImageAnalysisParameterException {
    		return context.getParameterAsInt(getParameterInternalName(p));
    	}
    
    	public int getParameterAsInt(ImageAnalysisParameters parameters, String p) throws ImageAnalysisParameterException {
    		return parameters.getParameterAsInt(getParameterInternalName(p));
    	}
    
    	public String getParameterAsString(ImageAnalysisContext context, String p) throws ImageAnalysisParameterException {
    		return context.getParameterAsString(getParameterInternalName(p));
    	}
    	
    	public String getParameterAsString(ImageAnalysisParameters parameters, String p) throws ImageAnalysisParameterException {
    		return parameters.getParameterAsString(getParameterInternalName(p));
    	}
    
    	public String getParameterInternalName(String p) {
    		return getName() + "_" + p;
    	}
    	
    	public abstract void getParametersFromGui(JPanel p, ImageAnalysisContext c);
    	
    	public ImageAnalysisModule getParentModule() {
    		return parentModule;
    	}
    
    	public int getState() {
    		return state;
    	}
    	
    	public boolean needSequence() {
    		return true;
    	}
    	
    	public abstract void populateWithDefaultParameterValues(ImageAnalysisParameters parameters);
    	
    	public void populateWithDefaultParameterValues(ImageAnalysisContext ctx) {
    		populateWithDefaultParameterValues(ctx.getParameters());
    	}
    	
    	public void putObject(ImageAnalysisContext context, String k, Object v) {
    		context.putObject(k, v);
    	}
    
    
    
    	public void removeListener(ImageAnalysisModuleListener l) {
    		listeners.remove(l);		
    	}
    
    	public void removeObject(ImageAnalysisContext context, String k) {
    		context.removeObject(k);
    	}
    
    	protected void setName(String name) {
    		this.name = name;
    	}
    
    	public void setParameter(ImageAnalysisContext context, String p, boolean v) {
    		context.setParameter(getParameterInternalName(p), v);
    	}
    
    	public void setParameter(ImageAnalysisContext context, String p, double v) {
    		context.setParameter(getParameterInternalName(p), v);
    	}
    
    	public void setParameter(ImageAnalysisContext context, String p, int v) {
    		context.setParameter(getParameterInternalName(p), v);
    	}
    
    	public void setParameter(ImageAnalysisContext context, String p, String v) {
    		context.setParameter(getParameterInternalName(p), v);
    	}
    
    	public void setParameter(ImageAnalysisParameters parameters, String p, boolean v) {
    		parameters.setParameter(getParameterInternalName(p), v);
    	}
    
    	public void setParameter(ImageAnalysisParameters parameters, String p, double v) {
    		parameters.setParameter(getParameterInternalName(p), v);
    	}
    
    	public void setParameter(ImageAnalysisParameters parameters, String p, int v) {
    		parameters.setParameter(getParameterInternalName(p), v);
    	}
    
    	public void setParameter(ImageAnalysisParameters parameters, String p, String v) {
    		parameters.setParameter(getParameterInternalName(p), v);
    	}
    
    	public void setParentModule(ImageAnalysisModule parentModule) {
    		this.parentModule = parentModule;
    	}
    
    	public void setState(int state, boolean propagate) {
    		this.state = state;
    		fireChangeEvent();
    	}
    
    	public void stopAnalyze(ImageAnalysisContext context) throws ImageAnalysisException {
    	}
    
    	public void tag(ImageAnalysisContext context, Mask msk) {
    		if (parentModule != null) {
    			parentModule.tag(context, msk);
    		}
    		msk.addTag(getName());
    	}
    	
    	public String toString() {
    		return getName();
    	}
    
    	public boolean isLinkWithFollowing() {
    		return linkWithFollowing;
    	}
    
    	public void setLinkWithFollowing(boolean linkWithFollowing) {
    		this.linkWithFollowing = linkWithFollowing;
    	}
    	
    	public XMLPreferences getPreferences() {
    		return IcyPreferences.pluginsRoot().node(getClass().getName());
    	}
    
    	public boolean isDebugEnabled() {
    		return debugEnabled;
    	}
    
    	public void setDebugEnabled(boolean debugEnabled) {
    		this.debugEnabled = debugEnabled;
    	}
    }