Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
 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()
Exemplo n.º 5
0
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
Exemplo n.º 6
0
 def run(self):
     while True:
         conn, addr = self.s.accept()
         connect.Connection(conn, addr).start()
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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()
Exemplo n.º 9
0
#!/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']