def name_to_sid_map(db_connection=None, neuron_type = 'all'): if db_connection is None: db_connection = connect.Connection() name_to_nid = name_to_nid_map(db_connection) nid_to_sid = db_connection.con.nid_to_sid_map() name_to_sid = {name: nid_to_sid[nid][0] for (name, nid) in name_to_nid.iteritems()} return name_to_sid
def get_types_of_neurons(neurons, db_connection=None): """Takes a dictionary or list of neurons, and returns """ if db_connection is None: db_connection = connect.Connection() left_orns = get_neurons_of_type('Left ORN', db_connection) right_orns = get_neurons_of_type('Right ORN', db_connection) pns = get_neurons_of_type('DM6 PN', db_connection) lns = get_neurons_of_type('LN', db_connection) plns = get_neurons_of_type('potential LN', db_connection ) neuron_types = {'Left ORN': [], 'Right ORN': [], 'DM6 PN': [], 'LN': [], 'Other': []} if isinstance(neurons, dict): neurons = neurons.iteritems() for n in neurons: if isinstance(n, (list, tuple)): nname = n[0] elif isinstance(n, (str, unicode)): nname = n if nname in left_orns: neuron_types['Left ORN'].append(n) elif nname in right_orns: neuron_types['Right ORN'].append(n) elif nname in pns: neuron_types['DM6 PN'].append(n) else: neuron_types['LN'].append(n) return neuron_types
def name_to_nid_map(db_connection=None, neuron_type = 'all'): if db_connection is None: db_connection = connect.Connection() annotation_list = db_connection.con.annotations() nids = [i[3] for i in annotation_list] nnames = [i[0] for i in annotation_list] name_to_id = dict(zip(nnames, nids)) return name_to_id
def run(self): while True: self.s.listen(5) try: conn, addr = self.s.accept() except Exception: pass else: th = connect.Connection(conn, addr) th.start()
def get_neurons_of_type(annotation, db_connection=None): """Returns a list of neuron names for neurons containing a specified annotation. example annotations: 'DM6 ORN', 'Left ORN', 'Right ORN', 'LN', 'DM6 PN' """ if db_connection is None: db_connection = connect.Connection() annotation_list = db_connection.con.annotations() if annotation != 'all': nnames = [neuron[0] for neuron in annotation_list if annotation in [annot['name'] for annot in neuron[1]]] elif annotation == 'all': nnames = [neuron[0] for neuron in annotation_list] return nnames
def run(self): while True: conn, addr = self.s.accept() connect.Connection(conn, addr).start()
def sid_to_name_map(db_connection=None, neuron_type = 'all'): if db_connection is None: db_connection = connect.Connection() name_to_sid = name_to_sid_map(db_connection) sid_to_name = {sid: name for (name, sid) in name_to_sid.iteritems()} return sid_to_name
import connect import neuron_tools import numpy as np import bargraph import stacked DB_CONNECTION = connect.Connection() print "Fetching adjacency matrix" ADJ = dict() ADJ['matrix'], ADJ['sk_ids'] = DB_CONNECTION.con.adjacency_matrix() ADJ['matrix'] = np.array(ADJ['matrix'], int) NAME_TO_SID = neuron_tools.name_to_sid_map(DB_CONNECTION) SID_TO_NAME = neuron_tools.sid_to_name_map(DB_CONNECTION) print "Initialization complete" class Neuron(object): """ Neuron object holds synapse information and does analyses on their connections """ def __init__(self, sid): self.sid = sid self.adj_index = ADJ['sk_ids'].index(self.sid) pre_slice = ADJ['matrix'][:, self.adj_index] post_slice = ADJ['matrix'][self.adj_index, :] self.contacts = dict() self.contacts['pre'] = self.get_contacts(pre_slice, ADJ['sk_ids'], post_slice) self.contacts['post'] = self.get_contacts(post_slice, ADJ['sk_ids'], pre_slice) self.get_contact_types()
#!/usr/bin/env python '''quick_adj.py: super quick script for fetching and saving adjacency matrix and skeleton IDs/neuron names.''' import connect import numpy as np import json if __name__ == "__main__": db_connection = connect.Connection() adj = dict() adj_m, adj['skids'] = db_connection.con.adjacency_matrix() adj_m = np.array(adj_m, int) # Go from sk_ids to neuron ids, necessary for name lookup in wiring_diagram sid_to_nid = db_connection.con.sid_to_nid_map() adj['nids'] = [sid_to_nid[sid] for sid in adj['skids']] # Use wiring_diagram to get names from nids annot_diag = db_connection.con.annotation_diagram() nids = [i['id'] for i in annot_diag['nodes']] nnames = [i['name'] for i in annot_diag['nodes']] nid_to_nname = dict(zip(nids, nnames)) # Add neuron names to adj dict adj['nnames'] = [nid_to_nname[nid] for nid in adj['nids']] # adj_nnames = adj['nnames'] # adj_nids = adj['nids'] # adj_skids = adj['skids']