5
5
import tifffile as tiff
6
6
from skimage .exposure import equalize_adapthist
7
7
8
- def processing (transcript_metadata_file , transcript_data_file , cell_polygon_metadata_file , cell_polygon_data_file , image_files , thickness , subset_interval_y_x , pixel_size , tech_name ):
8
+ def segmentation_qc (transcript_metadata_file , transcript_data_file , cell_polygon_metadata_file , cell_polygon_data_file , image_files , thickness , subset_interval_y_x , pixel_size , tech_name ):
9
9
10
- metrics = {}
11
- trx_meta = pd .read_parquet (transcript_metadata_file )
10
+ metrics = {}
11
+ trx_meta = pd .read_parquet (transcript_metadata_file )
12
12
13
13
if transcript_data_file .endswith (".csv" ):
14
14
trx = pd .read_csv (transcript_data_file )
@@ -19,24 +19,24 @@ def processing(transcript_metadata_file, transcript_data_file, cell_polygon_meta
19
19
20
20
cell_gdf = gpd .read_parquet (cell_polygon_data_file )
21
21
cell_meta_gdf = gpd .read_parquet (cell_polygon_metadata_file )
22
-
22
+
23
23
percentage_of_assigned_transcripts = (len (trx_meta ) / len (trx )) * 100
24
-
25
- for image_index , image_path in enumerate (image_files ):
26
- with tiff .TiffFile (image_path , is_ome = False ) as image_file :
27
24
28
- series = image_file .series [0 ]
29
- plane = series .pages [0 ]
25
+ # for image_index, image_path in enumerate(image_files):
26
+ # with tiff.TiffFile(image_path, is_ome=False) as image_file:
27
+
28
+ # series = image_file.series[0]
29
+ # plane = series.pages[0]
30
30
31
- subset_channel_image = equalize_adapthist (plane .asarray ()[subset_interval_y_x [0 ]:subset_interval_y_x [1 ], subset_interval_y_x [2 ]:subset_interval_y_x [3 ]], kernel_size = [100 , 100 ], clip_limit = 0.01 , nbins = 256 )
31
+ # subset_channel_image = equalize_adapthist(plane.asarray()[subset_interval_y_x[0]:subset_interval_y_x[1], subset_interval_y_x[2]:subset_interval_y_x[3]], kernel_size=[100, 100], clip_limit=0.01, nbins=256)
32
32
33
- metrics [f"{ image_index } _indexed_image_channel_intensity" ] = np .mean (subset_channel_image )
33
+ # metrics[f"{image_index}_indexed_image_channel_intensity"] = np.mean(subset_channel_image)
34
34
35
35
metrics ['proportion_transcripts_assigned_to_cells' ] = percentage_of_assigned_transcripts
36
36
metrics ['total_number_of_cells' ] = len (cell_gdf )
37
37
metrics ['average_cell_area' ] = cell_gdf ['geometry' ].area .mean ()
38
38
metrics ['average_cell_volume' ] = (cell_gdf ['geometry' ].area * thickness ).mean ()
39
-
39
+
40
40
metrics ['average_transcripts_per_cell' ] = trx_meta .groupby ('cell_index' ).size ().mean ()
41
41
metrics ['median_transcripts_per_cell' ] = trx_meta .groupby ("cell_index" )["transcript_index" ].count ().median ()
42
42
@@ -57,7 +57,7 @@ def processing(transcript_metadata_file, transcript_data_file, cell_polygon_meta
57
57
metrics_df = metrics_df .T
58
58
metrics_df .columns = [tech_name ]
59
59
metrics_df = metrics_df .T
60
-
60
+
61
61
gene_specific_metrics_df = pd .DataFrame ({
62
62
"proportion_of_cells_expressing_gene" : (trx_meta .groupby ('gene' )['cell_index' ].nunique ()) / len (cell_gdf ),
63
63
"average_expression_of_gene" : trx_meta .groupby ('gene' )['cell_index' ].mean (),
@@ -69,7 +69,7 @@ def processing(transcript_metadata_file, transcript_data_file, cell_polygon_meta
69
69
return metrics_df , gene_specific_metrics_df
70
70
71
71
def ist_segmentation_metrics (transcript_metadata_file , transcript_data_file , cell_polygon_metadata_file , cell_polygon_data_file , image_files , subset_interval_y_x , pixel_size , tech_name , thickness = 1 ):
72
-
72
+
73
73
"""
74
74
A function to calculate segmentation quality control
75
75
metrics for imaging spatial transcriptomics data.
0 commit comments