spacr 0.3.47__py3-none-any.whl → 0.3.52__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
spacr/sequencing.py CHANGED
@@ -493,7 +493,7 @@ def graph_sequencing_stats(settings):
493
493
 
494
494
  def _plot_density(df, dependent_variable, dst=None):
495
495
  """Plot a density plot of the dependent variable."""
496
- plt.figure(figsize=(10, 6))
496
+ plt.figure(figsize=(10, 10))
497
497
  sns.kdeplot(df[dependent_variable], fill=True, alpha=0.6)
498
498
  plt.title(f'Density Plot of {dependent_variable}')
499
499
  plt.xlabel(dependent_variable)
@@ -548,6 +548,9 @@ def graph_sequencing_stats(settings):
548
548
  label=f'Closest Threshold ({closest_threshold["fraction_threshold"]:.4f})')
549
549
  plt.axhline(y=target_unique_count, color='black', linestyle='--',
550
550
  label=f'Target Unique Count ({target_unique_count})')
551
+
552
+ plt.xlim(0,0.1)
553
+ plt.ylim(0,20)
551
554
 
552
555
  if dst is not None:
553
556
  fig_path = os.path.join(dst, 'results')
@@ -594,7 +597,7 @@ def graph_sequencing_stats(settings):
594
597
  df = pd.merge(df, unique_counts, on=['plate', 'row', 'column'], how='left')
595
598
 
596
599
  print(f"unique_count mean: {unique_count_mean} std: {unique_count_std}")
597
-
600
+ display(df)
598
601
  #_plot_density(df, dependent_variable='unique_counts')
599
602
  plot_plates(df=df, variable='unique_counts', grouping='mean', min_max='allq', cmap='viridis',min_count=0, verbose=True, dst=dst)
600
603
 
spacr/settings.py CHANGED
@@ -246,7 +246,7 @@ def get_measure_crop_settings(settings={}):
246
246
  settings.setdefault('normalize_by','png')
247
247
  settings.setdefault('crop_mode',['cell'])
248
248
  settings.setdefault('dialate_pngs', False)
249
- settings.setdefault('dialate_png_ratios', [0.2,0.2])
249
+ settings.setdefault('dialate_png_ratios', [0.2])
250
250
 
251
251
  # Timelapsed settings
252
252
  settings.setdefault('timelapse', False)
@@ -549,7 +549,7 @@ def get_perform_regression_default_settings(settings):
549
549
  settings.setdefault('filter_column','column')
550
550
  settings.setdefault('plate','plate1')
551
551
  settings.setdefault('class_1_threshold',None)
552
- settings.setdefault('metadata_files',['/home/carruthers/Documents/TGME49_Summary.csv','/home/carruthers/Documents/TGGT1_Summary.csv'])
552
+ settings.setdefault('metadata_files',['/home/carruthers/Documents/TGGT1_Summary.csv','/home/carruthers/Documents/TGME49_Summary.csv'])
553
553
  settings.setdefault('volcano','gene')
554
554
  settings.setdefault('toxo', True)
555
555
 
@@ -697,16 +697,6 @@ expected_types = {
697
697
  "overlay_chans": list,
698
698
  "overlay": bool,
699
699
  "normalization_percentiles": list,
700
- "print_object_number": bool,
701
- "nr": int,
702
- "figuresize": int,
703
- "cmap": str,
704
- "test_mode": bool,
705
- "test_images": int,
706
- "remove_background_cell": bool,
707
- "remove_background_nucleus": bool,
708
- "remove_background_pathogen": bool,
709
- "pathogen_model": (str, type(None)),
710
700
  "filter": bool,
711
701
  "fill_in":bool,
712
702
  "upscale": bool,
@@ -825,18 +815,6 @@ expected_types = {
825
815
  "transform": (str, type(None)),
826
816
  "agg_type": str,
827
817
  "min_cell_count": int,
828
- "regression_type": str,
829
- "random_row_column_effects": bool,
830
- "alpha": float,
831
- "fraction_threshold": float,
832
- "class_1_threshold": (float, type(None)),
833
- "batch_size": int,
834
- "CP_prob": float,
835
- "flow_threshold": float,
836
- "percentiles": (list, type(None)),
837
- "invert": bool,
838
- "diameter": int,
839
- "grayscale": bool,
840
818
  "resize": bool,
841
819
  "target_height": (int, type(None)),
842
820
  "target_width": (int, type(None)),
@@ -881,9 +859,6 @@ expected_types = {
881
859
  "metadata_type_by":str,
882
860
  "custom_measurement":str,
883
861
  "custom_model":bool,
884
- "size":int,
885
- "test_split":float,
886
- "class_metadata":list, # This is a list of lists
887
862
  "png_type":str,
888
863
  "custom_model_path":str,
889
864
  "generate_training_dataset":bool,
@@ -894,6 +869,7 @@ expected_types = {
894
869
  "correlate":bool,
895
870
  "target_layer":str,
896
871
  "save_to_db":bool,
872
+ "test_mode":bool,
897
873
  "normalize_input":bool,
898
874
  }
899
875
 
@@ -904,7 +880,7 @@ categories = {"Paths":[ "src", "grna", "barcodes", "custom_model_path", "dataset
904
880
  "Nucleus": ["nucleus_intensity_range", "nucleus_size_range", "nucleus_chann_dim", "nucleus_channel", "nucleus_background", "nucleus_Signal_to_noise", "nucleus_CP_prob", "nucleus_FT", "remove_background_nucleus", "nucleus_min_size", "nucleus_mask_dim", "nucleus_loc"],
905
881
  "Pathogen": ["pathogen_intensity_range", "pathogen_size_range", "pathogen_chann_dim", "pathogen_channel", "pathogen_background", "pathogen_Signal_to_noise", "pathogen_CP_prob", "pathogen_FT", "pathogen_model", "remove_background_pathogen", "pathogen_min_size", "pathogen_mask_dim", "pathogens", "pathogen_loc", "pathogen_types", "pathogen_plate_metadata", ],
906
882
  "Measurements": ["remove_image_canvas", "remove_highly_correlated", "homogeneity", "homogeneity_distances", "radial_dist", "calculate_correlation", "manders_thresholds", "save_measurements", "tables", "image_nr", "dot_size", "filter_by", "remove_highly_correlated_features", "remove_low_variance_features", "channel_of_interest"],
907
- "Object Image": ["save_png", "dialate_pngs", "dialate_png_ratios", "png_size", "png_dims", "save_arrays", "normalize_by", "crop_mode", "dialate_pngs", "normalize", "use_bounding_box"],
883
+ "Object Image": ["save_png", "dialate_pngs", "dialate_png_ratios", "png_size", "png_dims", "save_arrays", "normalize_by", "crop_mode", "normalize", "use_bounding_box"],
908
884
  "Sequencing": ["signal_direction","mode","comp_level","comp_type","save_h5","expected_end","offset","target_sequence","regex", "highlight"],
909
885
  "Generate Dataset":["save_to_db","file_metadata","class_metadata", "annotation_column","annotated_classes", "dataset_mode", "metadata_type_by","custom_measurement", "sample", "size"],
910
886
  "Hyperparamiters (Training)": ["png_type", "score_threshold","file_type", "train_channels", "epochs", "loss_type", "optimizer_type","image_size","val_split","learning_rate","weight_decay","dropout_rate", "init_weights", "train", "classes", "augment", "amsgrad","use_checkpoint","gradient_accumulation","gradient_accumulation_steps","intermedeate_save","pin_memory"],
@@ -939,6 +915,9 @@ def check_settings(vars_dict, expected_types, q=None):
939
915
  continue
940
916
 
941
917
  value = var.get()
918
+ if value == 'None':
919
+ value = None
920
+
942
921
  expected_type = expected_types.get(key, str)
943
922
 
944
923
  try:
@@ -953,14 +932,19 @@ def check_settings(vars_dict, expected_types, q=None):
953
932
  # settings[key] = None
954
933
  else:
955
934
  raise ValueError("Invalid format for list or list of lists")
935
+
956
936
  elif expected_type == list:
957
937
  settings[key] = parse_list(value) if value else None
938
+
939
+ if isinstance(settings[key], list) and len(settings[key]) == 1:
940
+ settings[key] = settings[key][0]
941
+
958
942
  elif expected_type == bool:
959
943
  settings[key] = value if isinstance(value, bool) else value.lower() in ['true', '1', 't', 'y', 'yes']
960
944
  elif expected_type == (int, type(None)):
961
- settings[key] = int(value) if value else None
945
+ settings[key] = settings[key] = int(value) if isinstance(value, int) or str(value).isdigit() else None
962
946
  elif expected_type == (float, type(None)):
963
- settings[key] = float(value) if value else None
947
+ settings[key] = float(value) if isinstance(value, float) or (isinstance(value, str) and value.replace(".", "", 1).isdigit()) else None
964
948
  elif expected_type == (int, float):
965
949
  settings[key] = float(value) if '.' in value else int(value)
966
950
  elif expected_type == (str, type(None)):
@@ -1000,7 +984,7 @@ def check_settings(vars_dict, expected_types, q=None):
1000
984
  settings[key] = expected_type(value) if value else None
1001
985
  except (ValueError, SyntaxError) as e:
1002
986
  expected_type_name = ' or '.join([t.__name__ for t in expected_type]) if isinstance(expected_type, tuple) else expected_type.__name__
1003
- q.put(f"Error: Invalid format for {key}. Expected type: {expected_type_name}. Error: {e}")
987
+ q.put(f"Error: Invalid format for {key}. Expected type: {expected_type_name}. Error: {e}, Value entered: {value}")
1004
988
  return
1005
989
 
1006
990
  return settings