import json as js
from neuron import h

def get_cell_list():
    sl = h.SectionList()
    sl.allroots()
    return sl

def get_section_list(cell):
    print(("Selected section where to start for h.wholetree() %s"%cell.name()))

    # Access parent section
    cell.push()
    # Populate sectionlist
    sl = h.SectionList()
    sl.wholetree()
    h.pop_section()
    return sl

def geom_nseg(sl, check = False):
    if check:
        for sec in sl:
            print((sec.nseg))
    for sec in sl:
        sec.nseg = int((sec.L/(0.1*h.lambda_f(100))+.9)/2)*2 + 1
    if check:
        for sec in sl:
            print((sec.nseg))

def dump_structure_in_dict_for_hoc(sl ,filename,sec_list,mec_list):
    sec_dict = {}
    for sec_n in sec_list:
        sec = sec_dict[sec_n]
        # get geometry
        
    #         sec_mechs = npy.get_variables(h,sec)

    #         # Saving initial vm
    #         fn.write('v_init = '+str(round(sec.v,2))+'\n')
    #         # Saving passive properties
    #         for sm_name,sm in sec_mechs.iteritems():
    #             if 'diam' == sm_name or 'L' == sm_name or 'Ra' == sm_name:
    #                 fn.write(sm_name+' = '+str(round(sm,4))+'\n')
    #         fn.write('\n')
    #         # Saving single channel paramenters
    #         for sm_name in mec_list:
    #             if sm_name in sec_mechs.keys():
    #                 sm = sec_mechs[sm_name]
    #                 if 'GRC' in sm_name:
    #                     mech_params = npy.get_variables_from_mechanism(h,sm,1)
    #                     fn.write(sm_name+'\n')
    #                     for p_n,p in mech_params.iteritems():
    #                         fn.write(p_n+' = '+str(p)+'\n')
    #                     fn.write('\n')
    #         fn.write('\n')
            
    # fn.close()