PyOPIA 2.5.12__tar.gz → 2.6.0__tar.gz

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.
Files changed (26) hide show
  1. {pyopia-2.5.12 → pyopia-2.6.0}/PKG-INFO +1 -1
  2. pyopia-2.6.0/pyopia/__init__.py +1 -0
  3. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/classify.py +7 -8
  4. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/cli.py +1 -1
  5. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/pipeline.py +9 -3
  6. pyopia-2.5.12/pyopia/__init__.py +0 -1
  7. {pyopia-2.5.12 → pyopia-2.6.0}/LICENSE +0 -0
  8. {pyopia-2.5.12 → pyopia-2.6.0}/README.md +0 -0
  9. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/background.py +0 -0
  10. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/exampledata.py +0 -0
  11. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/instrument/__init__.py +0 -0
  12. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/instrument/common.py +0 -0
  13. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/instrument/holo.py +0 -0
  14. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/instrument/silcam.py +0 -0
  15. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/instrument/uvp.py +0 -0
  16. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/io.py +0 -0
  17. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/plotting.py +0 -0
  18. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/process.py +0 -0
  19. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/simulator/__init__.py +0 -0
  20. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/simulator/silcam.py +0 -0
  21. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/statistics.py +0 -0
  22. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/tests/__init__.py +0 -0
  23. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/tests/test_classify.py +0 -0
  24. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/tests/test_notebooks.py +0 -0
  25. {pyopia-2.5.12 → pyopia-2.6.0}/pyopia/tests/test_pipeline.py +0 -0
  26. {pyopia-2.5.12 → pyopia-2.6.0}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyOPIA
3
- Version: 2.5.12
3
+ Version: 2.6.0
4
4
  Summary: A Python Ocean Particle Image Analysis toolbox.
5
5
  Home-page: https://github.com/sintef/pyopia
6
6
  Keywords: Ocean,Particles,Imaging,Measurement,Size distribution
@@ -0,0 +1 @@
1
+ __version__ = '2.6.0'
@@ -5,7 +5,6 @@ Module containing tools for classifying particle ROIs
5
5
  import os
6
6
  import numpy as np
7
7
  import pandas as pd
8
-
9
8
  import logging
10
9
  logger = logging.getLogger()
11
10
 
@@ -77,6 +76,10 @@ class Classify():
77
76
  self.model_path = model_path
78
77
  self.load_model()
79
78
 
79
+ # Get config for image resizing from the model
80
+ _, self.img_height, self.img_width, _ = self.model.get_config()['layers'][0]['config']['batch_shape']
81
+ self.pad_to_aspect_ratio = getattr(self.model.layers[0], 'pad_to_aspect_ratio', False)
82
+
80
83
  # Enable this to perform whitebalance correction in the preprocessing step
81
84
  self.correct_whitebalance = False
82
85
 
@@ -134,7 +137,7 @@ class Classify():
134
137
  A particle ROI with range 0.-255., corrected and preprocessed, ready for prediction
135
138
  '''
136
139
 
137
- whitebalanced = np.copy(img_input).astype(np.float64)
140
+ whitebalanced = img_input.astype(np.float64)
138
141
 
139
142
  # Do white-balance correction as a per-channel histogram shift
140
143
  if self.correct_whitebalance:
@@ -150,14 +153,10 @@ class Classify():
150
153
  # which loads images in 0-255 range
151
154
  img = keras.utils.img_to_array(whitebalanced * 255)
152
155
 
153
- # Get config for image resizing from the model
154
- _, img_height, img_width, _ = self.model.get_config()['layers'][0]['config']['batch_shape']
155
- pad_to_aspect_ratio = getattr(self.model.layers[0], 'pad_to_aspect_ratio', False)
156
-
157
156
  # resize to match the dimentions expected by the network
158
- img = tf.image.resize(img, [img_height, img_width],
157
+ img = tf.image.resize(img, [self.img_height, self.img_width],
159
158
  method=tf.image.ResizeMethod.BILINEAR,
160
- preserve_aspect_ratio=pad_to_aspect_ratio)
159
+ preserve_aspect_ratio=self.pad_to_aspect_ratio)
161
160
 
162
161
  img_array = tf.keras.utils.img_to_array(img)
163
162
  img_preprocessed = tf.expand_dims(img_array, 0) # Create a batch
@@ -139,7 +139,7 @@ def process(config_filename: str, num_chunks: int = 1):
139
139
 
140
140
  check_chunks(num_chunks, pipeline_config)
141
141
 
142
- progress.console.print("[blue]OBTAIN FILE LIST")
142
+ progress.console.print("[blue]OBTAIN IMAGE LIST")
143
143
  raw_files = pyopia.pipeline.FilesToProcess(pipeline_config['general']['raw_files'])
144
144
  conf_corrbg = pipeline_config['steps'].get('correctbackground', dict())
145
145
  average_window = conf_corrbg.get('average_window', 0)
@@ -331,26 +331,32 @@ class FilesToProcess:
331
331
  '''Build file list from glob pattern if specified.
332
332
  Create FilesToProcess.chunked_files is chunks specified
333
333
  File list from glob will be sorted.
334
+ If a filelist file is specified, load the list from there without sorting.
334
335
 
335
336
  Parameters
336
337
  ----------
337
338
  glob_pattern : str, optional
338
- Glob pattern, by default None
339
+ Glob pattern, by default None. If it ends with .txt, interpret as a filelist file.
339
340
  '''
340
341
  def __init__(self, glob_pattern=None):
341
342
  self.files = None
342
343
  self.background_files = []
343
344
  self.chunked_files = []
344
345
  if glob_pattern is not None:
345
- self.files = sorted(glob(glob_pattern))
346
+ # If a .txt file is specified, this indicates we should get the filelist from there
347
+ if glob_pattern.endswith('.txt'):
348
+ self.from_filelist_file(glob_pattern)
349
+ else:
350
+ self.files = sorted(glob(glob_pattern))
346
351
 
347
352
  def from_filelist_file(self, path_to_filelist):
348
353
  '''
349
354
  Initialize explicit list of files to process from a text file.
350
355
  The text file should contain one path to an image per line, which should be processed in order.
351
356
  '''
357
+ logger.info(f'Loading explicit image file list from file: {path_to_filelist}')
352
358
  with open(path_to_filelist, 'r') as fh:
353
- self.files = list(fh.readlines())
359
+ self.files = [line.rstrip() for line in fh.readlines()]
354
360
 
355
361
  def to_filelist_file(self, path_to_filelist):
356
362
  '''Write file list to a txt file
@@ -1 +0,0 @@
1
- __version__ = '2.5.12'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes