///|
/// Checks compatibility by replay, not merely matching vector dimensions.
fn verify_path(net : Network, path : Path) -> Unit raise KineticsError {
net.validate_counts(path.states[0])
let mut state = path.states[0].copy()
for k in 0.. Double raise KineticsError {
verify_path(self, path)
let mut result = 0.0
let mut previous = 0.0
for k in 0.. Array[Double] raise KineticsError {
verify_path(self, path)
for r in self.reactions {
if r.rate <= 0.0 {
raise Invalid("path score requires positive rate constants")
}
}
let result = Array::make(self.reactions.length(), 0.0)
let mut previous = 0.0
for k in 0..<(path.channels.length() + 1) {
let next = if k == path.channels.length() {
path.horizon
} else {
path.times[k]
}
let a = self.propensities(path.states[k])
for j in 0..