Search in sources :

Example 21 with ExternalDataIdentifier

use of org.vcell.util.document.ExternalDataIdentifier in project vcell by virtualcell.

the class DataSymbolsPanel method addVFrapOriginalImages.

private void addVFrapOriginalImages() {
    // add dataset (normal images) from vFrap
    AsynchClientTask[] taskArray = new AsynchClientTask[5];
    // select the desired vfrap file
    taskArray[0] = ChooseVFrapFile();
    taskArray[1] = new AsynchClientTask("Import objects", AsynchClientTask.TASKTYPE_NONSWING_BLOCKING) {

        public void run(Hashtable<String, Object> hashTable) throws Exception {
            File vFrapFile = (File) hashTable.get("vFrapFile");
            Component requesterComponent = DataSymbolsPanel.this;
            DocumentWindow documentWindow = (DocumentWindow) BeanUtils.findTypeParentOfComponent(requesterComponent, DocumentWindow.class);
            DocumentManager documentManager = documentWindow.getTopLevelWindowManager().getRequestManager().getDocumentManager();
            if (documentManager == null) {
                throw new RuntimeException("Not connected to server.");
            }
            // ex  ccc8.vfrap
            String vFrapFileNameExtended = vFrapFile.getName();
            {
                // we want to make sure to reload these strings from the hash later on
                String initialFieldDataName = vFrapFileNameExtended.substring(0, vFrapFileNameExtended.indexOf(".vfrap"));
                // we'll save here the "special" vFrap images (prebleach_avg, ...)
                String mixedFieldDataName = initialFieldDataName + "Mx";
                hashTable.put("initialFieldDataName", initialFieldDataName);
                hashTable.put("mixedFieldDataName", mixedFieldDataName);
            }
            if (vFrapFileNameExtended.indexOf(".vfrap") <= -1) {
                throw new RuntimeException("File extension must be .vfrap");
            }
            // normal images
            checkNameAvailability(hashTable, false, documentManager, requesterComponent);
            // ----- read needed info from Virtual FRAP xml file
            System.out.println("Loading " + vFrapFileNameExtended + " ...");
            String xmlString = XmlUtil.getXMLString(vFrapFile.getAbsolutePath());
            MicroscopyXmlReader xmlReader = new MicroscopyXmlReader(true);
            Element vFrapRoot = XmlUtil.stringToXML(xmlString, null).getRootElement();
            // loading frap images
            AnnotatedImageDataset annotatedImages = xmlReader.getAnnotatedImageDataset(vFrapRoot, null);
            hashTable.put("annotatedImages", annotatedImages);
            // loading ROIs for display purposes only (see next task)
            ROI[] rois = xmlReader.getPrimaryROIs(XmlUtil.stringToXML(xmlString, null).getRootElement(), null);
            LoadVFrapDisplayRoi(hashTable, annotatedImages, rois);
        // Calendar cal = Calendar.getInstance();
        // SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_hhmmss");
        // DocumentWindow documentWindow = (DocumentWindow)BeanUtils.findTypeParentOfComponent(DataSymbolsPanel.this, DocumentWindow.class);
        // DocumentManager documentManager = documentWindow.getTopLevelWindowManager().getRequestManager().getDocumentManager();
        // VFrapXmlHelper vFrapXmlHelper = new VFrapXmlHelper();
        // if(vFrapXmlHelper.isAlreadyImported(vFrapFileName, documentManager)) {
        // throw new RuntimeException("FieldData name already in use.");
        // }
        // //				bioModel.setName(vFrapFileName + "-" + sdf.format(cal.getTime()));
        // bioModel.setName(vFrapFileName);
        // BioModel feedbackModel =  documentManager.save(bioModel, null);
        // BioModelChildSummary  childSummary = BioModelChildSummary.fromDatabaseSerialization(xmlString);
        // BioModelInfo biomodelInfo = new BioModelInfo(feedbackModel.getVersion(), feedbackModel.getVersion().getVersionKey(), childSummary );
        // documentWindow.getTopLevelWindowManager().getRequestManager().openDocument(biomodelInfo, documentWindow.getTopLevelWindowManager(), true);
        }
    };
    // show the images from the vfrap file in an OverlayEditorPanelJAI dialog
    taskArray[2] = new AsynchClientTask("Display images", AsynchClientTask.TASKTYPE_SWING_BLOCKING) {

        public void run(Hashtable<String, Object> hashTable) throws Exception {
            String initialFieldDataName = (String) hashTable.get("initialFieldDataName");
            if (initialFieldDataName.equals("")) {
                JOptionPane.showMessageDialog(DataSymbolsPanel.this, "Field Data name " + initialFieldDataName + " already in use.");
                // prevents the rest of tasks below from running
                throw UserCancelException.CANCEL_GENERIC;
            }
            AnnotatedImageDataset annotatedImages = (AnnotatedImageDataset) hashTable.get("annotatedImages");
            BufferedImage[] displayROI = (BufferedImage[]) hashTable.get("displayROI");
            if (annotatedImages == null || displayROI == null) {
                return;
            }
            // display the images
            OverlayEditorPanelJAI overlayPanel = new OverlayEditorPanelJAI();
            overlayPanel.setAllowAddROI(false);
            ImageDataset imageDataset = annotatedImages.getImageDataset();
            overlayPanel.setImages(imageDataset, 1, 0, new OverlayEditorPanelJAI.AllPixelValuesRange(1, 200));
            overlayPanel.setAllROICompositeImage(displayROI, OverlayEditorPanelJAI.FRAP_DATA_INIT_PROPERTY);
            int choice = DialogUtils.showComponentOKCancelDialog(DataSymbolsPanel.this, overlayPanel, "vFrap Field Data");
            if (choice != JOptionPane.OK_OPTION) {
                throw UserCancelException.CANCEL_GENERIC;
            }
        }
    };
    // save the timepoints from memory to the database as field data
    taskArray[3] = new AsynchClientTask("Saving time series data", AsynchClientTask.TASKTYPE_NONSWING_BLOCKING) {

        public void run(Hashtable<String, Object> hashTable) throws Exception {
            AnnotatedImageDataset annotatedImages = (AnnotatedImageDataset) hashTable.get("annotatedImages");
            String initialFieldDataName = (String) hashTable.get("initialFieldDataName");
            DocumentWindow documentWindow = (DocumentWindow) BeanUtils.findTypeParentOfComponent(DataSymbolsPanel.this, DocumentWindow.class);
            DocumentManager dm = documentWindow.getTopLevelWindowManager().getRequestManager().getDocumentManager();
            if (dm == null) {
                throw new RuntimeException("Not connected to server.");
            }
            User owner = null;
            Version version = simulationContext.getVersion();
            if (version == null) {
                // new document, so the owner is the user
                owner = dm.getUser();
            } else {
                owner = simulationContext.getVersion().getOwner();
            }
            // mesh
            ImageDataset imageDataset = annotatedImages.getImageDataset();
            Extent extent = imageDataset.getExtent();
            ISize isize = imageDataset.getISize();
            Origin origin = new Origin(0, 0, 0);
            CartesianMesh cartesianMesh = CartesianMesh.createSimpleCartesianMesh(origin, extent, isize, new RegionImage(new VCImageUncompressed(null, new byte[isize.getXYZ()], extent, isize.getX(), isize.getY(), isize.getZ()), 0, null, null, RegionImage.NO_SMOOTHING));
            // save field data
            int NumTimePoints = imageDataset.getImageTimeStamps().length;
            int NumChannels = 1;
            double[][][] pixData = new double[NumTimePoints][NumChannels][];
            for (int i = 0; i < NumTimePoints; i++) {
                // images according to zIndex at specific time points(tIndex)
                short[] originalData = imageDataset.getPixelsZ(0, i);
                double[] doubleData = new double[originalData.length];
                for (int j = 0; j < originalData.length; j++) {
                    doubleData[j] = 0x0000ffff & originalData[j];
                }
                pixData[i][NumChannels - 1] = doubleData;
            }
            FieldDataFileOperationSpec timeSeriesFieldDataOpSpec = new FieldDataFileOperationSpec();
            timeSeriesFieldDataOpSpec.opType = FieldDataFileOperationSpec.FDOS_ADD;
            timeSeriesFieldDataOpSpec.cartesianMesh = cartesianMesh;
            timeSeriesFieldDataOpSpec.doubleSpecData = pixData;
            timeSeriesFieldDataOpSpec.specEDI = null;
            timeSeriesFieldDataOpSpec.varNames = new String[] { SimulationContext.FLUOR_DATA_NAME };
            timeSeriesFieldDataOpSpec.owner = owner;
            timeSeriesFieldDataOpSpec.times = imageDataset.getImageTimeStamps();
            timeSeriesFieldDataOpSpec.variableTypes = new VariableType[] { VariableType.VOLUME };
            timeSeriesFieldDataOpSpec.origin = origin;
            timeSeriesFieldDataOpSpec.extent = extent;
            timeSeriesFieldDataOpSpec.isize = isize;
            // realignment for the case when first timepoint is not zero
            if (timeSeriesFieldDataOpSpec.times[0] != 0) {
                double shift = timeSeriesFieldDataOpSpec.times[0];
                for (int i = 0; i < NumTimePoints; i++) {
                    timeSeriesFieldDataOpSpec.times[i] -= shift;
                }
            }
            Calendar cal = Calendar.getInstance();
            SimpleDateFormat sdf = new SimpleDateFormat("yyMMMdd_hhmmss");
            String formattedDate = sdf.format(cal.getTime());
            hashTable.put("formattedDate", formattedDate);
            // ExternalDataIdentifier timeSeriesEDI = dm.saveFieldData(timeSeriesFieldDataOpSpec,
            // initialFieldDataName + "_" + formattedDate);
            ExternalDataIdentifier timeSeriesEDI = dm.saveFieldData(timeSeriesFieldDataOpSpec, initialFieldDataName);
            hashTable.put("imageDataset", imageDataset);
            hashTable.put("timeSeriesEDI", timeSeriesEDI);
        }
    };
    // create the data symbols for the images saved above and display them in the tree/table
    taskArray[4] = new AsynchClientTask("Display Data Symbols", AsynchClientTask.TASKTYPE_SWING_BLOCKING) {

        public void run(Hashtable<String, Object> hashTable) throws Exception {
            // --- create the data symbols associated with the time series
            String initialFieldDataName = (String) hashTable.get("initialFieldDataName");
            ImageDataset imageDataset = (ImageDataset) hashTable.get("imageDataset");
            ExternalDataIdentifier timeSeriesEDI = (ExternalDataIdentifier) hashTable.get("timeSeriesEDI");
            for (double time : imageDataset.getImageTimeStamps()) {
                // String fluorName = TokenMangler.fixTokenStrict("fluor_"+time+"_");
                // while (simulationContext.getDataContext().getDataSymbol(fluorName)!=null){
                // fluorName = TokenMangler.getNextEnumeratedToken(fluorName);
                // }
                // max time interval we can display is about 11 days
                DecimalFormat df = new DecimalFormat("###000.00");
                // String fluorName = "fluor_" + df.format(time) + "_" + formattedDate;
                String fluorName = "fluor_" + df.format(time).substring(0, df.format(time).indexOf(".")) + "s" + df.format(time).substring(1 + df.format(time).indexOf(".")) + "_" + initialFieldDataName;
                // FieldFunctionArguments fluorFFArgs = new FieldFunctionArguments(timeSeriesEDI.getName(), fluorName, new Expression(time), VariableType.VOLUME);
                DataSymbol fluorDataSymbol = new FieldDataSymbol(fluorName, DataSymbolType.VFRAP_TIMEPOINT, simulationContext.getDataContext(), simulationContext.getModel().getUnitSystem().getInstance_TBD(), timeSeriesEDI, SimulationContext.FLUOR_DATA_NAME, VariableType.VOLUME.getTypeName(), time);
                simulationContext.getDataContext().addDataSymbol(fluorDataSymbol);
            }
        }
    };
    Hashtable<String, Object> hash = new Hashtable<String, Object>();
    ClientTaskDispatcher.dispatch(this, hash, taskArray, false, true, null);
// String name = null;
// try {
// getNewDataSymbolPanel().setSymbolName("");
// getNewDataSymbolPanel().setSymbolExpression("vcField(dataset1,var1,0.0,Volume)");
// int newSettings = org.vcell.util.gui.DialogUtils.showComponentOKCancelDialog(this, getNewDataSymbolPanel(), "New DataSymbol");
// if (newSettings == JOptionPane.OK_OPTION) {
// name = getNewDataSymbolPanel().getSymbolName();
// String expression = getNewDataSymbolPanel().getSymbolExpression();
// Expression exp = new Expression(expression);
// FunctionInvocation[] functionInvocations = exp.getFunctionInvocations(null);
// //			DataSymbol ds = new FieldDataSymbol(DataSymbolType.GENERIC_SYMBOL, name, "",
// //					simulationContext.getDataContext(), VCUnitDefinition.UNIT_TBD,
// //					new FieldFunctionArguments(functionInvocations[0]));
// DataSymbol ds = new FieldDataSymbol(name, DataSymbolType.GENERIC_SYMBOL,
// simulationContext.getDataContext(), VCUnitDefinition.UNIT_TBD);
// simulationContext.getDataContext().addDataSymbol(ds);
// }
// } catch (java.lang.Throwable ivjExc) {
// DialogUtils.showErrorDialog(this, "Data symbol " + name + " already exists");
// }
}
Also used : Origin(org.vcell.util.Origin) AsynchClientTask(cbit.vcell.client.task.AsynchClientTask) User(org.vcell.util.document.User) AnnotatedImageDataset(cbit.vcell.VirtualMicroscopy.importer.AnnotatedImageDataset) ImageDataset(cbit.vcell.VirtualMicroscopy.ImageDataset) Extent(org.vcell.util.Extent) ISize(org.vcell.util.ISize) FieldDataFileOperationSpec(cbit.vcell.field.io.FieldDataFileOperationSpec) Element(org.jdom.Element) DecimalFormat(java.text.DecimalFormat) BufferedImage(java.awt.image.BufferedImage) Version(org.vcell.util.document.Version) ExternalDataIdentifier(org.vcell.util.document.ExternalDataIdentifier) Component(java.awt.Component) AnnotatedImageDataset(cbit.vcell.VirtualMicroscopy.importer.AnnotatedImageDataset) VariableType(cbit.vcell.math.VariableType) Hashtable(java.util.Hashtable) Calendar(java.util.Calendar) DocumentManager(cbit.vcell.clientdb.DocumentManager) VCImageUncompressed(cbit.image.VCImageUncompressed) UserCancelException(org.vcell.util.UserCancelException) DocumentWindow(cbit.vcell.client.desktop.DocumentWindow) MicroscopyXmlReader(cbit.vcell.VirtualMicroscopy.importer.MicroscopyXmlReader) FieldDataSymbol(cbit.vcell.data.FieldDataSymbol) DataSymbol(cbit.vcell.data.DataSymbol) CartesianMesh(cbit.vcell.solvers.CartesianMesh) RegionImage(cbit.vcell.geometry.RegionImage) File(java.io.File) OverlayEditorPanelJAI(cbit.vcell.geometry.gui.OverlayEditorPanelJAI) SimpleDateFormat(java.text.SimpleDateFormat) FieldDataSymbol(cbit.vcell.data.FieldDataSymbol)

Example 22 with ExternalDataIdentifier

use of org.vcell.util.document.ExternalDataIdentifier in project vcell by virtualcell.

the class SimulationDatabaseDirect method getFieldDataIdentifierSpecs.

@Override
public FieldDataIdentifierSpec[] getFieldDataIdentifierSpecs(Simulation sim) throws DataAccessException {
    try {
        KeyValue simKey = sim.getKey();
        if (lg.isTraceEnabled())
            lg.trace("Get FieldDataIdentifierSpec for [" + simKey + "]");
        FieldDataIdentifierSpec[] fieldDataIDSs = (FieldDataIdentifierSpec[]) simFieldDataIDMap.get(simKey);
        if (fieldDataIDSs != null) {
            return fieldDataIDSs;
        }
        FieldFunctionArguments[] fieldFuncArgs = FieldUtilities.getFieldFunctionArguments(sim.getMathDescription());
        if (fieldFuncArgs == null || fieldFuncArgs.length == 0) {
            fieldDataIDSs = new FieldDataIdentifierSpec[0];
            simFieldDataIDMap.put(simKey, fieldDataIDSs);
            return fieldDataIDSs;
        }
        fieldDataIDSs = new FieldDataIdentifierSpec[0];
        User owner = sim.getVersion().getOwner();
        FieldDataDBOperationSpec fieldDataDbOperationSpec = FieldDataDBOperationSpec.createGetExtDataIDsSpec(owner);
        FieldDataDBOperationResults fieldDataDBOperationResults = databaseServerImpl.fieldDataDBOperation(owner, fieldDataDbOperationSpec);
        ExternalDataIdentifier[] externalDataIDs = fieldDataDBOperationResults.extDataIDArr;
        if (externalDataIDs != null && externalDataIDs.length != 0 && fieldFuncArgs != null && fieldFuncArgs.length > 0) {
            Vector<FieldDataIdentifierSpec> fieldDataIdV = new Vector<FieldDataIdentifierSpec>();
            for (int j = 0; fieldFuncArgs != null && j < fieldFuncArgs.length; j += 1) {
                for (int i = 0; i < externalDataIDs.length; i += 1) {
                    if (externalDataIDs[i].getName().equals(fieldFuncArgs[j].getFieldName())) {
                        fieldDataIdV.add(new FieldDataIdentifierSpec(fieldFuncArgs[j], externalDataIDs[i]));
                        break;
                    }
                }
            }
            if (fieldDataIdV.size() > 0) {
                fieldDataIDSs = new FieldDataIdentifierSpec[fieldDataIdV.size()];
                fieldDataIdV.copyInto(fieldDataIDSs);
            }
        }
        simFieldDataIDMap.put(simKey, fieldDataIDSs);
        return fieldDataIDSs;
    } catch (Exception ex) {
        lg.error(ex.getMessage(), ex);
        throw new DataAccessException(ex.getMessage());
    }
}
Also used : KeyValue(org.vcell.util.document.KeyValue) User(org.vcell.util.document.User) FieldFunctionArguments(cbit.vcell.field.FieldFunctionArguments) UpdateSynchronizationException(cbit.vcell.server.UpdateSynchronizationException) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) SQLException(java.sql.SQLException) XmlParseException(cbit.vcell.xml.XmlParseException) DataAccessException(org.vcell.util.DataAccessException) FieldDataIdentifierSpec(cbit.vcell.field.FieldDataIdentifierSpec) ExternalDataIdentifier(org.vcell.util.document.ExternalDataIdentifier) FieldDataDBOperationResults(cbit.vcell.field.FieldDataDBOperationResults) FieldDataDBOperationSpec(cbit.vcell.field.FieldDataDBOperationSpec) Vector(java.util.Vector) DataAccessException(org.vcell.util.DataAccessException)

Example 23 with ExternalDataIdentifier

use of org.vcell.util.document.ExternalDataIdentifier in project vcell by virtualcell.

the class ResultSetCrawler method scanUserDirectory.

/**
 * Insert the method's description here.
 * Creation date: (2/2/01 3:40:29 PM)
 */
private static void scanUserDirectory(File userDir, ExternalDataIdentifier[] extDataIDArr, SimulationInfo[] simulationInfos, File outputDir, final boolean bScanOnly, AmplistorUtils.AmplistorCredential amplistorCredential) throws Exception {
    File outputFile = null;
    java.io.PrintWriter writer = null;
    try {
        long timestamp = new Date().getTime();
        outputFile = new File(outputDir, "ResultSetCrawler_" + userDir.getName() + "_" + timestamp + ".txt");
        writer = new java.io.PrintWriter(new java.io.FileOutputStream(outputFile));
        final PrintWriter pw = writer;
        pw.println("scanning directory : " + userDir.getPath());
        if (lg.isTraceEnabled())
            lg.trace("scanning directory : " + userDir.getPath());
        // 
        // gather list of keys that should be retained.
        // 
        final HashSet<KeyValue> referencedKeys = new HashSet<KeyValue>();
        for (ExternalDataIdentifier extDataId : extDataIDArr) {
            referencedKeys.add(extDataId.getKey());
        }
        for (SimulationInfo simulationInfo : simulationInfos) {
            referencedKeys.add(simulationInfo.getSimulationVersion().getVersionKey());
        }
        if (amplistorCredential != null) {
            try {
                if (bScanOnly) {
                    ArrayList<String> shouldBeDeleted = AmplistorUtils.deleteSimFilesNotInHash(AmplistorUtils.DEFAULT_AMPLI_SERVICE_VCELL_URL + userDir.getName(), referencedKeys, bScanOnly, amplistorCredential);
                    for (String fileName : shouldBeDeleted) {
                        pw.println("Should delete Amplistor " + fileName);
                        if (lg.isTraceEnabled())
                            lg.trace("Should delete Amplistor " + fileName);
                    }
                } else {
                    ArrayList<String> wasDeleted = AmplistorUtils.deleteSimFilesNotInHash(AmplistorUtils.DEFAULT_AMPLI_SERVICE_VCELL_URL + userDir.getName(), referencedKeys, bScanOnly, amplistorCredential);
                    for (String fileName : wasDeleted) {
                        pw.println("deleted Amplistor " + fileName);
                        if (lg.isTraceEnabled())
                            lg.trace("deleted Amplistor " + fileName);
                    }
                }
            } catch (Exception e) {
                if (lg.isTraceEnabled())
                    lg.trace("Amplistor delete failed url=" + AmplistorUtils.DEFAULT_AMPLI_SERVICE_VCELL_URL + userDir.getName() + " : " + e.getMessage());
                pw.println("Amplistor delete failed url=" + AmplistorUtils.DEFAULT_AMPLI_SERVICE_VCELL_URL + userDir.getName() + " : " + e.getMessage());
            }
        }
        final HashMap<KeyValue, Integer> deletedKeyMap = new HashMap<KeyValue, Integer>();
        // 
        // visit each file and delete it on the fly (through a FileFilter)
        // 
        FileFilter fileVisitor = new FileFilter() {

            @Override
            public boolean accept(File file) {
                String filename = file.getName();
                String[] parts = filename.split("\\_|\\.");
                if (parts.length > 0 && parts[0].equals("SimID")) {
                    if (parts.length > 1) {
                        String simkeyString = parts[1];
                        try {
                            KeyValue simKey = new KeyValue(simkeyString);
                            if (!referencedKeys.contains(simKey)) {
                                Integer count = deletedKeyMap.get(simKey);
                                if (count == null) {
                                    deletedKeyMap.put(simKey, 1);
                                    count = 1;
                                } else {
                                    deletedKeyMap.put(simKey, 1 + count.intValue());
                                }
                                if (bScanOnly) {
                                    pw.println("Should delete file(" + count + ") with key " + simKey + " : " + file.getPath());
                                    if (lg.isTraceEnabled())
                                        lg.trace("Should delete file(" + count + ") with key " + simKey + " : " + file.getPath());
                                } else {
                                    pw.println("deleted file(" + simKey + ":" + count + ") " + file.getPath());
                                    if (lg.isTraceEnabled())
                                        lg.trace("deleted file(" + simKey + ":" + count + ") " + file.getPath());
                                    file.delete();
                                }
                            }
                        } catch (Exception e) {
                            if (lg.isTraceEnabled())
                                lg.trace("failed to process file " + file.getPath() + ": " + e.getMessage());
                        }
                    }
                }
                return false;
            }
        };
        // 
        // visit all of the files and delete if bScanOnly=false
        // 
        userDir.listFiles(fileVisitor);
        pw.println("done scanning directory : " + userDir.getPath());
        if (lg.isTraceEnabled())
            lg.trace("done scanning directory : " + userDir.getPath());
    } finally {
        if (writer != null) {
            writer.close();
        }
        if (lg.isTraceEnabled())
            lg.trace("User " + userDir.getName() + ", See " + outputFile.getAbsolutePath() + " for details");
    }
}
Also used : PrintWriter(java.io.PrintWriter) KeyValue(org.vcell.util.document.KeyValue) HashMap(java.util.HashMap) Date(java.util.Date) DataAccessException(org.vcell.util.DataAccessException) SQLException(java.sql.SQLException) ExternalDataIdentifier(org.vcell.util.document.ExternalDataIdentifier) FileFilter(java.io.FileFilter) File(java.io.File) PrintWriter(java.io.PrintWriter) HashSet(java.util.HashSet) SimulationInfo(cbit.vcell.solver.SimulationInfo)

Example 24 with ExternalDataIdentifier

use of org.vcell.util.document.ExternalDataIdentifier in project vcell by virtualcell.

the class DataSymbolTable method populateDataSymbols.

public void populateDataSymbols(Connection con, KeyValue simContextRef, DataContext dataContext, User simcontextOwner, VCUnitSystem unitSystem) throws SQLException, DataAccessException {
    Statement stmt = null;
    try {
        HashMap<BigDecimal, ExternalDataIdentifier> extDataIDHashMap = new HashMap<BigDecimal, ExternalDataIdentifier>();
        stmt = con.createStatement();
        ResultSet rset = stmt.executeQuery("SELECT * FROM " + ExternalDataTable.table.getTableName() + " WHERE " + ExternalDataTable.table.ownerRef.getUnqualifiedColName() + " = " + simcontextOwner.getID().toString());
        while (rset.next()) {
            BigDecimal extdataIDBigDec = rset.getBigDecimal(ExternalDataTable.table.id.getUnqualifiedColName());
            ExternalDataIdentifier extdataID = new ExternalDataIdentifier(new KeyValue(extdataIDBigDec), simcontextOwner, rset.getString(ExternalDataTable.table.externalDataName.getUnqualifiedColName()));
            extDataIDHashMap.put(extdataIDBigDec, extdataID);
        }
        rset.close();
        rset = stmt.executeQuery("SELECT * FROM " + DataSymbolTable.table.getTableName() + " WHERE " + DataSymbolTable.table.simContextRef.getUnqualifiedColName() + " = " + simContextRef.toString());
        while (rset.next()) {
            String nextDataSymbolName = rset.getString(DataSymbolTable.table.dataSymbolName.toString());
            String nextDataSymbolTypeS = rset.getString(DataSymbolTable.table.dataSymbolType.toString());
            DataSymbolType nextDataSymbolType = DataSymbolType.valueOf(nextDataSymbolTypeS);
            String nextDataSymbolVCUnitDefS = rset.getString(DataSymbolTable.table.dataSymbolVCUnitDef.toString());
            nextDataSymbolVCUnitDefS = TokenMangler.getSQLRestoredString(nextDataSymbolVCUnitDefS);
            VCUnitDefinition nextVCUnitDefinition = unitSystem.getInstance(nextDataSymbolVCUnitDefS);
            // FieldDataSymbol (ExternalDataIdentifier) - (only data symbol defined right now)
            BigDecimal extDataBigDecimal = rset.getBigDecimal(DataSymbolTable.table.fieldDataRef.getUnqualifiedColName());
            ExternalDataIdentifier nextExtDataID = null;
            if (!rset.wasNull()) {
                nextExtDataID = extDataIDHashMap.get(extDataBigDecimal);
                if (nextExtDataID == null) {
                    throw new DataAccessException("PopulateDataSymbols extdataID " + extDataBigDecimal + " not found in database for user " + simcontextOwner.getName());
                }
                String nextFieldDataVarName = rset.getString(DataSymbolTable.table.fieldDataVarName.getUnqualifiedColName());
                String nextFieldDataVarType = rset.getString(DataSymbolTable.table.fieldDataVarType.getUnqualifiedColName());
                double nextFieldDataVarTime = rset.getDouble(DataSymbolTable.table.fieldDataVarTime.getUnqualifiedColName());
                FieldDataSymbol fieldDataSymbol = new FieldDataSymbol(nextDataSymbolName, nextDataSymbolType, dataContext, nextVCUnitDefinition, nextExtDataID, nextFieldDataVarName, nextFieldDataVarType, nextFieldDataVarTime);
                dataContext.addDataSymbol(fieldDataSymbol);
            } else {
                throw new DataAccessException("DataSymbol has no ExternalDataIdentifier");
            }
        }
    } finally {
        if (stmt != null) {
            stmt.close();
        }
    }
}
Also used : KeyValue(org.vcell.util.document.KeyValue) HashMap(java.util.HashMap) Statement(java.sql.Statement) BigDecimal(java.math.BigDecimal) VCUnitDefinition(cbit.vcell.units.VCUnitDefinition) ExternalDataIdentifier(org.vcell.util.document.ExternalDataIdentifier) ResultSet(java.sql.ResultSet) DataSymbolType(cbit.vcell.data.DataSymbol.DataSymbolType) DataAccessException(org.vcell.util.DataAccessException) FieldDataSymbol(cbit.vcell.data.FieldDataSymbol)

Example 25 with ExternalDataIdentifier

use of org.vcell.util.document.ExternalDataIdentifier in project vcell by virtualcell.

the class FRAPStudyPanel method refreshPDEDisplay.

protected void refreshPDEDisplay(DisplayChoice choice) throws Exception {
    Simulation sim = null;
    FRAPStudy fStudy = getFrapWorkspace().getWorkingFrapStudy();
    if (fStudy == null || fStudy.getBioModel() == null || fStudy.getBioModel().getSimulations() == null || fStudy.getBioModel().getSimulations().length < 1) {
        return;
    }
    sim = fStudy.getBioModel().getSimulations()[0];
    FieldFunctionArguments[] fieldFunctionArgs = FieldUtilities.getFieldFunctionArguments(sim.getMathDescription());
    FieldDataIdentifierSpec[] fieldDataIdentifierSpecs = new FieldDataIdentifierSpec[fieldFunctionArgs.length];
    for (int i = 0; i < fieldDataIdentifierSpecs.length; i++) {
        fieldDataIdentifierSpecs[i] = new FieldDataIdentifierSpec(fieldFunctionArgs[i], fStudy.getFrapDataExternalDataInfo().getExternalDataIdentifier());
    }
    PDEDataViewer flourViewer = getFlourDataViewer();
    PDEDataManager dataManager = null;
    if (choice == DisplayChoice.EXTTIMEDATA) {
        flourViewer.setSimulation(null);
        flourViewer.setPdeDataContext(null);
        flourViewer.setDataIdentifierFilter(new DataIdentifierFilter() {

            private String ALL_DATAIDENTIFIERS = "All";

            private String EXP_NORM_FLUOR = "Exp. Norm. Fluor";

            private String SIM_NORM_FLUOR = "Sim. Norm. Fluor";

            private String DEFAULT_VIEW = "Default View (more...)";

            private String[] filterSetNames = new String[] { ALL_DATAIDENTIFIERS, EXP_NORM_FLUOR, SIM_NORM_FLUOR, DEFAULT_VIEW };

            public boolean accept(String filterSetName, List<AnnotatedFunction> myFunctionList, DataIdentifier dataidentifier) {
                if (filterSetName.equals(ALL_DATAIDENTIFIERS)) {
                    return true;
                } else if (filterSetName.equals(EXP_NORM_FLUOR)) {
                    return dataidentifier.getName().indexOf(NORM_FLUOR_VAR) != -1;
                } else if (filterSetName.equals(SIM_NORM_FLUOR)) {
                    boolean a = (dataidentifier.getName().indexOf(REACTION_RATE_PREFIX) == -1) && ((dataidentifier.getName().indexOf(FRAPStudy.SPECIES_NAME_PREFIX_COMBINED) != -1) || (dataidentifier.getName().indexOf(FRAPStudy.SPECIES_NAME_PREFIX_IMMOBILE) != -1) || (dataidentifier.getName().indexOf(FRAPStudy.SPECIES_NAME_PREFIX_MOBILE) != -1) || (dataidentifier.getName().indexOf(FRAPStudy.SPECIES_NAME_PREFIX_SLOW_MOBILE) != -1));
                    return a;
                } else if (filterSetName.equals(DEFAULT_VIEW)) {
                    boolean a = (dataidentifier.getName().indexOf(REACTION_RATE_PREFIX) == -1) && ((dataidentifier.getName().indexOf(NORM_FLUOR_VAR) != -1) || (dataidentifier.getName().indexOf(NORM_SIM_VAR) != -1));
                    return a;
                }
                throw new IllegalArgumentException("DataIdentifierFilter: Unknown filterSetName " + filterSetName);
            }

            public String getDefaultFilterName() {
                return DEFAULT_VIEW;
            }

            public String[] getFilterSetNames() {
                return filterSetNames;
            }

            public boolean isAcceptAll(String filterSetName) {
                return filterSetName.equals(ALL_DATAIDENTIFIERS);
            }

            @Override
            public void setPostProcessingMode(boolean bPostProcessingMode) {
            // TODO Auto-generated method stub
            }

            @Override
            public boolean isPostProcessingMode() {
                // TODO Auto-generated method stub
                return false;
            }

            @Override
            public ArrayList<DataIdentifier> accept(String filterSetName, List<AnnotatedFunction> myFunctionList, DataIdentifier[] dataidentifiers) {
                if (filterSetName.equals(DEFAULT_VIEW)) {
                    ArrayList<DataIdentifier> dataIds = new ArrayList<>();
                    if (dataidentifiers != null) {
                        for (int i = 0; i < dataidentifiers.length; i++) {
                            dataIds.add(dataidentifiers[i]);
                        }
                    }
                    return dataIds;
                }
                throw new RuntimeException("Not Implemented for FRAP");
            }
        });
        ExternalDataIdentifier timeSeriesExtDataID = fStudy.getFrapDataExternalDataInfo().getExternalDataIdentifier();
        ExternalDataIdentifier maskExtDataID = fStudy.getRoiExternalDataInfo().getExternalDataIdentifier();
        // add sim
        int jobIndex = 0;
        SimulationJob simJob = new SimulationJob(sim, jobIndex, fieldDataIdentifierSpecs);
        // add function to display normalized fluorence data
        Norm_Exp_Fluor = new Expression(Norm_Exp_Fluor_Str);
        SimulationSymbolTable simSymbolTable = simJob.getSimulationSymbolTable();
        if (// one diffusing component
        simSymbolTable.getVariable(FRAPStudy.SPECIES_NAME_PREFIX_SLOW_MOBILE) == null) {
            Norm_Sim = new Expression(Norm_Sim_One_Diff_Str);
        } else // two diffusing components
        {
            Norm_Sim = new Expression(Norm_Sim_Two_Diff_Str);
        }
        AnnotatedFunction[] func = { new AnnotatedFunction(NORM_FLUOR_VAR, Norm_Exp_Fluor, null, null, VariableType.VOLUME, FunctionCategory.OLDUSERDEFINED), new AnnotatedFunction(NORM_SIM_VAR, Norm_Sim, null, null, VariableType.VOLUME, FunctionCategory.OLDUSERDEFINED) };
        VCDataIdentifier[] dataIDs = new VCDataIdentifier[] { timeSeriesExtDataID, maskExtDataID, simJob.getVCDataIdentifier() };
        VCDataIdentifier vcDataId = new MergedDataInfo(LocalWorkspace.getDefaultOwner(), dataIDs, FRAPStudy.VFRAP_DS_PREFIX);
        outputContext = new OutputContext(func);
        dataManager = new PDEDataManager(outputContext, getLocalWorkspace().getVCDataManager(), vcDataId);
        ClientPDEDataContext pdeDataContext = new ClientPDEDataContext(dataManager);
        pdeDataContext.refreshIdentifiers();
        flourViewer.setSimulation(sim);
        flourViewer.setPdeDataContext(pdeDataContext);
        SimulationModelInfo simModelInfo = new SimulationWorkspaceModelInfo(fStudy.getBioModel().getSimulationContext(sim), sim.getName());
        flourViewer.setSimulationModelInfo(simModelInfo);
        getLocalWorkspace().getDataSetControllerImpl().addDataJobListener(flourViewer);
        ((VirtualFrapWindowManager) flourViewer.getDataViewerManager()).setLocalWorkSpace(getLocalWorkspace());
        // do now show post data processing for VFRAP
        flourViewer.setPostProcessingPanelVisible(false);
        flourViewer.repaint();
    }
}
Also used : ExternalDataIdentifier(org.vcell.util.document.ExternalDataIdentifier) VCDataIdentifier(org.vcell.util.document.VCDataIdentifier) DataIdentifier(cbit.vcell.simdata.DataIdentifier) ArrayList(java.util.ArrayList) MergedDataInfo(cbit.vcell.simdata.MergedDataInfo) ExternalDataIdentifier(org.vcell.util.document.ExternalDataIdentifier) FRAPStudy(cbit.vcell.microscopy.FRAPStudy) SimulationWorkspaceModelInfo(cbit.vcell.client.data.SimulationWorkspaceModelInfo) SimulationJob(cbit.vcell.solver.SimulationJob) AnnotatedFunction(cbit.vcell.solver.AnnotatedFunction) DataIdentifierFilter(cbit.vcell.client.data.DataIdentifierFilter) SimulationModelInfo(cbit.vcell.solver.SimulationModelInfo) FieldFunctionArguments(cbit.vcell.field.FieldFunctionArguments) SimulationSymbolTable(cbit.vcell.solver.SimulationSymbolTable) Point(java.awt.Point) OutputContext(cbit.vcell.simdata.OutputContext) Simulation(cbit.vcell.solver.Simulation) PDEDataManager(cbit.vcell.simdata.PDEDataManager) Expression(cbit.vcell.parser.Expression) FieldDataIdentifierSpec(cbit.vcell.field.FieldDataIdentifierSpec) ClientPDEDataContext(cbit.vcell.simdata.ClientPDEDataContext) VCDataIdentifier(org.vcell.util.document.VCDataIdentifier) PDEDataViewer(cbit.vcell.client.data.PDEDataViewer)

Aggregations

ExternalDataIdentifier (org.vcell.util.document.ExternalDataIdentifier)46 DataAccessException (org.vcell.util.DataAccessException)15 KeyValue (org.vcell.util.document.KeyValue)15 FieldFunctionArguments (cbit.vcell.field.FieldFunctionArguments)12 File (java.io.File)12 UserCancelException (org.vcell.util.UserCancelException)12 User (org.vcell.util.document.User)12 FieldDataIdentifierSpec (cbit.vcell.field.FieldDataIdentifierSpec)9 Hashtable (java.util.Hashtable)9 ISize (org.vcell.util.ISize)9 AsynchClientTask (cbit.vcell.client.task.AsynchClientTask)8 Expression (cbit.vcell.parser.Expression)8 Origin (org.vcell.util.Origin)8 FieldDataFileOperationSpec (cbit.vcell.field.io.FieldDataFileOperationSpec)7 Element (org.jdom.Element)7 Extent (org.vcell.util.Extent)7 ObjectNotFoundException (org.vcell.util.ObjectNotFoundException)7 ImageException (cbit.image.ImageException)6 FieldDataDBOperationResults (cbit.vcell.field.FieldDataDBOperationResults)6 RegionImage (cbit.vcell.geometry.RegionImage)6