from vipercore.pipeline.project import Project
from vipercore.pipeline.workflows import ShardedWGASegmentation
from vipercore.pipeline.extraction import HDF5CellExtraction
from vipercore.pipeline.classification import MLClusterClassifier
from vipercore.pipeline.selection import LMDSelection
from vipercore.processing.utils import download_testimage
import numpy as np
import os
import csv
slides = ["10h_T002.1",
"10h_T002.2",
"10h_T003.1",
"10h_T004.1",
"10h_T004.2",
"10h_T005.1",
"10h_T005.2",
"10h_T006.1",
"10h_T006.2",]
base_path = '/mnt/dss/microscopy_images/Autophagy_Screen/Training_Data'
for slide in slides:
path = os.path.join(base_path, slide)
single_images = os.path.join(path, 'merged_files', 'example_images')
files = os.listdir(single_images)
files_DAPI = np.sort([x for x in files if 'DAPI' in x])
files_WGA = np.sort([x for x in files if 'Alexa488' in x])
files_mcherry = np.sort([x for x in files if 'mCherry' in x])
for i in range(0, 5):
images = [os.path.join(single_images, files_DAPI[i]),
os.path.join(single_images, files_WGA[i]),
os.path.join(single_images, files_mcherry[i])]
project_location = os.path.join(path, "individual_segmentation_"+str(i))
project = Project(project_location,
config_path= "config_autophagy.yml",
overwrite=True,
debug=False,
segmentation_f=ShardedWGASegmentation,
extraction_f=HDF5CellExtraction,
classification_f=MLClusterClassifier,)
project.load_input_from_file(images)
project.segment(intermediate_output = False, debug = False)
project.extract()
project.classify([[], [], []])
Error occurred when processing slide index 2 (i.e. 10h_T003.1) the first image tile in the classification step.
Error message:
OMP: Info #276: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/tmp/ipykernel_290196/1473147590.py in <module>
26 project.segment(intermediate_output = False, debug = False)
27 project.extract()
---> 28 project.classify([[], [], []])
~/viper-core/src/vipercore/pipeline/project.py in classify(self, *args, **kwargs)
324 raise ValueError("input was not found at {}".format(input_extraction))
325
--> 326 self.classification_f(input_extraction, *args, **kwargs)
327
328 def select(self,
~/viper-core/src/vipercore/pipeline/classification.py in __call__(self, extraction_dir, accessory, size, project_dataloader, accessory_dataloader)
224 self.log(f"log transfrom: {self.config['log_transform']}")
225
--> 226 self.inference(dataloader, model.network.encoder_c2)
227 self.inference(dataloader, model.network.forward)
228
~/viper-core/src/vipercore/pipeline/classification.py in inference(self, dataloader, model_fun)
278 d1, d2 = result.shape
279 pca = PCA(n_components=min(d2, self.config["pca_dimensions"]))
--> 280 embedding_pca = pca.fit_transform(result)
281
282 # save pre dimension reduction pca results
~/miniconda3/envs/viper-core/lib/python3.9/site-packages/sklearn/decomposition/_pca.py in fit_transform(self, X, y)
381 C-ordered array, use 'np.ascontiguousarray'.
382 """
--> 383 U, S, Vt = self._fit(X)
384 U = U[:, :self.n_components_]
385
~/miniconda3/envs/viper-core/lib/python3.9/site-packages/sklearn/decomposition/_pca.py in _fit(self, X)
428 # Call different fits for either full or truncated SVD
429 if self._fit_svd_solver == 'full':
--> 430 return self._fit_full(X, n_components)
431 elif self._fit_svd_solver in ['arpack', 'randomized']:
432 return self._fit_truncated(X, n_components, self._fit_svd_solver)
~/miniconda3/envs/viper-core/lib/python3.9/site-packages/sklearn/decomposition/_pca.py in _fit_full(self, X, n_components)
444 "if n_samples >= n_features")
445 elif not 0 <= n_components <= min(n_samples, n_features):
--> 446 raise ValueError("n_components=%r must be between 0 and "
447 "min(n_samples, n_features)=%r with "
448 "svd_solver='full'"
ValueError: n_components=100 must be between 0 and min(n_samples, n_features)=90 with svd_solver='full'
Code run to generate error message:
Error occurred when processing slide index 2 (i.e. 10h_T003.1) the first image tile in the classification step.
Error message: