Search in sources :

Example 26 with SimulationJobStatusPersistent

use of cbit.vcell.server.SimulationJobStatusPersistent in project vcell by virtualcell.

the class SimulationDatabaseDirect method updateSimulationJobStatus.

@Override
public void updateSimulationJobStatus(SimulationJobStatus newSimulationJobStatus, StateInfo stateInfo) throws DataAccessException, UpdateSynchronizationException, SQLException {
    SimulationJobStatusPersistent newSimulationJobStatusDb = translateToSimulationJobStatusPersistent(newSimulationJobStatus);
    adminDbTopLevel.updateSimulationJobStatus(newSimulationJobStatusDb, true);
    SimJobStatusKey key = new SimJobStatusKey(newSimulationJobStatus.getVCSimulationIdentifier().getSimulationKey(), newSimulationJobStatus.getJobIndex(), newSimulationJobStatus.getTaskID());
    cache.put(key, new SimStatusCacheEntry(newSimulationJobStatus, stateInfo));
}
Also used : SimulationJobStatusPersistent(cbit.vcell.server.SimulationJobStatusPersistent)

Example 27 with SimulationJobStatusPersistent

use of cbit.vcell.server.SimulationJobStatusPersistent in project vcell by virtualcell.

the class AdminDBTopLevel method getSimulationJobStatusArray.

/**
 * Insert the method's description here.
 * Creation date: (1/31/2003 2:35:44 PM)
 * @return cbit.vcell.solvers.SimulationJobStatus[]
 * @param bActiveOnly boolean
 * @param owner cbit.vcell.server.User
 */
public SimulationJobStatusPersistent[] getSimulationJobStatusArray(KeyValue simKey, int jobIndex, boolean bEnableRetry) throws java.sql.SQLException, DataAccessException {
    Object lock = new Object();
    Connection con = conFactory.getConnection(lock);
    try {
        SimulationJobStatusPersistent[] jobStatus = getSimulationJobStatusArray(con, simKey, jobIndex);
        return jobStatus;
    } catch (Throwable e) {
        lg.error("failure in getSimulationJobStatusArray()", e);
        if (bEnableRetry && isBadConnection(con)) {
            conFactory.failed(con, lock);
            return getSimulationJobStatusArray(simKey, jobIndex, false);
        } else {
            handle_DataAccessException_SQLException(e);
            // never gets here;
            return null;
        }
    } finally {
        conFactory.release(con, lock);
    }
}
Also used : Connection(java.sql.Connection) SimulationJobStatusPersistent(cbit.vcell.server.SimulationJobStatusPersistent)

Example 28 with SimulationJobStatusPersistent

use of cbit.vcell.server.SimulationJobStatusPersistent in project vcell by virtualcell.

the class AdminDBTopLevel method getSimulationStatus.

/**
 * Insert the method's description here.
 * Creation date: (1/31/2003 2:35:44 PM)
 * @return cbit.vcell.solvers.SimulationJobStatus[]
 * @param bActiveOnly boolean
 * @param owner cbit.vcell.server.User
 */
SimulationStatusPersistent[] getSimulationStatus(KeyValue[] simulationKeys, boolean bEnableRetry) throws java.sql.SQLException, DataAccessException {
    Object lock = new Object();
    Connection con = conFactory.getConnection(lock);
    try {
        SimulationJobStatusPersistent[] jobStatuses = jobDB.getSimulationJobStatus(con, simulationKeys);
        SimulationStatusPersistent[] simStatuses = new SimulationStatusPersistent[simulationKeys.length];
        for (int i = 0; i < simulationKeys.length; i++) {
            Vector<SimulationJobStatusPersistent> v = new Vector<SimulationJobStatusPersistent>();
            for (int j = 0; j < jobStatuses.length; j++) {
                if (jobStatuses[j].getVCSimulationIdentifier().getSimulationKey().equals(simulationKeys[i])) {
                    v.add(jobStatuses[j]);
                }
            }
            if (v.isEmpty()) {
                simStatuses[i] = null;
            } else {
                simStatuses[i] = new SimulationStatusPersistent((SimulationJobStatusPersistent[]) org.vcell.util.BeanUtils.getArray(v, SimulationJobStatusPersistent.class));
            }
        }
        return simStatuses;
    } catch (Throwable e) {
        lg.error("failure in getSimulationStatus()", e);
        if (bEnableRetry && isBadConnection(con)) {
            conFactory.failed(con, lock);
            return getSimulationStatus(simulationKeys, false);
        } else {
            handle_DataAccessException_SQLException(e);
            // never gets here;
            return null;
        }
    } finally {
        conFactory.release(con, lock);
    }
}
Also used : Connection(java.sql.Connection) SimulationStatusPersistent(cbit.vcell.server.SimulationStatusPersistent) SimulationJobStatusPersistent(cbit.vcell.server.SimulationJobStatusPersistent) Vector(java.util.Vector)

Example 29 with SimulationJobStatusPersistent

use of cbit.vcell.server.SimulationJobStatusPersistent in project vcell by virtualcell.

the class VCComprehensiveStatistics method collectMathModelStats.

private void collectMathModelStats(long startDateInMs, long endDateInMs) throws DataAccessException {
    retrieveUsers();
    List<String> internalDeveloper = Arrays.asList(VCComprehensiveStatistics.INTERNAL_DEVELOPERS);
    for (User user : userList) {
        if (!userConstraintList.contains(user.getName())) {
            continue;
        }
        if (!internalDeveloper.contains(user.getName())) {
            boolean bInternal = internalUsers.contains(user.getName());
            ModelStat modelStat = mathModelStats[bInternal ? 0 : 1];
            MathModelInfo[] mathModelInfos = dbServerImpl.getMathModelInfos(user, false);
            for (MathModelInfo mmi : mathModelInfos) {
                Date createDate = mmi.getVersion().getDate();
                long t = createDate.getTime();
                // }
                if (t < startDateInMs || t > endDateInMs) {
                    continue;
                }
                // modelStat.count_model ++;
                try {
                    BigString mathModelXML = dbServerImpl.getMathModelXML(user, mmi.getVersion().getVersionKey());
                    MathModel mathModel = (MathModel) waitForModel(mathModelXML, true);
                    if (mathModel == null) {
                        System.out.println("----------          Skipped MathModel " + mmi.getVersion() + "          ----------");
                        continue;
                    }
                    modelStat.count_model++;
                    boolean bHasCompletedSim = false;
                    for (Simulation sim : mathModel.getSimulations()) {
                        SimulationStatusPersistent ss = dbServerImpl.getSimulationStatus(sim.getKey());
                        for (int scan = 0; ss != null && scan < sim.getScanCount(); scan++) {
                            SimulationJobStatusPersistent jobStatus = ss.getJobStatus(scan);
                            if (jobStatus != null) {
                                if (jobStatus.getSchedulerStatus() == SchedulerStatus.COMPLETED) {
                                    bHasCompletedSim = true;
                                    long elapsed = jobStatus.getEndDate().getTime() - jobStatus.getStartDate().getTime();
                                    if (elapsed < 2 * MINUTE_IN_MS) {
                                        modelStat.runningTimeHistogram[0]++;
                                    } else if (elapsed < 5 * MINUTE_IN_MS) {
                                        modelStat.runningTimeHistogram[1]++;
                                    } else if (elapsed < 20 * MINUTE_IN_MS) {
                                        modelStat.runningTimeHistogram[2]++;
                                    } else if (elapsed < HOUR_IN_MS) {
                                        modelStat.runningTimeHistogram[3]++;
                                    } else if (elapsed < DAY_IN_MS) {
                                        modelStat.runningTimeHistogram[4]++;
                                    } else {
                                        modelStat.runningTimeHistogram[5]++;
                                    }
                                }
                                int dimension = sim.getMathDescription().getGeometry().getDimension();
                                modelStat.count_geoDimSim[dimension]++;
                                if (sim.getMathDescription().isNonSpatialStoch()) {
                                    modelStat.count_sim_stochastic++;
                                } else {
                                    modelStat.count_sim_deterministic++;
                                }
                                if (dimension > 0) {
                                    if (sim.getSolverTaskDescription().getSolverDescription().isSemiImplicitPdeSolver()) {
                                        modelStat.count_semiSim++;
                                    } else {
                                        modelStat.count_fullySim++;
                                    }
                                }
                            }
                        }
                    }
                    if (bHasCompletedSim) {
                        modelStat.count_model_simcomplete++;
                    }
                } catch (Exception e2) {
                    e2.printStackTrace(System.out);
                }
            }
        }
    }
    itemCount++;
    statOutputPW.println(itemCount + ". MathModel Statistics ");
    statOutputPW.println("====================================================");
    for (ModelStat modelStat : mathModelStats) {
        statOutputPW.println("\t" + modelStat.title);
        statOutputPW.println("========================================");
        statOutputPW.println("number of mathmodels saved :\t" + modelStat.count_model);
        statOutputPW.println("number of mathmodels that has at least 1 completed simulation :\t" + modelStat.count_model_simcomplete);
        statOutputPW.println();
        statOutputPW.println("Simulation statistics (including all simulations (stopped, failed, completed) :");
        statOutputPW.println("number of run simulation ODE :\t" + modelStat.count_geoDimSim[0]);
        statOutputPW.println("number of run simulation 1D :\t" + modelStat.count_geoDimSim[1]);
        statOutputPW.println("number of run simulation 2D :\t" + modelStat.count_geoDimSim[2]);
        statOutputPW.println("number of run simulation 3D :\t" + modelStat.count_geoDimSim[3]);
        statOutputPW.println("number of run simulation Semi-Implicit :\t" + modelStat.count_semiSim);
        statOutputPW.println("number of run simulation Fully-Implicit :\t" + modelStat.count_fullySim);
        statOutputPW.println("number of run simulation stochastic :\t" + modelStat.count_sim_stochastic);
        statOutputPW.println("number of run simulation deterministic :\t" + modelStat.count_sim_deterministic);
        statOutputPW.println();
        statOutputPW.println("Running time histogram for completed simulations only:");
        statOutputPW.println("0 ~ 2min:\t" + modelStat.runningTimeHistogram[0]);
        statOutputPW.println("2 ~ 5min:\t" + modelStat.runningTimeHistogram[1]);
        statOutputPW.println("5 ~ 20min:\t" + modelStat.runningTimeHistogram[2]);
        statOutputPW.println("20min ~ 1hr:\t" + modelStat.runningTimeHistogram[3]);
        statOutputPW.println("1hr ~ 1day:\t" + modelStat.runningTimeHistogram[4]);
        statOutputPW.println(">1day:\t" + modelStat.runningTimeHistogram[5]);
        statOutputPW.println();
        statOutputPW.println();
        statOutputPW.flush();
    }
}
Also used : MathModel(cbit.vcell.mathmodel.MathModel) User(org.vcell.util.document.User) SimulationStatusPersistent(cbit.vcell.server.SimulationStatusPersistent) BigString(org.vcell.util.BigString) MathModelInfo(org.vcell.util.document.MathModelInfo) SimulationJobStatusPersistent(cbit.vcell.server.SimulationJobStatusPersistent) BigString(org.vcell.util.BigString) Date(java.util.Date) SQLException(java.sql.SQLException) DataAccessException(org.vcell.util.DataAccessException) FileNotFoundException(java.io.FileNotFoundException) Simulation(cbit.vcell.solver.Simulation)

Aggregations

SimulationJobStatusPersistent (cbit.vcell.server.SimulationJobStatusPersistent)29 ArrayList (java.util.ArrayList)12 ResultSet (java.sql.ResultSet)9 Statement (java.sql.Statement)9 SimulationStatusPersistent (cbit.vcell.server.SimulationStatusPersistent)6 SQLException (java.sql.SQLException)6 DataAccessException (org.vcell.util.DataAccessException)6 Simulation (cbit.vcell.solver.Simulation)5 FileNotFoundException (java.io.FileNotFoundException)5 Connection (java.sql.Connection)5 Date (java.util.Date)5 User (org.vcell.util.document.User)5 SimulationJobStatus (cbit.vcell.server.SimulationJobStatus)4 BigString (org.vcell.util.BigString)4 BioModel (cbit.vcell.biomodel.BioModel)3 SimulationExecutionStatusPersistent (cbit.vcell.server.SimulationExecutionStatusPersistent)3 SimulationQueueEntryStatusPersistent (cbit.vcell.server.SimulationQueueEntryStatusPersistent)3 KeyValue (org.vcell.util.document.KeyValue)3 SimulationContext (cbit.vcell.mapping.SimulationContext)2 MathModel (cbit.vcell.mathmodel.MathModel)2