objref theGraph     // ki

proc ifHasContactThenCreateGraphForPointClosestToSphereCentre() { local arc localobj outList, outVec, sec_ref
    
    outList = new List()
    outVec = new Vector(2)
    pyObj.segmentSearcher.findSegmClosestToThis3DPoint(kSrc.x, kSrc.y, kSrc.z, outList, outVec)
    sec_ref = outList.o(0)
    arc = outVec.x[0]
    kSrc.cachedDistToClosestSegm = outVec.x[1]
    
    if (!kSrc.hasContactWithTheCell()) {
        return
    }
    
    sec_ref.sec {
        _createGraphPotasasiumIn(arc)
    }
}

proc dismissGraph() { localobj nil
    
    if (theGraph == nil) {
        return
    }
    
    removeItemFromList(graphList[1], theGraph)
    theGraph.unmap()
    
    theGraph = nil
}


ki_min = 110        // mM
ki_range = 0.3     // mM

proc _createGraphPotasasiumIn() { local arc localobj graph
    strdef var, label
    
    arc = $1
    
    graph = new Graph(0)
    graphList[1].append(graph)
    graph.view(0, ki_min, tstop, ki_range, 593, 780, 400, 200)
    sprint(var, "%s.ki(0.5)", somaSecName)
    graph.addvar(var, enumColours.red, 1, 0.5, 0.9, 2)
    sprint(label, "%s.ki(%g)", secname(), arc)
    graph.addvar(label, &ki(arc), enumColours.blue, 1, 0.5, 0.9, 2)
    graph.yaxis(0)
    graph.label(0.5, 0.09, "Time (ms)", 2, 1, 0, 1, 1)
    graph.label(0.1, 0.9, "[K+]in (mM)", 2, 1, 0, 1, 1)
    
    theGraph = graph
}