From 36713460fded41e44a3bbdf3e783160615e1c48b Mon Sep 17 00:00:00 2001 From: Mahmoud Bentriou <mahmoud.bentriou@centralesupelec.fr> Date: Sun, 21 Mar 2021 17:48:43 +0100 Subject: [PATCH] new methods trajectory_from_csv --- core/MarkovProcesses.jl | 2 +- core/trajectory.jl | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/core/MarkovProcesses.jl b/core/MarkovProcesses.jl index fe716b1..0165793 100644 --- a/core/MarkovProcesses.jl +++ b/core/MarkovProcesses.jl @@ -29,7 +29,7 @@ export InvariantPredicateFunction, CheckConstraintsFunction, UpdateStateFunction # Trajectory related methods export +, -, δ, dist_lp, euclidean_distance export get_obs_var, length_states, length_obs_var -export get_state_from_time, get_var_from_time, vectorize +export get_state_from_time, get_var_from_time, vectorize, trajectory_from_csv export isbounded, states, times, transitions export check_consistency, issteadystate, isaccepted diff --git a/core/trajectory.jl b/core/trajectory.jl index da97f76..3712415 100644 --- a/core/trajectory.jl +++ b/core/trajectory.jl @@ -308,3 +308,23 @@ function +(σ1::AbstractTrajectory,σ2::AbstractTrajectory) end function -(σ1::AbstractTrajectory,σ2::AbstractTrajectory) end δ(σ::AbstractTrajectory,idx::Int) = times(σ)[i+1] - times(σ)[i] +function trajectory_from_csv(csv_file, model::ContinuousTimeModel) + csv_mat_values, header = readdlm(csv_file, ',', header = true) + nbr_states = size(csv_mat_values, 1) + times = zeros(nbr_states) + values = Vector{Vector{Int}}(undef, length(model.g)) + transitions = fill(nothing, nbr_states) + for i = eachindex(header) + model_var = header[i] + if model_var == "time" + times = csv_mat_values[:,i] + elseif model_var == "transitions" + transitions = csv_mat_values[:,i] + else + @assert Symbol(model_var) in model.g "Variable is not observed in the model" + values[model._map_obs_var_idx[Symbol(model_var)]] = csv_mat_values[:,i] + end + end + return Trajectory(model, values, times, transitions) +end + -- GitLab