Skip to content

Commit be16139

Browse files
authored
Merge pull request #128 from alexpiet/alex_sfn
Alex sfn
2 parents 5f2b968 + 78b1210 commit be16139

19 files changed

+1947
-711
lines changed

scripts/model_check.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
##########################
2+
# Check if all fits have completed:
3+
4+
experiment_ids = [792813858, 792815735, 794381992, 795073741, 795076128, 795952471,
5+
795953296, 796105304, 796108483, 796308505, 797255551, 798404219,
6+
803736273, 805784331, 806455766, 806456687, 806989729, 807752719,
7+
807753318, 807753334, 808619543, 808621034, 808621958, 809497730,
8+
809501118, 811456530, 811458048, 813083478, 815652334, 817267785,
9+
820307518, 822647135, 825130141, 826587940, 830093338, 830700781,
10+
830700800, 833629926, 833631914, 834279496, 836258936, 836258957,
11+
836911939, 837296345, 837729902, 842973730, 843519218, 847125577,
12+
848692970, 848694639, 848697604, 848697625, 848698709, 849199228,
13+
849203565, 849203586, 850479305, 850489605, 851056106, 851060467,
14+
851932055, 852691524, 853328115, 853962951, 853962969, 854703305,
15+
855577488, 855582961, 855582981, 856096766, 859147033, 862848066,
16+
863735602, 864370674, 873972085, 877022592, 878363088, 879331157,
17+
880374622, 880961028]
18+
mouse_ids= [744911447,756674776,760949537,772622642,772629800,784057617,789992895,791756316,803258370,813703535,820871399,820878203,823826963,834823464]
19+
20+
import psy_tools as ps
21+
import os
22+
dir7="/home/alex.piet/codebase/behavior/psy_fits_v7/"
23+
dir8="/home/alex.piet/codebase/behavior/psy_fits_v8/"
24+
25+
26+
def check_sessions(experiment_ids, mouse_ids,dir):
27+
print('The following sessions need to be fit')
28+
passive = ps.get_passive_ids()
29+
not_complete = []
30+
for id in experiment_ids:
31+
if not os.path.isfile(dir+str(id)+".pkl"):
32+
if id not in passive:
33+
print(id)
34+
not_complete.append(id)
35+
36+
print('The following mice need to be fit')
37+
not_complete_mice = []
38+
for id in mouse_ids:
39+
if not os.path.isfile(dir+"mouse_"+str(id)+".pkl"):
40+
print(id)
41+
not_complete_mice.append(id)
42+
43+
check_sessions(experiment_ids, mouse_ids, dir7)
44+
check_sessions(experiment_ids, mouse_ids, dir8)
45+
46+

scripts/psytrack_fit.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
name_of_this_file = sys.argv[0]
88
experiment_id = sys.argv[1]
99

10-
dirc = "/home/alex.piet/codebase/behavior/psy_fits_v6/"
11-
ps.process_session(experiment_id,directory=dirc)
10+
dirc = '/home/alex.piet/codebase/behavior/psy_fits_v8/'
11+
ps.process_session(experiment_id,directory=dirc,format_options={'mean_center':True})
1212

scripts/psytrack_fit_v7.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/usr/bin/env python
2+
3+
import sys
4+
import psy_tools as ps
5+
6+
if __name__ == '__main__':
7+
name_of_this_file = sys.argv[0]
8+
experiment_id = sys.argv[1]
9+
10+
dirc = "/home/alex.piet/codebase/behavior/psy_fits_v7/"
11+
ps.process_session(experiment_id,directory=dirc)
12+

scripts/psytrack_mouse_fit.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@
77
name_of_this_file = sys.argv[0]
88
donor_id = sys.argv[1]
99

10-
ps.process_mouse(donor_id)
10+
directory = '/home/alex.piet/codebase/behavior/psy_fits_v8/'
11+
ps.process_mouse(donor_id,directory=directory,format_options={'mean_center':True})
1112

scripts/psytrack_mouse_fit_v7.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/usr/bin/env python
2+
3+
import sys
4+
import psy_tools as ps
5+
6+
if __name__ == '__main__':
7+
name_of_this_file = sys.argv[0]
8+
donor_id = sys.argv[1]
9+
10+
directory = '/home/alex.piet/codebase/behavior/psy_fits_v7/'
11+
ps.process_mouse(donor_id,directory=directory)
12+

scripts/psytrack_mouse_start.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,18 @@
55
from pbstools import PythonJob
66

77
python_file = r"/allen/programs/braintv/workgroups/nc-ophys/alex.piet/behavior/licking_behavior/scripts/psytrack_mouse_fit.py"
8-
jobdir = '/allen/programs/braintv/workgroups/nc-ophys/alex.piet/behavior/psy_fits_v4/psytrack_mouse_20191004'
8+
jobdir = '/allen/programs/braintv/workgroups/nc-ophys/alex.piet/behavior/psy_fits_v8/psytrack_mouse_logs'
99
job_settings = {'queue': 'braintv',
1010
'mem': '15g',
11-
'walltime': '48:00:00',
11+
'walltime': '96:00:00',
1212
'ppn':1,
1313
'jobdir': jobdir,
1414
}
1515

1616

1717
experiment_ids = [744911447,756674776,760949537,772622642,772629800,784057617,789992895,791756316,803258370,813703535,820871399,820878203,823826963,834823464]
1818

19+
1920
for experiment_id in experiment_ids:
2021
PythonJob(
2122
python_file,

scripts/psytrack_mouse_start_v7.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import sys
2+
#sys.path.append('/allen/programs/braintv/workgroups/nc-ophys/Doug/pbstools')
3+
#from pbstools import PythonJob
4+
sys.path.append('/allen/programs/braintv/workgroups/nc-ophys/nick.ponvert/src/pbstools')
5+
from pbstools import PythonJob
6+
7+
python_file = r"/allen/programs/braintv/workgroups/nc-ophys/alex.piet/behavior/licking_behavior/scripts/psytrack_mouse_fit_v7.py"
8+
jobdir = '/allen/programs/braintv/workgroups/nc-ophys/alex.piet/behavior/psy_fits_v7/psytrack_mouse_logs'
9+
job_settings = {'queue': 'braintv',
10+
'mem': '15g',
11+
'walltime': '96:00:00',
12+
'ppn':1,
13+
'jobdir': jobdir,
14+
}
15+
16+
17+
experiment_ids = [744911447,756674776,760949537,772622642,772629800,784057617,789992895,791756316,803258370,813703535,820871399,820878203,823826963,834823464]
18+
19+
20+
for experiment_id in experiment_ids:
21+
PythonJob(
22+
python_file,
23+
python_executable='/home/alex.piet/codebase/miniconda3/envs/visbeh/bin/python',
24+
python_args=experiment_id,
25+
conda_env=None,
26+
jobname = 'psym_{}'.format(experiment_id),
27+
**job_settings
28+
).run(dryrun=False)
29+
30+
31+

scripts/psytrack_start.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from pbstools import PythonJob
66

77
python_file = r"/allen/programs/braintv/workgroups/nc-ophys/alex.piet/behavior/licking_behavior/scripts/psytrack_fit.py"
8-
jobdir = '/allen/programs/braintv/workgroups/nc-ophys/alex.piet/behavior/psy_fits_v6/psytrack_logs'
8+
jobdir = '/allen/programs/braintv/workgroups/nc-ophys/alex.piet/behavior/psy_fits_v8/psytrack_logs'
99
job_settings = {'queue': 'braintv',
1010
'mem': '10g',
1111
'walltime': '96:00:00',
@@ -28,6 +28,7 @@
2828
863735602, 864370674, 873972085, 877022592, 878363088, 879331157,
2929
880374622, 880961028]
3030

31+
3132
for experiment_id in experiment_ids:
3233
PythonJob(
3334
python_file,

scripts/psytrack_start_v7.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import sys
2+
#sys.path.append('/allen/programs/braintv/workgroups/nc-ophys/Doug/pbstools')
3+
#from pbstools import PythonJob
4+
sys.path.append('/allen/programs/braintv/workgroups/nc-ophys/nick.ponvert/src/pbstools')
5+
from pbstools import PythonJob
6+
7+
python_file = r"/allen/programs/braintv/workgroups/nc-ophys/alex.piet/behavior/licking_behavior/scripts/psytrack_fit_v7.py"
8+
jobdir = '/allen/programs/braintv/workgroups/nc-ophys/alex.piet/behavior/psy_fits_v7/psytrack_logs'
9+
job_settings = {'queue': 'braintv',
10+
'mem': '10g',
11+
'walltime': '96:00:00',
12+
'ppn':1,
13+
'jobdir': jobdir,
14+
}
15+
16+
experiment_ids = [792813858, 792815735, 794381992, 795073741, 795076128, 795952471,
17+
795953296, 796105304, 796108483, 796308505, 797255551, 798404219,
18+
803736273, 805784331, 806455766, 806456687, 806989729, 807752719,
19+
807753318, 807753334, 808619543, 808621034, 808621958, 809497730,
20+
809501118, 811456530, 811458048, 813083478, 815652334, 817267785,
21+
820307518, 822647135, 825130141, 826587940, 830093338, 830700781,
22+
830700800, 833629926, 833631914, 834279496, 836258936, 836258957,
23+
836911939, 837296345, 837729902, 842973730, 843519218, 847125577,
24+
848692970, 848694639, 848697604, 848697625, 848698709, 849199228,
25+
849203565, 849203586, 850479305, 850489605, 851056106, 851060467,
26+
851932055, 852691524, 853328115, 853962951, 853962969, 854703305,
27+
855577488, 855582961, 855582981, 856096766, 859147033, 862848066,
28+
863735602, 864370674, 873972085, 877022592, 878363088, 879331157,
29+
880374622, 880961028]
30+
31+
32+
for experiment_id in experiment_ids:
33+
PythonJob(
34+
python_file,
35+
python_executable='/home/alex.piet/codebase/miniconda3/envs/visbeh/bin/python',
36+
python_args=experiment_id,
37+
conda_env=None,
38+
jobname = 'psy_{}'.format(experiment_id),
39+
**job_settings
40+
).run(dryrun=False)
41+
42+
43+

src/hierarchical_boot.py

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import numpy as np
2+
import pandas as pd
3+
from copy import copy
4+
5+
6+
class HData():
7+
def __init__(self, df, hierarchy):
8+
'''
9+
df: Dataframe containing the data and all grouping columns contained in hierarchy
10+
hierarchy: List of the hiererarchy levels. For a dataset where you have flashes organized in cells
11+
inside sessions this would be something like ['root', session_id', 'cell_id']
12+
'''
13+
self.df = df
14+
self.df['iloc'] = np.arange(len(self.df)) #Append a column with the index of each row
15+
self.hierarchy = hierarchy
16+
self.root = Node(None,
17+
np.arange(len(self.df)),
18+
self,
19+
level=0,
20+
ontology=[])
21+
class Node():
22+
def __init__(self, unique_val, inds, h_obj, level, ontology):
23+
'''
24+
inds: The inds that define the group in the dataframe
25+
h_obj: The top-level object that contains the tree and the dataframe
26+
level: What level this node is in the hierarchy (at h_obj.hierarchy)
27+
ontology: A list of the parents for this node
28+
'''
29+
self.inds = inds
30+
self.h_obj = h_obj
31+
self.level = level
32+
self.label = self.h_obj.hierarchy[level]
33+
self.ontology = ontology
34+
self.children = []
35+
if self.level < len(self.h_obj.hierarchy)-1:
36+
self.make_children()
37+
def make_children(self):
38+
df_self = self.h_obj.df.iloc[self.inds]
39+
next_label = self.h_obj.hierarchy[self.level+1]
40+
unique_vals = df_self[next_label].unique()
41+
child_ontology = self.ontology + [self]
42+
for unique_val in unique_vals:
43+
query_string = '{} == {}'.format(next_label, unique_val)
44+
inds_this_child = df_self.query(query_string)['iloc'].values
45+
self.children.append(Node(
46+
unique_val,
47+
inds_this_child,
48+
self.h_obj,
49+
self.level+1,
50+
child_ontology
51+
))
52+
53+
54+
def resample_recursive(start_node, inds_list):
55+
if start_node.level < len(start_node.h_obj.hierarchy)-1:
56+
n_children = len(start_node.children)
57+
child_inds_to_sample = np.random.choice(np.arange(n_children), replace=True, size=n_children)
58+
for ind_child in child_inds_to_sample:
59+
resample_recursive(start_node.children[ind_child], inds_list)
60+
else:
61+
inds_list.extend(np.random.choice(start_node.inds, replace=True, size=len(start_node.inds)))
62+
63+
64+
65+
66+
67+
68+
69+
70+

0 commit comments

Comments
 (0)