@@ -77,7 +77,7 @@ def create_pairwise_binary_mask(binary_matrix, gene_list):
7777
7878 gene_pairs_indices = list (itertools .combinations (range (num_genes ), 2 ))
7979 for g1_idx , g2_idx in gene_pairs_indices :
80- mask = binary_matrix [:, g1_idx ] * binary_matrix [:, g2_idx ]
80+ mask = np . multiply ( binary_matrix [:, g1_idx ] , binary_matrix [:, g2_idx ])
8181 key_fwd = f"{ gene_list [g1_idx ]} _{ gene_list [g2_idx ]} "
8282 pairwise_mask_dict [key_fwd ] = mask
8383 key_rev = f"{ gene_list [g2_idx ]} _{ gene_list [g1_idx ]} "
@@ -102,13 +102,14 @@ def dict_to_dataframe(mask_dict, column_order_list):
102102 pd.DataFrame: A DataFrame with masks as columns, in the specified order.
103103 """
104104 # 1. Create a dictionary with only the ordered columns
105- ordered_data = {col : mask_dict [col ] for col in column_order_list if col in mask_dict }
105+ ordered_data = {col : np . asarray ( mask_dict [col ]). squeeze () for col in column_order_list if col in mask_dict }
106106
107107 # 2. Check if all specified columns were found
108108 if len (ordered_data ) != len (column_order_list ):
109109 missing_columns = set (column_order_list ) - set (ordered_data .keys ())
110110 print (f"Warning: The following columns were not found in the mask dictionary: { missing_columns } " )
111111
112+ print (ordered_data )
112113 # 3. Create the DataFrame from the ordered dictionary
113114 df = pd .DataFrame (ordered_data )
114115
@@ -117,7 +118,7 @@ def dict_to_dataframe(mask_dict, column_order_list):
117118def binarize_adata (adata , expression_threshold = 0 ):
118119
119120 if issparse (adata .X ):
120- binary_expression = (adata .X > expression_threshold ).astype (int ). tocsr ( )
121+ binary_expression = (adata .X . todense () > expression_threshold ).astype (int )
121122 else :
122123 binary_expression = (adata .X > expression_threshold ).astype (int )
123124 return binary_expression
@@ -140,9 +141,11 @@ def add_neighbourhood_expression_mask(adata, grn_adata, strict=False):
140141 ne = get_neighborhood_expression (adata , required_neighbours = 5 )
141142 else :
142143 ne = binarize_adata (adata )
143- mask = create_pairwise_binary_mask (ne , adata .var .index )
144+ mask = create_pairwise_binary_mask (ne , list (adata .var .index ))
145+
144146 mask = dict_to_dataframe (mask , column_order_list = grn_adata .var .index )
145147 grn_adata .layers ['mask' ] = mask
148+ grn_adata .var ['count_nonzero' ] = np .sum (grn_adata .layers ['mask' ], axis = 0 )
146149 return grn_adata
147150
148151
0 commit comments