Search in sources :

Example 16 with ImageException

use of cbit.image.ImageException in project vcell by virtualcell.

the class Xmlproducer method getXML.

/**
 * This methods returns a XML represnetation of a VCImage object.
 * Creation date: (3/1/2001 3:02:37 PM)
 * @return Element
 * @param param cbit.image.VCImage
 */
Element getXML(VCImage param) throws XmlParseException {
    Element image = new Element(XMLTags.ImageTag);
    // add atributes
    image.setAttribute(XMLTags.NameAttrTag, mangle(param.getName()));
    // Add annotation
    if (param.getDescription() != null && param.getDescription().length() > 0) {
        Element annotationElement = new Element(XMLTags.AnnotationTag);
        annotationElement.setText(mangle(param.getDescription()));
        image.addContent(annotationElement);
    }
    // Add Imagedata subelement
    byte[] compressedPixels = null;
    try {
        compressedPixels = param.getPixelsCompressed();
    } catch (ImageException e) {
        e.printStackTrace();
        throw new XmlParseException("An ImageParseException occurred when tring to retrieving the compressed Pixels", e);
    }
    Element imagedata = new Element(XMLTags.ImageDataTag);
    // Get imagedata attributes
    imagedata.setAttribute(XMLTags.XAttrTag, String.valueOf(param.getNumX()));
    imagedata.setAttribute(XMLTags.YAttrTag, String.valueOf(param.getNumY()));
    imagedata.setAttribute(XMLTags.ZAttrTag, String.valueOf(param.getNumZ()));
    imagedata.setAttribute(XMLTags.CompressedSizeTag, String.valueOf(compressedPixels.length));
    // Get imagedata content
    // encode
    imagedata.addContent(Hex.toString(compressedPixels));
    // Add imagedata to VCImage element
    image.addContent(imagedata);
    // Add PixelClass elements
    VCPixelClass[] pixelClasses = param.getPixelClasses();
    for (int i = 0; i < pixelClasses.length; i++) {
        image.addContent(getXML(pixelClasses[i]));
    }
    // Add Metadata information
    if (param.getVersion() != null) {
        image.addContent(getXML(param.getVersion(), param));
    }
    return image;
}
Also used : VCPixelClass(cbit.image.VCPixelClass) ImageException(cbit.image.ImageException) Element(org.jdom.Element)

Example 17 with ImageException

use of cbit.image.ImageException in project vcell by virtualcell.

the class StochtestCompareService method compareOne.

public void compareOne() throws IllegalArgumentException, SQLException, DataAccessException, XmlParseException, PropertyVetoException, ExpressionException, MappingException, GeometryException, ImageException, IOException {
    StochtestCompare stochtestCompare = StochtestDbUtils.acceptNextWaitingStochtestCompare(conFactory);
    String biomodelXML = null;
    if (stochtestCompare != null) {
        try {
            StochtestRun stochtestRun1 = StochtestDbUtils.getStochtestRun(conFactory, stochtestCompare.stochtestRun1ref);
            StochtestRun stochtestRun2 = StochtestDbUtils.getStochtestRun(conFactory, stochtestCompare.stochtestRun2ref);
            if (stochtestRun1.status != StochtestRunStatus.complete) {
                throw new RuntimeException("incomplete run status found: " + stochtestRun1.status.name());
            }
            if (stochtestRun2.status != StochtestRunStatus.complete) {
                throw new RuntimeException("incomplete run status found: " + stochtestRun2.status.name());
            }
            TimeSeriesMultitrialData data1 = StochtestFileUtils.readData(StochtestFileUtils.getStochtestRunDataFile(baseDir, stochtestRun1));
            TimeSeriesMultitrialData data2 = StochtestFileUtils.readData(StochtestFileUtils.getStochtestRunDataFile(baseDir, stochtestRun2));
            SummaryStatistics results = TimeSeriesMultitrialData.statisticsSummary(data1, data2);
            XmlUtil.writeXMLStringToFile(results.results(), new File(baseDir, "stochtestcompare_" + stochtestCompare.key + "_summary.txt").getPath(), false);
            StochtestFileUtils.writeVarDiffData(new File(baseDir, "stochtestcompare_" + stochtestCompare.key + "_vardiff.csv"), data1, data2);
            StochtestFileUtils.writeKolmogorovSmirnovTest(new File(baseDir, "stochtestcompare_" + stochtestCompare.key + "_kolmogorovSmirnov.csv"), data1, data2);
            StochtestFileUtils.writeChiSquareTest(new File(baseDir, "stochtestcompare_" + stochtestCompare.key + "_chiSquared.csv"), data1, data2);
            StochtestCompareStatus status = (results.pass()) ? StochtestCompareStatus.not_verydifferent : StochtestCompareStatus.verydifferent;
            StochtestDbUtils.finalizeAcceptedStochtestCompare(conFactory, stochtestCompare, status, null, results);
        } catch (Exception e) {
            StochtestDbUtils.finalizeAcceptedStochtestCompare(conFactory, stochtestCompare, StochtestCompare.StochtestCompareStatus.failed, e.getMessage(), null);
            // 
            // write exception trace to .txt file
            // 
            StringWriter stringWriter = new StringWriter();
            PrintWriter printWriter = new PrintWriter(stringWriter);
            e.printStackTrace(printWriter);
            printWriter.flush();
            System.out.println(stringWriter.getBuffer().toString());
            XmlUtil.writeXMLStringToFile(stringWriter.getBuffer().toString(), new File(baseDir, "stochtestrun_" + stochtestCompare.key + "_error.txt").getPath(), false);
        }
    } else {
        System.out.println("no compare jobs waiting");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
Also used : StochtestCompareStatus(org.vcell.stochtest.StochtestCompare.StochtestCompareStatus) StringWriter(java.io.StringWriter) SummaryStatistics(org.vcell.stochtest.TimeSeriesMultitrialData.SummaryStatistics) File(java.io.File) ImageException(cbit.image.ImageException) IOException(java.io.IOException) DataAccessException(org.vcell.util.DataAccessException) ExpressionException(cbit.vcell.parser.ExpressionException) PropertyVetoException(java.beans.PropertyVetoException) MappingException(cbit.vcell.mapping.MappingException) SQLException(java.sql.SQLException) GeometryException(cbit.vcell.geometry.GeometryException) XmlParseException(cbit.vcell.xml.XmlParseException) PrintWriter(java.io.PrintWriter)

Example 18 with ImageException

use of cbit.image.ImageException in project vcell by virtualcell.

the class StochtestRunService method runOne.

public void runOne() throws IllegalArgumentException, SQLException, DataAccessException, XmlParseException, PropertyVetoException, ExpressionException, MappingException, GeometryException, ImageException, IOException {
    StochtestRun stochtestRun = StochtestDbUtils.acceptNextWaitingStochtestRun(conFactory);
    String biomodelXML = null;
    if (stochtestRun != null) {
        String networkGenProbs = null;
        try {
            User user = new User(PropertyLoader.ADMINISTRATOR_ACCOUNT, new KeyValue(PropertyLoader.ADMINISTRATOR_ID));
            ServerDocumentManager serverDocumentManager = new ServerDocumentManager(this.dbServerImpl);
            biomodelXML = serverDocumentManager.getBioModelXML(new QueryHashtable(), user, stochtestRun.stochtest.biomodelRef, true);
            BioModel bioModel = XmlHelper.XMLToBioModel(new XMLSource(biomodelXML));
            bioModel.refreshDependencies();
            SimulationContext srcSimContext = null;
            for (SimulationContext sc : bioModel.getSimulationContexts()) {
                if (sc.getKey().equals(stochtestRun.stochtest.simContextRef)) {
                    srcSimContext = sc;
                }
            }
            if (srcSimContext == null) {
                throw new RuntimeException("cannot find simcontext with key=" + stochtestRun.stochtest.simContextRef);
            }
            // 
            for (SpeciesContextSpec scs : srcSimContext.getReactionContext().getSpeciesContextSpecs()) {
                scs.setConstant(false);
            }
            SimulationContext simContext = srcSimContext;
            StochtestMathType parentMathType = stochtestRun.parentMathType;
            StochtestMathType mathType = stochtestRun.mathType;
            if (parentMathType != mathType) {
                if (parentMathType == StochtestMathType.nonspatialstochastic && mathType == StochtestMathType.rules) {
                    simContext = SimulationContext.copySimulationContext(srcSimContext, "generatedRules", false, Application.RULE_BASED_STOCHASTIC);
                } else if (parentMathType == StochtestMathType.rules && mathType == StochtestMathType.nonspatialstochastic) {
                    simContext = SimulationContext.copySimulationContext(srcSimContext, "generatedSSA", false, Application.NETWORK_STOCHASTIC);
                } else {
                    throw new RuntimeException("unexpected copy of simcontext from " + parentMathType + " to " + mathType);
                }
                bioModel.addSimulationContext(simContext);
            }
            MathMappingCallback mathMappingCallback = new MathMappingCallback() {

                @Override
                public void setProgressFraction(float fractionDone) {
                }

                @Override
                public void setMessage(String message) {
                }

                @Override
                public boolean isInterrupted() {
                    return false;
                }
            };
            MathMapping mathMapping = simContext.createNewMathMapping(mathMappingCallback, NetworkGenerationRequirements.ComputeFullStandardTimeout);
            MathDescription mathDesc = mathMapping.getMathDescription(mathMappingCallback);
            simContext.setMathDescription(mathDesc);
            if (simContext.isInsufficientIterations()) {
                networkGenProbs = "insufficientIterations";
            } else if (simContext.isInsufficientMaxMolecules()) {
                networkGenProbs = "insufficientMaxMolecules";
            }
            File baseDirectory = StochtestFileUtils.createDirFile(baseDir, stochtestRun);
            try {
                OutputTimeSpec outputTimeSpec = new UniformOutputTimeSpec(0.5);
                double endTime = 10.0;
                computeTrials(simContext, stochtestRun, baseDirectory, outputTimeSpec, endTime, numTrials);
                StochtestDbUtils.finalizeAcceptedStochtestRun(conFactory, stochtestRun, StochtestRun.StochtestRunStatus.complete, null, networkGenProbs);
            } finally {
                StochtestFileUtils.clearDir(baseDirectory);
            }
        } catch (Exception e) {
            StochtestDbUtils.finalizeAcceptedStochtestRun(conFactory, stochtestRun, StochtestRun.StochtestRunStatus.failed, e.getMessage(), networkGenProbs);
            // 
            if (biomodelXML != null) {
                XmlUtil.writeXMLStringToFile(biomodelXML, new File(baseDir, "stochtestrun_" + stochtestRun.stochtest.key + ".vcml").getPath(), false);
            }
            // 
            // write exception trace to .txt file
            // 
            StringWriter stringWriter = new StringWriter();
            PrintWriter printWriter = new PrintWriter(stringWriter);
            e.printStackTrace(printWriter);
            printWriter.flush();
            System.out.println(stringWriter.getBuffer().toString());
            XmlUtil.writeXMLStringToFile(stringWriter.getBuffer().toString(), new File(baseDir, "stochtestrun_" + stochtestRun.stochtest.key + "_error.txt").getPath(), false);
        }
    } else {
        System.out.println("no jobs waiting");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
Also used : QueryHashtable(cbit.sql.QueryHashtable) User(org.vcell.util.document.User) KeyValue(org.vcell.util.document.KeyValue) MathMappingCallback(cbit.vcell.mapping.SimulationContext.MathMappingCallback) UniformOutputTimeSpec(cbit.vcell.solver.UniformOutputTimeSpec) MathDescription(cbit.vcell.math.MathDescription) SimulationContext(cbit.vcell.mapping.SimulationContext) SpeciesContextSpec(cbit.vcell.mapping.SpeciesContextSpec) ServerDocumentManager(cbit.vcell.modeldb.ServerDocumentManager) PropertyVetoException(java.beans.PropertyVetoException) SQLException(java.sql.SQLException) XmlParseException(cbit.vcell.xml.XmlParseException) ImageException(cbit.image.ImageException) IOException(java.io.IOException) DataAccessException(org.vcell.util.DataAccessException) ExpressionException(cbit.vcell.parser.ExpressionException) MappingException(cbit.vcell.mapping.MappingException) GeometryException(cbit.vcell.geometry.GeometryException) UniformOutputTimeSpec(cbit.vcell.solver.UniformOutputTimeSpec) OutputTimeSpec(cbit.vcell.solver.OutputTimeSpec) StringWriter(java.io.StringWriter) BioModel(cbit.vcell.biomodel.BioModel) MathMapping(cbit.vcell.mapping.MathMapping) XMLSource(cbit.vcell.xml.XMLSource) File(java.io.File) PrintWriter(java.io.PrintWriter)

Example 19 with ImageException

use of cbit.image.ImageException in project vcell by virtualcell.

the class ClientRequestManager method createFDOSFromImageFile.

// public void prepareDocumentToLoad(VCDocument doc) throws Exception {
// Simulation[] simulations = null;
// if (doc instanceof MathModel) {
// Geometry geometry = ((MathModel)doc).getMathDescription().getGeometry();
// geometry.precomputeAll();
// simulations = ((MathModel)doc).getSimulations();
// } else if (doc instanceof Geometry) {
// ((Geometry)doc).precomputeAll();
// } else if (doc instanceof BioModel) {
// BioModel bioModel = (BioModel)doc;
// SimulationContext[] simContexts = bioModel.getSimulationContexts();
// for (SimulationContext simContext : simContexts) {
// simContext.getGeometry().precomputeAll();
// }
// simulations = ((BioModel)doc).getSimulations();
// }
// if (simulations != null) {
// // preload simulation status
// VCSimulationIdentifier simIDs[] = new VCSimulationIdentifier[simulations.length];
// for (int i = 0; i < simulations.length; i++){
// simIDs[i] = simulations[i].getSimulationInfo().getAuthoritativeVCSimulationIdentifier();
// }
// getDocumentManager().preloadSimulationStatus(simIDs);
// }
// }
public static FieldDataFileOperationSpec createFDOSFromImageFile(File imageFile, boolean bCropOutBlack, Integer saveOnlyThisTimePointIndex) throws DataFormatException, ImageException {
    try {
        ImageDatasetReader imageDatasetReader = ImageDatasetReaderService.getInstance().getImageDatasetReader();
        ImageDataset[] imagedataSets = imageDatasetReader.readImageDatasetChannels(imageFile.getAbsolutePath(), null, false, saveOnlyThisTimePointIndex, null);
        if (imagedataSets != null && bCropOutBlack) {
            for (int i = 0; i < imagedataSets.length; i++) {
                Rectangle nonZeroRect = imagedataSets[i].getNonzeroBoundingRectangle();
                if (nonZeroRect != null) {
                    imagedataSets[i] = imagedataSets[i].crop(nonZeroRect);
                }
            }
        }
        return createFDOSWithChannels(imagedataSets, null);
    } catch (Exception e) {
        e.printStackTrace(System.out);
        throw new DataFormatException(e.getMessage());
    }
}
Also used : DataFormatException(java.util.zip.DataFormatException) ImageDataset(cbit.vcell.VirtualMicroscopy.ImageDataset) Rectangle(java.awt.Rectangle) ImageDatasetReader(org.vcell.vcellij.ImageDatasetReader) ProgrammingException(org.vcell.util.ProgrammingException) GeometryException(cbit.vcell.geometry.GeometryException) IOException(java.io.IOException) DataAccessException(org.vcell.util.DataAccessException) PropertyVetoException(java.beans.PropertyVetoException) ImageException(cbit.image.ImageException) UtilCancelException(org.vcell.util.UtilCancelException) DataFormatException(java.util.zip.DataFormatException) UserCancelException(org.vcell.util.UserCancelException)

Example 20 with ImageException

use of cbit.image.ImageException in project vcell by virtualcell.

the class ClientRequestManager method createMathModelFromApplication.

/**
 * Insert the method's description here.
 * Creation date: (5/24/2004 12:22:11 PM)
 * @param windowID java.lang.String
 */
public void createMathModelFromApplication(final BioModelWindowManager requester, final String name, final SimulationContext simContext) {
    if (simContext == null) {
        PopupGenerator.showErrorDialog(requester, "Selected Application is null, cannot generate corresponding math model");
        return;
    }
    switch(simContext.getApplicationType()) {
        case NETWORK_STOCHASTIC:
            break;
        case RULE_BASED_STOCHASTIC:
        case NETWORK_DETERMINISTIC:
    }
    AsynchClientTask task1 = new AsynchClientTask("Creating MathModel from BioModel Application", AsynchClientTask.TASKTYPE_NONSWING_BLOCKING) {

        @Override
        public void run(Hashtable<String, Object> hashTable) throws Exception {
            MathModel newMathModel = new MathModel(null);
            // Get corresponding mathDesc to create new mathModel.
            MathDescription mathDesc = simContext.getMathDescription();
            MathDescription newMathDesc = null;
            newMathDesc = new MathDescription(name + "_" + (new java.util.Random()).nextInt());
            try {
                if (mathDesc.getGeometry().getDimension() > 0 && mathDesc.getGeometry().getGeometrySurfaceDescription().getGeometricRegions() == null) {
                    mathDesc.getGeometry().getGeometrySurfaceDescription().updateAll();
                }
            } catch (ImageException e) {
                e.printStackTrace(System.out);
                throw new RuntimeException("Geometric surface generation error:\n" + e.getMessage());
            } catch (GeometryException e) {
                e.printStackTrace(System.out);
                throw new RuntimeException("Geometric surface generation error:\n" + e.getMessage());
            }
            newMathDesc.setGeometry(mathDesc.getGeometry());
            newMathDesc.read_database(new CommentStringTokenizer(mathDesc.getVCML_database()));
            newMathDesc.isValid();
            newMathModel.setName(name);
            newMathModel.setMathDescription(newMathDesc);
            hashTable.put("newMathModel", newMathModel);
        }
    };
    AsynchClientTask task2 = new AsynchClientTask("Creating MathModel from BioModel Application", AsynchClientTask.TASKTYPE_SWING_BLOCKING) {

        @Override
        public void run(Hashtable<String, Object> hashTable) throws Exception {
            MathModel newMathModel = (MathModel) hashTable.get("newMathModel");
            DocumentWindowManager windowManager = createDocumentWindowManager(newMathModel);
            if (simContext.getBioModel().getVersion() != null) {
                ((MathModelWindowManager) windowManager).setCopyFromBioModelAppVersionableTypeVersion(new VersionableTypeVersion(VersionableType.BioModelMetaData, simContext.getBioModel().getVersion()));
            }
            DocumentWindow dw = getMdiManager().createNewDocumentWindow(windowManager);
            setFinalWindow(hashTable, dw);
        }
    };
    ClientTaskDispatcher.dispatch(requester.getComponent(), new Hashtable<String, Object>(), new AsynchClientTask[] { task1, task2 }, false);
}
Also used : AsynchClientTask(cbit.vcell.client.task.AsynchClientTask) MathModel(cbit.vcell.mathmodel.MathModel) ImageException(cbit.image.ImageException) VersionableTypeVersion(org.vcell.util.document.VersionableTypeVersion) SetMathDescription(cbit.vcell.client.task.SetMathDescription) MathDescription(cbit.vcell.math.MathDescription) Hashtable(java.util.Hashtable) GeometryException(cbit.vcell.geometry.GeometryException) Random(java.util.Random) DocumentWindow(cbit.vcell.client.desktop.DocumentWindow) CommentStringTokenizer(org.vcell.util.CommentStringTokenizer) CSGObject(cbit.vcell.geometry.CSGObject)

Aggregations

ImageException (cbit.image.ImageException)34 IOException (java.io.IOException)11 Extent (org.vcell.util.Extent)11 VCImage (cbit.image.VCImage)10 SubVolume (cbit.vcell.geometry.SubVolume)9 SurfaceClass (cbit.vcell.geometry.SurfaceClass)9 PropertyVetoException (java.beans.PropertyVetoException)9 DataAccessException (org.vcell.util.DataAccessException)9 Geometry (cbit.vcell.geometry.Geometry)8 ImageSubVolume (cbit.vcell.geometry.ImageSubVolume)8 Expression (cbit.vcell.parser.Expression)8 VCImageUncompressed (cbit.image.VCImageUncompressed)7 UShortImage (cbit.vcell.VirtualMicroscopy.UShortImage)7 BioModel (cbit.vcell.biomodel.BioModel)7 GeometryException (cbit.vcell.geometry.GeometryException)7 MathDescription (cbit.vcell.math.MathDescription)7 ExpressionException (cbit.vcell.parser.ExpressionException)7 Origin (org.vcell.util.Origin)7 UserCancelException (org.vcell.util.UserCancelException)7 KeyValue (org.vcell.util.document.KeyValue)7