@@ -30,6 +30,24 @@ process CREATE_VERSION_CONFIG {
3030 """
3131}
3232
33+ process INIT_JABS_PROJECTS {
34+ label ' jabs_classify'
35+ label ' cpu'
36+ cpus 8
37+
38+ input:
39+ val(project_folder_name)
40+
41+ output:
42+ val(project_folder_name), emit: initialized_project
43+
44+ script:
45+ def project_path = " ${ params.classifier_project_folders} /${ project_folder_name} "
46+ def project_file = " ${ project_path} /jabs/project.json"
47+ """
48+ jabs-init "${ project_path} " \$ (jq -r '[.behavior[] | .window_size] | unique | map("-w \\ (.)") | join(" ")' ${ project_file} )
49+ """
50+ }
3351
3452process EXPORT_TRAINING_DATA {
3553 tag " export_${ behavior_path} "
@@ -172,13 +190,41 @@ workflow {
172190 main :
173191 CREATE_VERSION_CONFIG ()
174192
193+ // Create channel of behaviors with their details
175194 classifier_ch = Channel . from(params. single_mouse_classifiers. collect { k , v -> [k, v] })
195+
196+ // Map to include behavior_path
176197 behavior_projects_ch = classifier_ch. map { behavior_name, details ->
177198 def behavior_path = behavior_name. replaceAll(' ' , ' _' ). replaceAll(' [()]' , ' ' )
178199 tuple(behavior_name, behavior_path, details. project_folder_name)
179200 }
180201
181- exported_h5_ch = EXPORT_TRAINING_DATA (behavior_projects_ch)
202+ // Extract unique project folders
203+ unique_projects_ch = classifier_ch
204+ .map { behavior_name, details -> details. project_folder_name }
205+ .unique()
206+
207+ // Initialize each unique project
208+ initialized_projects_ch = INIT_JABS_PROJECTS (unique_projects_ch)
209+
210+ // Create a value channel from initialized projects for joining
211+ initialized_projects_val = initialized_projects_ch. initialized_project
212+ .collect()
213+ .map { projects ->
214+ projects. collectEntries { [it, true ] }
215+ }
216+
217+ // Join behaviors with their initialized projects
218+ ready_behaviors_ch = behavior_projects_ch
219+ .combine(initialized_projects_val)
220+ .map { behavior_name, behavior_path, project_folder_name, project_map ->
221+ // Check if this behavior's project has been initialized
222+ if (project_map[project_folder_name]) {
223+ tuple(behavior_name, behavior_path, project_folder_name)
224+ }
225+ }
226+
227+ exported_h5_ch = EXPORT_TRAINING_DATA (ready_behaviors_ch)
182228
183229 trained_classifiers_ch = TRAIN_CLASSIFIER (exported_h5_ch. h5_file_with_hash)
184230
@@ -190,4 +236,3 @@ workflow {
190236
191237 GENERATE_PIPELINE_CONFIG (collected_behaviors)
192238}
193-
0 commit comments