//genesis - function

//Function setting differential Rm for compartments based on distance from soma

function DiffRm(cellname, Rm_base, Rm_end, d_half, steep)
  float Rm_base, Rm_end, Rm_new, d_half, steep
  str cellname
  str wild_path = {{cellname} @ "/##[][TYPE=compartment]"}
  str comp_path
  str soma_path = {{cellname} @ "/soma"}
  float x0 = {getfield {soma_path} x}
  float y0 = {getfield {soma_path} y}
  float z0 = {getfield {soma_path} z}
  float x,y,z,len,dia,surf,dist

  foreach comp_path ({el {wild_path}})
     x = {getfield {comp_path} x}
     y = {getfield {comp_path} y}
     z = {getfield {comp_path} z}
     dist = {sqrt {((x-x0)**2)+((y-y0)**2)+((z-z0)**2)}}
     Rm_new = Rm_end + ((Rm_base - Rm_end) / (1 + {exp {((d_half - dist) / - steep)}}))
     len = {getfield {comp_path} len}
     dia = {getfield {comp_path} dia}
     surf = 3.14159*dia*len
     
     if (comp_path != soma_path)
        setfield {comp_path} Rm {Rm_new/surf}
     end

  end
end