/// <summary> /// Convert the specified outFile. /// </summary> /// <param name='outFile'> /// Out file. /// </param> public void Convert(string outFile) { OutputFile = outFile; var path = Path.GetDirectoryName(OutputFile); var baseName = Path.GetFileNameWithoutExtension(OutputFile); if (path == null) { path = Environment.CurrentDirectory; } var sbmlFile = Path.Combine(path, baseName + "-sbml.xml"); CCopasiRootContainer.init(); var dataModel = CCopasiRootContainer.addDatamodel(); dataModel.loadModel(CopasiFile); // write sbml model dataModel.exportSBML(sbmlFile, true); // construct SED-ML SedML = new SedMLInfo(); SedML.ListOfModels.Add(new Model( "model1", sbmlFile)); SedML.ListOfModels[0].ModelContent = File.ReadAllText(sbmlFile); var trajectory = (CTrajectoryTask)dataModel.getTask("Time-Course"); if (trajectory != null) { var problem = (CTrajectoryProblem)trajectory.getProblem(); var method = (CTrajectoryMethod)trajectory.getMethod(); var startTime = problem.getOutputStartTime(); var steps = (int)problem.getStepNumber(); var initial = dataModel.getModel().getInitialTime(); var endTime = startTime + steps * problem.getStepSize(); var kisao = method.getSubType() == CCopasiMethod.deterministic ? Algorithm.DeterministicAlgorithm : Algorithm.StochasticAlgorithm; var simulation = new UniformTimeCourse("sim1", initial, startTime, endTime, steps) { Algorithm = kisao }; SedML.ListOfSimulations.Add(simulation); SedML.ListOfTasks.Add(new Task("task1", "sim1", "model1")); for (int i = 0; i < dataModel.getPlotDefinitionList().size(); i++) { var current = dataModel.getPlotSpecification((uint)i); var plot = CreatePlot(dataModel, current); if (plot.ListOfCurves.Count > 0) SedML.ListOfOutputs.Add(plot); } CreateDataGenerators(SedML); } SedML.FixCommonErrors(); }
/// <summary> /// Creates the data generators. /// </summary> /// <param name='info'> /// Info. /// </param> void CreateDataGenerators(SedMLInfo info) { info.UpdateStores(); foreach (var item in dataIds) { info.ListOfDataGenerators.Add(new DataGenerator { Id = item, Name = names[item], ListOfVariables = new List<Variable> { new Variable ("v", "task1", SBMLLanguage.GetXPath (types [item], item)) }, MathML = "v" } ); } }