-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
90 lines (62 loc) · 2.86 KB
/
main.py
File metadata and controls
90 lines (62 loc) · 2.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import os
import yaml
import pickle
import time
from utils import load_config, get_directory_structure
from collectors import AnalysisCollector
from colocalization import run_analysis
###############################################################################################
def main():
"""Main processing function that handles multiple conditions and proteins"""
start_time = time.time()
config = load_config('config.yaml')
input_dir = config['input_dir']
output_dir = config['output_dir']
dark_time_analysis = config.get('dark_time_analysis', False)
cross_coloc = config.get('cross_coloc', False)
patching = config.get('patching', False)
simulation = config.get('simulation', False)
data_mask = config['data_mask']
calibration_mask = config['calibration_mask']
# Extract filter parameters from config
filter_params = config.get('filter_params', {})
filter_enabled = filter_params.pop('enabled', False)
# Extract analysis parameters from config
pxl_size = config['analysis']['pixel_size']
coloc_threshold = config['analysis']['coloc_threshold']
patch_size = config['analysis']['patch_size']
# Get directory structure: conditions -> proteins -> files
structure, protein_names, condition_names = get_directory_structure(input_dir)
collector = AnalysisCollector(protein_names, cross_coloc)
print(f"Analysis parameters: \n Pixel size: {pxl_size} \n Colocalization threshold: {coloc_threshold}")
print(f"\nFiltering of raw data: {filter_enabled}")
print(f"Dark time analysis enabled: {dark_time_analysis}")
print(f"Cross colocalization enabled: {cross_coloc}")
print(f"\nConditions to process: {condition_names} \nProteins to process: {protein_names}")
run_analysis(output_dir,
structure,
filter_params,
filter_enabled,
condition_names,
collector,
protein_names,
coloc_threshold,
pxl_size,
data_mask,
calibration_mask,
dark_time_analysis,
cross_coloc,
patching, patch_size,
simulation)
# with open(os.path.join(output_dir, 'collector.pkl'), 'wb') as f:
# pickle.dump(collector, f)
print("\n=== Saving results ===")
protein_df = collector.get_protein_df()
protein_df.to_pickle(os.path.join(output_dir, 'protein_df.pkl'))
collector.save_results(output_dir)
print(f"Analysis completed in {time.time() - start_time:.2f} seconds")
if __name__ == "__main__":
config = load_config('config.yaml')
input_dir = config['input_dir']
out_base_path = config['output_dir']
main()