morphine 0.1.0

A software-based neuromorphic computing engine
Documentation
use morphine::params::InstanceParams;

pub fn get_scenario_params() -> InstanceParams {
    let params_yaml_str = r#"
layers:
- num_neurons: 800
  neuron_params:
    tau_membrane: 10.0
    refractory_period: 10
    reset_voltage: 0.0
    t_cutoff_coincidence: 20
    adaptation_threshold: 1.0
    tau_threshold: 50.0
    voltage_floor: 0.0
  plasticity_modulation_params:
    tau_eligibility_trace: 1000.0
    eligibility_trace_delay: 20
    dopamine_modulation_factor: 1.5
    t_cutoff_eligibility_trace: 1500
    dopamine_flush_period: 250
    dopamine_conflation_period: 250
- num_neurons: 200
  neuron_params:
    tau_membrane: 4.0
    refractory_period: 5
    reset_voltage: 0.0
    t_cutoff_coincidence: 20
    adaptation_threshold: 1.0
    tau_threshold: 50.0
    voltage_floor: 0.0
  plasticity_modulation_params: null
layer_connections:
- from_layer_id: 0
  to_layer_id: 0
  projection_params:
    synapse_params:
      max_weight: 0.5
      weight_scale_factor: 1.0
    stp_params: !Depression
      tau: 800.0
      p0: 0.9
      factor: 0.1
    long_term_stdp_params:
      factor_pre_before_post: 0.1
      tau_pre_before_post: 20.0
      factor_pre_after_post: -0.12
      tau_pre_after_post: 20.0
    short_term_stdp_params:
      stdp_params:
        factor_pre_before_post: 0.01
        tau_pre_before_post: 20.0
        factor_pre_after_post: 0.012
        tau_pre_after_post: 20.0
      tau: 500.0
  connect_density: 0.1
  connect_width: 2.0
  initial_syn_weight: !Randomized 0.5
  conduction_delay_max_random_part: 20
  conduction_delay_position_distance_scale_factor: 0.0
  conduction_delay_add_on: 0
  allow_self_innervation: true
- from_layer_id: 0
  to_layer_id: 1
  projection_params:
    synapse_params:
      max_weight: 0.5
      weight_scale_factor: 2.0
    stp_params: !Depression
      tau: 800.0
      p0: 0.9
      factor: 0.1
    long_term_stdp_params:
      factor_pre_before_post: 0.1
      tau_pre_before_post: 20.0
      factor_pre_after_post: -0.12
      tau_pre_after_post: 20.0
    short_term_stdp_params:
      stdp_params:
        factor_pre_before_post: 0.01
        tau_pre_before_post: 20.0
        factor_pre_after_post: 0.012
        tau_pre_after_post: 20.0
      tau: 500.0
  connect_density: 0.25
  connect_width: 2.0
  initial_syn_weight: !Randomized 0.5
  conduction_delay_max_random_part: 20
  conduction_delay_position_distance_scale_factor: 0.0
  conduction_delay_add_on: 0
  allow_self_innervation: true
- from_layer_id: 1
  to_layer_id: 0
  projection_params:
    synapse_params:
      max_weight: 0.5
      weight_scale_factor: -1.0
    stp_params: NoStp
    long_term_stdp_params: null
    short_term_stdp_params: null
  connect_density: 0.25
  connect_width: 2.0
  initial_syn_weight: !Constant 0.85
  conduction_delay_max_random_part: 0
  conduction_delay_position_distance_scale_factor: 0.0
  conduction_delay_add_on: 0
  allow_self_innervation: true
- from_layer_id: 1
  to_layer_id: 1
  projection_params:
    synapse_params:
      max_weight: 0.5
      weight_scale_factor: -1.0
    stp_params: NoStp
    long_term_stdp_params: null
    short_term_stdp_params: null
  connect_density: 0.25
  connect_width: 2.0
  initial_syn_weight: !Constant 0.85
  conduction_delay_max_random_part: 0
  conduction_delay_position_distance_scale_factor: 0.0
  conduction_delay_add_on: 0
  allow_self_innervation: true
technical_params:
  num_threads: 1
  pin_threads: false
  batched_ring_buffer_size: 21
"#;

    serde_yaml::from_str(params_yaml_str).unwrap()
}