Пример #1
0
def weight_file(prefix):
    wtime = h.startsw()
    mingroupsize = max(nhost / 64, 1)
    ng = nhost / mingroupsize
    for r in group_serialize(ng):
        name = prefix + '.' + str(r[0])

        if r[1]:
            f = open(name, 'a')
            #fdic = open(mg_dict_filename + '.' + str(r[0]), 'a')
        else:
            f = open(name, 'w')
            #fdic = open(mg_dict_filename + '.' + str(r[0]), 'w')

        vs = getmodel().mgrss.values
        for rs in vs():
            s = rs.wstr()
            f.write(s)
            #sdic = rs.mg_dic_str()
            #fdic.write(sdic)
        f.close()
        #fdic.close()

    if rank == 0:
        print "weight_files %s.[0:%d] write time %g s" % (prefix, ng,
                                                          h.startsw() - wtime)
Пример #2
0
def weight_load(filename):
    print("weight_load %s" % filename)
    model = getmodel()
    for l in fileinput.input(filename):
        tk = l.split()
        gid = int(tk[0])
        s = int(tk[1])

        # inhib check
        if gid % 2 != 0:
            gid += 1
            inhib = True
        else:
            inhib = False

        # has key
        if model.mgrss.has_key(gid):
            rsyn = model.mgrss[gid]

            if inhib and rsyn.gd2fi:
                rsyn.gd2fi.weight[1] = s
            elif not inhib and rsyn.md2ampanmda:
                rsyn.md2ampanmda.weight[1] = s

            print("weight %s" % s)

    fileinput.close()
Пример #3
0
def weight_reset():
    model = getmodel()
    for rsyn in model.mgrss.values():
        if rsyn.gd2fi:
            rsyn.gd2fi.weight[1] = 0
        if rsyn.md2ampanmda:
            rsyn.md2ampanmda.weight[1] = 0
Пример #4
0
def init_gap_junctions():

    # initialize source
    for mgid in range(params.Nmitral):
        mpriden = split.mpriden(mgid)
        if mpriden:
            mpriden.push()
            pc.source_var(mpriden(0.99)._ref_v, mgid)
            h.pop_section()
            
    pc.barrier()

    # initialize targets
    for mgid in range(params.Nmitral):
        mpriden = split.mpriden(mgid)
        if mpriden:
            glomid = mgid/nmxg
            for sistermgid in range(glomid * nmxg, mgid)+range(mgid+1, (glomid+1)*nmxg):
                if pc.gid_exists(sistermgid) > 0:
                    gap = h.Gap(mpriden(0.99))
                    if sistermgid != 189:
                        getmodel().gj[(mgid, sistermgid)] = gap
                        glomid = mgid / nmxg
                        pc.target_var(gap, gap._ref_vgap, sistermgid)
    util.elapsed('Gap junctions builden')
Пример #5
0
def weight_load(filename):
  model = getmodel()
  for l in fileinput.input(filename):
    tk = l.split()
    gid = int(tk[0])
    s = int(tk[1])
    
    # inhib check    
    if gid % 2 != 0:
      gid += 1
      inhib = True
    else:
      inhib = False

    # has key
    if model.mgrss.has_key(gid):
      rsyn = model.mgrss[gid]
      
      if inhib and rsyn.gd2fi:
        rsyn.gd2fi.weight[1] = s
      elif not inhib and rsyn.md2ampanmda:
        rsyn.md2ampanmda.weight[1] = s

  fileinput.close()
Пример #6
0
def weight_file(prefix):
  wtime = h.startsw()
  mingroupsize = max(nhost/64, 1)
  ng = nhost/mingroupsize
  for r in group_serialize(ng):
    name = prefix + '.' + str(r[0])
    
    if r[1]:
      f = open(name, 'a')
      #fdic = open(mg_dict_filename + '.' + str(r[0]), 'a')
    else:
      f = open(name, 'w')
      #fdic = open(mg_dict_filename + '.' + str(r[0]), 'w')
      
    vs = getmodel().mgrss.values
    for rs in vs():
      s = rs.wstr()
      f.write(s)
      #sdic = rs.mg_dic_str()
      #fdic.write(sdic)
    f.close()
    #fdic.close()
    
  if rank == 0 : print "weight_files %s.[0:%d] write time %g s" % (prefix, ng, h.startsw()-wtime)
Пример #7
0
def init():
    data = {}
    for uid in range(nhost):
      data.update({ uid:(getmodel().mitrals.keys()) })
    data = a2a.all2all(data)
    mgids = []
    for _mgids in data.values(): mgids += _mgids
    mgids = set(mgids)

    # initialize source
    
    for mgid in getmodel().mitrals.keys():
        mpriden = split.mpriden(mgid)
        if not mpriden:
          continue
       
        rgj = params.ranstream(mgid, params.stream_gap_junction)

        
        mpriden.push()
        secref = h.SectionRef()
        h.pop_section()
        
        h.mk_gj_src(pc, mgid, secref)

        glomid = mgid2glom(mgid)
        
        sistergids = []

        # no longer all to all, only a chain
        if not (ismtufted(mgid) and (mgid - nmi) % nmt == (nmt - 1)):
            if ismitral(mgid) and mgid % nmxg == (nmxg - 1):
                sistergids += [glomid * nmt + nmi]
            else:
                sistergids += [mgid + 1]
            
        if not (ismitral(mgid) and mgid % nmxg == 0):
            if ismtufted(mgid) and (mgid - nmi) % nmt == 0:
                sistergids += [(glomid + 1) * nmxg - 1]
            else:
                sistergids += [mgid - 1]
            
        sistergids = mgids.intersection(range(glomid * nmxg, glomid * nmxg + nmxg) + range(glomid * nmt + nmi, glomid * nmt + nmt + nmi)).difference([ mgid ])  

        for sistermgid in sistergids:
            gap = h.Gap(mpriden(0.99))

            if ismitral(mgid) and ismitral(sistermgid):
                gap.g = rgj.uniform(gj_min_g1, gj_max_g1)
            elif  ismtufted(mgid) and ismtufted(sistermgid):
                gap.g = rgj.uniform(gj_min_g3, gj_max_g3)
            else:
                gap.g = rgj.uniform(gj_min_g2, gj_max_g2)
                

            getmodel().gj[(mgid, sistermgid)] = gap
            

    pc.barrier()

    # initialize targets
    for key, gap in getmodel().gj.items():
        mgid, sistermgid = key
        pc.target_var(gap, gap._ref_vgap, sistermgid)

    util.elapsed('Gap junctions built')
Пример #8
0
def gap_junctions_cnt():
    return len(getmodel().gj)*2