koronascript 0.2.1__tar.gz → 3.0.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.
@@ -0,0 +1,3 @@
1
+ # Auto-generated, do not edit directly
2
+ # see genmodule.py
3
+ modules_spec = {'AngleDeletion': {'Active': True, 'Comment': ''}, 'BroadbandNotchFilter': {'Active': True, 'Comment': ''}, 'BroadbandSplitter': {'Active': True, 'Comment': '', 'AutoSplit': False, 'SplitCount': 3, 'SplitBandwidth': '', 'StopBandDistance': 1.0, 'MinBandwidth': 10.0, 'Downsampling': 'FACTOR', 'DownsamplingFactor': 1, 'DownsamplingSampleSize': 0.01, 'ComputeAngles': True, 'ComputationalMethod': 'BANDPASS_FILTERING', 'FftWindowSize': 2.0}, 'BubblSpikeFilter': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': False, 'StartDepth': 10.0, 'EndDepth': 2500.0, 'TotalDelta': 15.0, 'VerticalDelta': 15.0, 'Debug': False, 'VerticalUnit': 'DURATION', 'VerticalMedianSearchHeight': 50, 'WindowMedianSearchHeight': 35, 'VerticalMedianSearchDuration': 2.0, 'WindowMedianSearchDuration': 4.4, 'VerticalMedianSearchDistance': 1.9, 'WindowMedianSearchDistance': 6.6}, 'Categorization': {'Active': True, 'Comment': '', 'CategoryCount': 3, 'ActiveFeatures': [], 'ActiveCategories': [], 'Categorizer': 'Gauss', 'Discriminant': 'Aposteriori', 'ContextualCorrection': 'ICM', 'ContextualIterations': 3, 'UseMinLogSv': True, 'MinLogSv': -100.0}, 'CdsViewer': {'Active': True, 'Comment': ''}, 'ChannelDataRemoval': {'Active': True, 'Comment': '', 'Channels': '', 'ChannelsFromEnd': '', 'Frequencies': '', 'DataType': '', 'TransmitMode': '', 'PingId': '', 'KeepSpecified': False}, 'ChannelRemoval': {'Active': True, 'Comment': '', 'Channels': '', 'ChannelsFromEnd': '', 'Frequencies': '', 'DataType': '', 'TransmitMode': '', 'PingId': '', 'KeepSpecified': False}, 'Combination': {'Active': True, 'Comment': '', 'FirstOperandKhz': 0, 'SecondOperandKhz': 0, 'FirstOperandChannel': 1, 'SecondOperandChannel': 2, 'LogarithmicOperands': False, 'Operation': 'mean'}, 'Comment': {'Active': True, 'Comment': '', 'GroupStart': False, 'GroupCollapsed': False, 'LineBreak': False, 'VerticalSpace': 8, 'Label': ''}, 'ComplexToReal': {'Active': True, 'Comment': '', 'ComputeAngles': True, 'KeepBroadband': False}, 'DataReduction': {'Active': True, 'Comment': '', 'BlindZone': False, 'MinRange': '', 'MinDepth': '', 'TransducerRange': True, 'MaxRange': '', 'MaxDepth': '', 'MaxBelowBottom': ''}, 'DepthDependentResampling': {'Active': True, 'Comment': '', 'MinFrequency': 150.0, 'SampleDistanceAtRange100': 0.0}, 'Depth': {'Active': True, 'Comment': '', 'Algorithm': 'EK500', 'MinDepthLimit': 10.0, 'MinDepthValueFraction': 0.001, 'SignalStrengthThreshold': -31.0, 'MinimumDepthThresholdFactor': 0.99, 'MaxRangeFactor': 1.5, 'AlwaysDetectBottom': True, 'MinBottomDepth': 0.0, 'MaxBottomDepth': 9999.0, 'PreferredKHz': '', 'MinKHz': 0.0, 'MaxKHz': 9999.0, 'DoNotUseKHz': ''}, 'Dilate': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': True, 'StartDepth': 10.0, 'EndDepth': 1000.0, 'VertResolution': 1}, 'Downsampling': {'Active': True, 'Comment': '', 'Downsampling': 'FACTOR', 'DownsamplingFactor': 1, 'DownsamplingSampleSize': 0.01}, 'ES60Correction': {'Active': True, 'Comment': '', 'ReliabilityDetectionWindow': 5, 'PerformScan': False, 'ContinueAcrossFiles': False}, 'EchoLineCompression': {'Active': True, 'Comment': '', 'Threshold': -82.0}, 'EdgeDetection': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': True, 'StartDepth': 10.0, 'EndDepth': 1000.0, 'ScaleFactor': 1.0, 'VertResolution': 1}, 'EmptyPingRemoval': {'Active': True, 'Comment': ''}, 'ErodeLowValues': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': True, 'StartDepth': 10.0, 'EndDepth': 1000.0, 'Threshold': -70.0, 'ReplacementValue': -120.0, 'VerticalExtent': 1.0}, 'Erode': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': True, 'StartDepth': 10.0, 'EndDepth': 1000.0, 'VertResolution': 1}, 'Expression': {'Active': True, 'Comment': '', 'Expression': ['C1']}, 'FillMissingData': {'Active': True, 'Comment': ''}, 'Filter3X3': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': True, 'StartDepth': 10.0, 'EndDepth': 1000.0, 'FilterType': 'User defined', '00': 1.0, '01': 1.0, '02': 1.0, '10': 1.0, '11': 1.0, '12': 1.0, '20': 1.0, '21': 1.0, '22': 1.0}, 'FiskViewDisplay': {'Active': True, 'Comment': ''}, 'GroupEnd': {'Active': True, 'Comment': ''}, 'HorizontalOffsetCorrection': {'Active': True, 'Comment': ''}, 'Isolation': {'Active': True, 'Comment': '', 'Category': ''}, 'Median': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': True, 'StartDepth': 10.0, 'EndDepth': 1000.0}, 'NetcdfWriter': {'Active': True, 'Comment': '', 'DirName': 'netcdf', 'MainFrequency': '38', 'WriterType': 'GRIDDED', 'GriddedOutputType': 'SV_AND_ANGLES', 'ChannelGroupOutputType': 'PULSE_COMPRESSION', 'DeltaRange': '', 'MaxRange': '', 'FftWindowSize': 2.0, 'DeltaFrequency': 1.0, 'WriteAngels': True}, 'NoiseAcceptance': {'Active': True, 'Comment': '', 'NoiseFraction': {'min': 0.25, 'max': 4.0}, 'UseFileNoiseFile': True, 'UseDayNoiseFile': True, 'UseSurveyNoiseFile': True, 'UseSurveyLowNoiseFile': True}, 'NoiseMedianQuantification': {'Active': True, 'Comment': '', 'PingHistory': 10, 'NoiseSamplesPerBeam': 100, 'DetectionDistance': 50.0, 'InnermostDistance': False}, 'NoiseQuantification': {'Active': True, 'Comment': '', 'Smooth': 'running averager', 'SmoothInterval': 5, 'Mask': 'dynamic', 'MinimumQuality': 60.0, 'ThresholdMasking': False, 'Threshold': -80.0, 'Histogram': 'geometric', 'UseTimeStepBuffer': True, 'TimeStepBufferMaxSize': 50, 'HistogramInitializationCellCount': 500, 'HistogramMaximumCellCount': 2000, 'HistogramInitializationSampleCount': 1000, 'HistogramMinimumSampleCount': 25000, 'HistogramSmooth': True, 'HistogramSmoothFactor': 100.0, 'SdevMasking': False, 'Sdev': 10.0, 'SNMasking': False, 'SNRatio': 10.0, 'UseFallbackNoiseQuantile': False, 'FallbackNoiseQuantile': 5.0, 'FallbackNoiseChannels': 'true', 'WritePlotParameters': False}, 'NoiseRemover': {'Active': True, 'Comment': '', 'RemoveNoiseFromStart': True, 'MaxBufferSize': 10, 'SampleSizeCorrection': ''}, 'NoiseVisualization': {'Active': True, 'Comment': '', 'TimeSeriesLength': 200, 'HistogramSpan': 3.0, 'MedianSampleCount': 500}, 'PingCollapsing': {'Active': True, 'Comment': ''}, 'PingThinning': {'Active': True, 'Comment': '', 'PingsToSkipInitially': 0, 'PingsToSkip': 0}, 'PlanktonInversion': {'Active': True, 'Comment': '', 'VerticalUnit': 'SAMPLES', 'PingsPerBin': 7, 'DepthSamplesPerBin': 30, 'DepthDurationPerBin': 4.0, 'DepthDistancePerBin': 6.0, 'Use global noise threshold': True, 'Noise threshold': -90.0, 'Use min depth': False, 'Min depth': 20.0, 'Use max depth': False, 'Max depth': 110.0, 'CategoriesUsedForInversion': [], 'UseAllFrequencies': True, 'ActiveFrequencies': [], 'MinResidualErrorThreshold': 0.01, 'MaxResidualErrorThreshold': 0.2, 'LevenbergMarquardtFactor': 0.0005, 'MaxIter': 4, 'HardShelled': True, 'HardShelledR': 0.5, 'GaseousSphere': True, 'GasSphereG': 0.0012, 'GasSphereH': 0.22, 'FluidSpheriod': True, 'FluidSpheriodG': 1.043, 'FluidSpheriodH': 1.052, 'FluidSpheriodBeta': 5.0, 'FluidBent': True, 'FluidBentR': 0.058, 'FluidBentS': 0.1, 'FluidBentBeta': 11.0, 'FluidBent2': False, 'FluidBentR2': 0.058, 'FluidBentS2': 0.1, 'FluidBentBeta 2': 11.0, 'SDWBA': False, 'SDWBA coeff': 'N(0, 30)', 'SDWBA2': False, 'SDWBA 2 coeff': 'N(0, 30)', 'SDWBA3': False, 'SDWBA 3 coeff': 'N(0, 30)', 'SDWBA4': False, 'SDWBA 4 coeff': 'N(0, 30)', 'SDWBA5': False, 'SDWBA 5 coeff': 'N(0, 30)', 'SDWBAS': False, 'SDWBA smooth coeff': 'N(4, 2)', 'PlotResolution': 0.01, 'PlotMaxRange': 5.0}, 'Plugin': {'Active': True, 'Comment': '', 'Example': '', 'Implementation': ''}, 'PulseCompressionFilter': {'Active': True, 'Comment': ''}, 'RemoveBottom': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': True, 'StartDepth': 10.0, 'EndDepth': 1000.0, 'UseNeighbours': False, 'Above': 0, 'Below': 100, 'RemoveAboveBottom': False, 'RemoveBottom': True, 'RemoveBelowBottom': False, 'PixelValue': -120.0}, 'Rescale': {'Active': True, 'Comment': '', 'RescaleChannels': 'all', 'DesiredMinimum': -85.0, 'DesiredMaximum': -30.0, 'MinMaxFraction': 0.05, 'InitializationDatagramCount': 10, 'InitializationMaxPingCount': 100}, 'SchoolCategorization': {'Active': True, 'Comment': '', 'UseCellCategorization': True, 'Horizontal cell size': 16, 'Vertical cell size': 50, 'Upper sample offset': 5, 'Lower sample offset': 5, 'HorizontalOffset': 0, 'SecondaryCategoryFraction': 0.1, 'Fill factor for cells': 0.5, 'MinFractionCategorizedCells': 0.5, 'MinCells': 3, 'SchoolCategorizationDistribution': 'CELL', 'EnableUncategorizedCategory': False, 'EnableUnknownCategory': False}, 'SchoolDetection': {'Active': True, 'Comment': '', 'ProcessLast': True, 'Channel': 1, 'MinDepth': '', 'MaxDepth': '', 'Threshold': -62.0, 'Density': {'min': -120.0, 'max': -20.0}, 'MaxSv': {'min': '-Infinity', 'max': 'Infinity'}, 'Length': {'min': 25.0, 'max': 1000000.0}, 'Thickness': {'min': 10.0, 'max': 1000000.0}, 'Area': {'min': 75.0, 'max': 1000000.0}, 'Compactness': {'min': '-Infinity', 'max': 'Infinity'}, 'FillHoles': True}, 'Smoother': {'Active': True, 'Comment': '', 'OnlyLastChannel': False, 'MaskPelagic': False, 'MaskBottom': True, 'MaskSecondBottom': True, 'MaskNoise': False, 'MaskRegion': 'none', 'MaskTrack': 'none', 'MinPing': 0, 'MaxPing': 10, 'HorizontalKernelType': 'gaussian', 'VerticalKernelType': 'gaussian', 'HorizontalWidth': 8.0, 'VerticalWidth': 0.5, 'LogarithmicValues': False}, 'SpikeFilter': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': False, 'StartDepth': 10.0, 'EndDepth': 2500.0, 'TotalDelta': 15.0, 'VerticalDelta': 15.0, 'Debug': False, 'VerticalUnit': 'DURATION', 'VerticalMedianSearchHeight': 7, 'WindowMedianSearchHeight': 35, 'VerticalMedianSearchDuration': 0.9, 'WindowMedianSearchDuration': 4.4, 'VerticalMedianSearchDistance': 1.3, 'WindowMedianSearchDistance': 6.6}, 'SpotNoise': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': False, 'StartDepth': 10.0, 'EndDepth': 2500.0, 'Delta': 20.0, 'Debug': False}, 'TemporaryComputationsBegin': {'Active': True, 'Comment': ''}, 'TemporaryComputationsEnd': {'Active': True, 'Comment': ''}, 'ThresholdAllChannels': {'Active': True, 'Comment': '', 'Criterion': 'BELOW', 'Threshold': -70.0, 'Replacement': -120.0, 'MinFrequency': '', 'MaxFrequency': ''}, 'Threshold': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': True, 'StartDepth': 10.0, 'EndDepth': 1000.0, 'Threshold': -70.0, 'CutBelow': False, 'CutAbove': False, 'BelowVal': -120.0, 'AboveVal': 0.0}, 'TimeInterval': {'Active': True, 'Comment': '', 'StartDateString': '', 'EndDateString': '', 'StartRelativePingNumber': '', 'EndRelativePingNumber': ''}, 'Towfish': {'Active': True, 'Comment': '', 'TowfishBlindZone': 0.0, 'TowfishEchosounderTimeAddition': 0.0, 'DistBehindFunction': 'PYTAGORAS'}, 'TrackFilter': {'Active': True, 'Comment': '', 'MaxBufferSize': 50, 'KeepValid': True}, 'Tracking': {'Active': True, 'Comment': '', 'TrackerType': 'Aggregation', 'kHz': 38, 'PlatformMotionType': 'Floating', 'MinTS': -66.0, 'PulseLengthDeterminationLevel': 6.0, 'MinEchoLength': 0.01, 'MaxEchoLength': 1.8, 'MaxGainCompensation': 6.0, 'DoPhaseDeviationCheck': True, 'MaxPhaseDevSteps': 8.0, 'MaxTS': 0.0, 'MaxDepth': '', 'MaxAlongshipAngle': 10.0, 'MaxAthwartshipAngle': 10.0, 'InitiationGateFunction': [{'id': 'Alpha', 'description': '', 'unit': 'degree', 'defaultValue': 2.8}, {'id': 'Beta', 'description': '', 'unit': 'degree', 'defaultValue': 2.8}, {'id': 'Range', 'description': '', 'unit': 'm', 'defaultValue': 0.1}, {'id': 'TS', 'description': 'dB', 'unit': 'dB', 'defaultValue': 20.0}], 'InitiationMinLength': 1, 'GateFunction': [{'id': 'Alpha', 'description': '', 'unit': 'degree', 'defaultValue': 2.8}, {'id': 'Beta', 'description': '', 'unit': 'degree', 'defaultValue': 2.8}, {'id': 'Range', 'description': '', 'unit': 'm', 'defaultValue': 0.1}, {'id': 'TS', 'description': 'dB', 'unit': 'dB', 'defaultValue': 20.0}], 'AlphaBetaEstimator': [{'id': 'Alpha', 'description': '', 'allowedValuesDescription': '[0, 1]', 'defaultValue': 0.5}, {'id': 'Beta', 'description': '', 'allowedValuesDescription': '[0, 1]', 'defaultValue': 0.5}], 'MaxMissingPings': 4, 'MaxMissingSamples': 2, 'MaxMissingPingsFraction': 0.5, 'MinTrackLength': 8, 'MinSampleToLengthFraction': 2.0}, 'TsDetection': {'Active': True, 'Comment': '', 'DetectorType': 'SED', 'MinTS': -66.0, 'PulseLengthDeterminationLevel': 6.0, 'MinEchoLength': 0.01, 'MaxEchoLength': 1.8, 'MaxGainCompensation': 6.0, 'DoPhaseDeviationCheck': True, 'MaxPhaseDevSteps': 8.0, 'MaxDepth': ''}, 'VerticalOffsetCorrection': {'Active': True, 'Comment': ''}, 'Writer': {'Active': True, 'Comment': '', 'FileName': '', 'UseRelativeDirectory': False, 'RelativeDirectory': '', 'DirectoryName': ''}}
@@ -1,6 +1,6 @@
1
1
  # Auto-generated, do not edit directly
2
2
  # see genmodule.py
3
-
3
+ from .Configuration import modules_spec
4
4
  from .KoronaModule import KoronaModule
5
5
 
6
6
  class AngleDeletion(KoronaModule):
@@ -24,7 +24,7 @@ class BubblSpikeFilter(KoronaModule):
24
24
  super().__init__('BubblSpikeFilter', **parameters)
25
25
 
26
26
  class Categorization(KoronaModule):
27
- """Module for categorization"""
27
+ """Categorizes each pixel using the configured training data"""
28
28
  def __init__(self, **parameters):
29
29
  super().__init__('Categorization', **parameters)
30
30
 
@@ -44,7 +44,7 @@ class ChannelRemoval(KoronaModule):
44
44
  super().__init__('ChannelRemoval', **parameters)
45
45
 
46
46
  class Combination(KoronaModule):
47
- """Module for generating combination echograms"""
47
+ """Generates combination echograms"""
48
48
  def __init__(self, **parameters):
49
49
  super().__init__('Combination', **parameters)
50
50
 
@@ -69,7 +69,7 @@ class DepthDependentResampling(KoronaModule):
69
69
  super().__init__('DepthDependentResampling', **parameters)
70
70
 
71
71
  class Depth(KoronaModule):
72
- """Bottom depth detection module"""
72
+ """Detects the bottom depth"""
73
73
  def __init__(self, **parameters):
74
74
  super().__init__('Depth', **parameters)
75
75
 
@@ -88,6 +88,11 @@ class ES60Correction(KoronaModule):
88
88
  def __init__(self, **parameters):
89
89
  super().__init__('ES60Correction', **parameters)
90
90
 
91
+ class EchoLineCompression(KoronaModule):
92
+ """Keeps only data above a given threshold"""
93
+ def __init__(self, **parameters):
94
+ super().__init__('EchoLineCompression', **parameters)
95
+
91
96
  class EdgeDetection(KoronaModule):
92
97
  """Detects edges by using Sobel horizontal and vertical filter"""
93
98
  def __init__(self, **parameters):
@@ -109,22 +114,22 @@ class Erode(KoronaModule):
109
114
  super().__init__('Erode', **parameters)
110
115
 
111
116
  class Expression(KoronaModule):
112
- """Module for generating combination echograms by an expression"""
117
+ """Generates combination echograms by a specified expression"""
113
118
  def __init__(self, **parameters):
114
119
  super().__init__('Expression', **parameters)
115
120
 
116
121
  class FillMissingData(KoronaModule):
117
- """Creates missing pingdata"""
122
+ """Adds missing channel data"""
118
123
  def __init__(self, **parameters):
119
124
  super().__init__('FillMissingData', **parameters)
120
125
 
121
126
  class Filter3X3(KoronaModule):
122
- """Class implementing a 33 filter"""
127
+ """Applies a 3×3 filter"""
123
128
  def __init__(self, **parameters):
124
129
  super().__init__('Filter3X3', **parameters)
125
130
 
126
131
  class FiskViewDisplay(KoronaModule):
127
- """Display module"""
132
+ """Displays an echogram for each channel"""
128
133
  def __init__(self, **parameters):
129
134
  super().__init__('FiskViewDisplay', **parameters)
130
135
 
@@ -148,13 +153,18 @@ class Median(KoronaModule):
148
153
  def __init__(self, **parameters):
149
154
  super().__init__('Median', **parameters)
150
155
 
156
+ class NetcdfWriter(KoronaModule):
157
+ """Writes to a .nc file"""
158
+ def __init__(self, **parameters):
159
+ super().__init__('NetcdfWriter', **parameters)
160
+
151
161
  class NoiseAcceptance(KoronaModule):
152
- """Median noise acceptance"""
162
+ """Compares detected noise with values recorded in files"""
153
163
  def __init__(self, **parameters):
154
164
  super().__init__('NoiseAcceptance', **parameters)
155
165
 
156
166
  class NoiseMedianQuantification(KoronaModule):
157
- """Median noise quantification"""
167
+ """Produces noise quantification datagrams using the median of selected sample values"""
158
168
  def __init__(self, **parameters):
159
169
  super().__init__('NoiseMedianQuantification', **parameters)
160
170
 
@@ -189,7 +199,7 @@ class PlanktonInversion(KoronaModule):
189
199
  super().__init__('PlanktonInversion', **parameters)
190
200
 
191
201
  class Plugin(KoronaModule):
192
- """Plugin (beta)"""
202
+ """For writing Java code that implements an API interface for KORONA module computations"""
193
203
  def __init__(self, **parameters):
194
204
  super().__init__('Plugin', **parameters)
195
205
 
@@ -199,7 +209,7 @@ class PulseCompressionFilter(KoronaModule):
199
209
  super().__init__('PulseCompressionFilter', **parameters)
200
210
 
201
211
  class RemoveBottom(KoronaModule):
202
- """Removes bottom data"""
212
+ """Assigns a specified value to samples close to the detected bottom"""
203
213
  def __init__(self, **parameters):
204
214
  super().__init__('RemoveBottom', **parameters)
205
215
 
@@ -249,12 +259,12 @@ class ThresholdAllChannels(KoronaModule):
249
259
  super().__init__('ThresholdAllChannels', **parameters)
250
260
 
251
261
  class Threshold(KoronaModule):
252
- """Masks out values in specific range on individual channels"""
262
+ """Masks out values in a specified range on individual channels"""
253
263
  def __init__(self, **parameters):
254
264
  super().__init__('Threshold', **parameters)
255
265
 
256
266
  class TimeInterval(KoronaModule):
257
- """Module for processing only the pings in a specified time interval"""
267
+ """Processes only the pings in a specified time interval"""
258
268
  def __init__(self, **parameters):
259
269
  super().__init__('TimeInterval', **parameters)
260
270
 
@@ -288,7 +298,3 @@ class Writer(KoronaModule):
288
298
  def __init__(self, **parameters):
289
299
  super().__init__('Writer', **parameters)
290
300
 
291
- class NetcdfWriter(KoronaModule):
292
- """Writes to a .nc file"""
293
- def __init__(self, **parameters):
294
- super().__init__('NetcdfWriter', **parameters)
@@ -10,12 +10,33 @@ import subprocess
10
10
  import tempfile
11
11
  import os
12
12
  import sys
13
+ from zipfile import ZipFile
14
+ import importlib.resources as resources
15
+ import requests
13
16
 
14
17
  from .KoronaModule import global_spec
15
18
 
16
- lsss = os.getenv('LSSS')
17
- if lsss is None:
18
- print('KoronaScript: Warning: $LSSS is not set.')
19
+ CURRENT_LSSS = 'lsss-3.0.0-20250204-0841'
20
+
21
+ if os.getenv('LSSS') is not None:
22
+ lsss = os.getenv('LSSS')
23
+ print(f'KoronaScript: Using external LSSS from variable $LSSS={lsss}.')
24
+ else:
25
+ myos = sys.platform
26
+ lsss = str(resources.files('KoronaScript').joinpath('lsss-3.0.0'))
27
+ if not os.path.exists(lsss):
28
+ basedir = os.path.dirname(lsss)
29
+ print(f'{lsss} does not exist, downloading it.')
30
+ resp = requests.get(f'https://www.marec.no/downloads/{CURRENT_LSSS}/{CURRENT_LSSS}-{myos}.zip')
31
+ resp.raise_for_status()
32
+ with open(f'{basedir}/{CURRENT_LSSS}.zip', 'wb') as f:
33
+ f.write(resp.content)
34
+ with ZipFile(f'{basedir}/{CURRENT_LSSS}.zip', 'r') as z:
35
+ z.extractall(basedir)
36
+ with ZipFile(f'{os.path.dirname(lsss)}/{CURRENT_LSSS}/lsss-3.0.0-{myos}.zip') as z:
37
+ z.extractall(basedir)
38
+ os.chmod(f'{lsss}/jre/bin/java', 0o755)
39
+
19
40
 
20
41
  class KoronaScript():
21
42
  '''Construct, store, and run a set of Korona modules'''
@@ -80,7 +101,10 @@ class KoronaScript():
80
101
  cmd = [java] + javaopts + ['no.imr.korona.main.KoronaCliMain', 'batch', '--cfs', cfsname, '--source', src, '--destination', dst]
81
102
  if debug: print('Running:\n ', cmd)
82
103
  res = subprocess.run(cmd, capture_output=True, text=True)
83
- if debug: print(res.stdout)
104
+ if debug:
105
+ print(res.stdout)
106
+ print()
107
+ print(res.stderr)
84
108
  if res.returncode != 0:
85
109
  err_str = f'Korona subprocess returned an error code: {res.returncode}\n' + '----------------------------------------\n' + res.stderr
86
110
  raise Exception(err_str)
@@ -0,0 +1 @@
1
+ recursive-include KoronaScript/lsss-3.0.0 *
@@ -0,0 +1,52 @@
1
+ Metadata-Version: 2.4
2
+ Name: koronascript
3
+ Version: 3.0.0
4
+ Summary: Wrapper around Korona modules for processing echosounder data
5
+ Home-page: https://github.com/CRIMAC-WP4-Machine-learning/CRIMAC-KoronaScript
6
+ Author: Ketil Malde
7
+ Author-email: ketil@malde.org
8
+ Description-Content-Type: text/markdown
9
+ Requires-Dist: matplotlib
10
+ Requires-Dist: netCDF4
11
+ Requires-Dist: xarray
12
+ Requires-Dist: pytest
13
+ Requires-Dist: requests
14
+
15
+ # Running Korona through Python
16
+
17
+ ## Prerequisites
18
+
19
+ KoronaScript depends on LSSS and Korona version 3.0.0. The `LSSS`
20
+ environment variable can be set to point to an existing installation,
21
+ otherwise, the LSSS distribution will be automatically downloaded from
22
+ the Marec web pages and installed as part of this package.
23
+
24
+ # Usage
25
+
26
+ Import the modules:
27
+
28
+ import KoronaScript as ks
29
+ import KoronaScript.Modules as ksm
30
+
31
+ Create a script object:
32
+
33
+ ks = ks.KoronaScript(Categorization='categorization.xml',
34
+ HorizontalTransducerOffsets='HorizontalTransducerOffsets.xml')
35
+
36
+ Add some modules:
37
+
38
+ ks.add(ksm.EmptyPingRemoval())
39
+ ks.add(ksm.Comment(LineBreak='false', Label='CW_0256ms'))
40
+ ks.add(ksm.ChannelRemoval(Channels=[1,5,9,13,17],KeepSpecified='true'))
41
+ ks.add(ksm.Writer(RelativeDirectory='CW_0256ms'))
42
+
43
+ Write out the resulting configuration:
44
+
45
+ ks.write()
46
+
47
+ Run the script:
48
+
49
+ ks.run(src="input_dir", dst="output_dir")
50
+
51
+ The list of modules and their parameters can be found in the
52
+ [configuration/korona-info.json](configuration/korona-info.json) file.
@@ -0,0 +1,38 @@
1
+ # Running Korona through Python
2
+
3
+ ## Prerequisites
4
+
5
+ KoronaScript depends on LSSS and Korona version 3.0.0. The `LSSS`
6
+ environment variable can be set to point to an existing installation,
7
+ otherwise, the LSSS distribution will be automatically downloaded from
8
+ the Marec web pages and installed as part of this package.
9
+
10
+ # Usage
11
+
12
+ Import the modules:
13
+
14
+ import KoronaScript as ks
15
+ import KoronaScript.Modules as ksm
16
+
17
+ Create a script object:
18
+
19
+ ks = ks.KoronaScript(Categorization='categorization.xml',
20
+ HorizontalTransducerOffsets='HorizontalTransducerOffsets.xml')
21
+
22
+ Add some modules:
23
+
24
+ ks.add(ksm.EmptyPingRemoval())
25
+ ks.add(ksm.Comment(LineBreak='false', Label='CW_0256ms'))
26
+ ks.add(ksm.ChannelRemoval(Channels=[1,5,9,13,17],KeepSpecified='true'))
27
+ ks.add(ksm.Writer(RelativeDirectory='CW_0256ms'))
28
+
29
+ Write out the resulting configuration:
30
+
31
+ ks.write()
32
+
33
+ Run the script:
34
+
35
+ ks.run(src="input_dir", dst="output_dir")
36
+
37
+ The list of modules and their parameters can be found in the
38
+ [configuration/korona-info.json](configuration/korona-info.json) file.
@@ -0,0 +1,52 @@
1
+ Metadata-Version: 2.4
2
+ Name: koronascript
3
+ Version: 3.0.0
4
+ Summary: Wrapper around Korona modules for processing echosounder data
5
+ Home-page: https://github.com/CRIMAC-WP4-Machine-learning/CRIMAC-KoronaScript
6
+ Author: Ketil Malde
7
+ Author-email: ketil@malde.org
8
+ Description-Content-Type: text/markdown
9
+ Requires-Dist: matplotlib
10
+ Requires-Dist: netCDF4
11
+ Requires-Dist: xarray
12
+ Requires-Dist: pytest
13
+ Requires-Dist: requests
14
+
15
+ # Running Korona through Python
16
+
17
+ ## Prerequisites
18
+
19
+ KoronaScript depends on LSSS and Korona version 3.0.0. The `LSSS`
20
+ environment variable can be set to point to an existing installation,
21
+ otherwise, the LSSS distribution will be automatically downloaded from
22
+ the Marec web pages and installed as part of this package.
23
+
24
+ # Usage
25
+
26
+ Import the modules:
27
+
28
+ import KoronaScript as ks
29
+ import KoronaScript.Modules as ksm
30
+
31
+ Create a script object:
32
+
33
+ ks = ks.KoronaScript(Categorization='categorization.xml',
34
+ HorizontalTransducerOffsets='HorizontalTransducerOffsets.xml')
35
+
36
+ Add some modules:
37
+
38
+ ks.add(ksm.EmptyPingRemoval())
39
+ ks.add(ksm.Comment(LineBreak='false', Label='CW_0256ms'))
40
+ ks.add(ksm.ChannelRemoval(Channels=[1,5,9,13,17],KeepSpecified='true'))
41
+ ks.add(ksm.Writer(RelativeDirectory='CW_0256ms'))
42
+
43
+ Write out the resulting configuration:
44
+
45
+ ks.write()
46
+
47
+ Run the script:
48
+
49
+ ks.run(src="input_dir", dst="output_dir")
50
+
51
+ The list of modules and their parameters can be found in the
52
+ [configuration/korona-info.json](configuration/korona-info.json) file.
@@ -1,3 +1,4 @@
1
+ MANIFEST.in
1
2
  README.md
2
3
  setup.cfg
3
4
  setup.py
@@ -9,5 +10,6 @@ koronascript.egg-info/PKG-INFO
9
10
  koronascript.egg-info/SOURCES.txt
10
11
  koronascript.egg-info/dependency_links.txt
11
12
  koronascript.egg-info/not-zip-safe
13
+ koronascript.egg-info/requires.txt
12
14
  koronascript.egg-info/top_level.txt
13
15
  tests/test_examples.py
@@ -0,0 +1,5 @@
1
+ matplotlib
2
+ netCDF4
3
+ xarray
4
+ pytest
5
+ requests
@@ -0,0 +1,28 @@
1
+ [metadata]
2
+ name = koronascript
3
+ version = 3.0.0
4
+ author = Ketil Malde
5
+ author_email = ketil@malde.org
6
+ description = Wrapper around Korona modules for processing echosounder data
7
+ long_description = file: README.md
8
+ long_description_content_type = text/markdown
9
+ url = https://github.com/CRIMAC-WP4-Machine-learning/CRIMAC-KoronaScript
10
+
11
+ [options]
12
+ packages = find:
13
+ include_package_data = True
14
+ zip_safe = False
15
+ install_requires =
16
+ matplotlib
17
+ netCDF4
18
+ xarray
19
+ pytest
20
+ requests
21
+
22
+ [flake8]
23
+ ignore = E302,E501,E203,E701
24
+
25
+ [egg_info]
26
+ tag_build =
27
+ tag_date = 0
28
+
@@ -0,0 +1,3 @@
1
+ from setuptools import setup
2
+
3
+ setup()
@@ -0,0 +1,26 @@
1
+ import sys
2
+ import os
3
+
4
+ sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
5
+
6
+ from examples import channelRemoval as CR
7
+ from examples import pulseCompression as PC
8
+ from examples import tracking as T
9
+ from examples import tsDetection as TS
10
+
11
+ TESTDATA = 'testdata'
12
+
13
+ def test_channelRemoval():
14
+ """This fails to fail if no data is present"""
15
+ CR.ksi.run(TESTDATA, 'test_out/cr_out')
16
+
17
+ def test_pulseCompression():
18
+ PC.ksi.run(TESTDATA, 'test_out/pc_out')
19
+
20
+ def test_tracking():
21
+ """This fails to fail if no data is present"""
22
+ T.ksi.run(TESTDATA, 'test_out/t_out')
23
+
24
+ def test_tsDetection():
25
+ """This fails to fail if no data is present"""
26
+ TS.ksi.run(TESTDATA, 'test_out/ts_out')
@@ -1,3 +0,0 @@
1
- # Auto-generated, do not edit directly
2
- # see genmodule.py
3
- modules_spec = {'AngleDeletion': {'Active': True, 'Comment': ''}, 'BroadbandNotchFilter': {'Active': True, 'Comment': ''}, 'BroadbandSplitter': {'Active': True, 'Comment': '', 'AutoSplit': False, 'SplitCount': 3, 'StopBandDistance': 1.0, 'MinBandwidth': 10.0, 'Downsampling': 'FACTOR', 'DownsamplingFactor': 1, 'DownsamplingSampleSize': 0.01, 'ComputeAngles': True, 'ComputationalMethod': 'BANDPASS_FILTERING', 'FftWindowSize': 2.0}, 'BubblSpikeFilter': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': False, 'StartDepth': 10.0, 'EndDepth': 2500.0, 'TotalDelta': 15.0, 'VerticalDelta': 15.0, 'Debug': False, 'VerticalUnit': 'DURATION', 'VerticalMedianSearchHeight': 50, 'WindowMedianSearchHeight': 35, 'VerticalMedianSearchDuration': 2.0, 'WindowMedianSearchDuration': 4.4, 'VerticalMedianSearchDistance': 1.9, 'WindowMedianSearchDistance': 6.6}, 'Categorization': {'Active': True, 'Comment': '', 'CategoryCount': 3, 'ActiveFeatures': [], 'ActiveCategories': [], 'Categorizer': 'Gauss', 'Discriminant': 'Aposteriori', 'ContextualCorrection': 'ICM', 'ContextualIterations': 3, 'UseMinLogSv': True, 'MinLogSv': -100.0}, 'CdsViewer': {'Active': True, 'Comment': ''}, 'ChannelDataRemoval': {'Active': True, 'Comment': '', 'Channels': '', 'ChannelsFromEnd': '', 'Frequencies': '', 'KeepSpecified': False}, 'ChannelRemoval': {'Active': True, 'Comment': '', 'Channels': '', 'ChannelsFromEnd': '', 'Frequencies': '', 'KeepSpecified': False}, 'Combination': {'Active': True, 'Comment': '', 'FirstOperandKhz': 0, 'SecondOperandKhz': 0, 'FirstOperandChannel': 1, 'SecondOperandChannel': 2, 'LogarithmicOperands': False, 'Operation': 'mean'}, 'Comment': {'Active': True, 'Comment': '', 'GroupStart': False, 'GroupCollapsed': False, 'LineBreak': False, 'VerticalSpace': 8, 'Label': ''}, 'ComplexToReal': {'Active': True, 'Comment': '', 'ComputeAngles': True, 'KeepBroadband': False}, 'DataReduction': {'Active': True, 'Comment': '', 'BlindZone': False, 'MinRange': '', 'MinDepth': '', 'TransducerRange': True, 'MaxRange': '', 'MaxDepth': ''}, 'DepthDependentResampling': {'Active': True, 'Comment': '', 'MinFrequency': 150.0, 'SampleDistanceAtRange100': 0.0}, 'Depth': {'Active': True, 'Comment': '', 'Algorithm': 'EK500', 'MinDepthLimit': 10.0, 'MinDepthValueFraction': 0.001, 'SignalStrengthThreshold': -31.0, 'MinimumDepthThresholdFactor': 0.99, 'MaxRangeFactor': 1.5, 'AlwaysDetectBottom': True, 'MinBottomDepth': 0.0, 'MaxBottomDepth': 9999.0, 'MinKHz': 0.0, 'MaxKHz': 9999.0, 'DoNotUseKHz': ''}, 'Dilate': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': True, 'StartDepth': 10.0, 'EndDepth': 1000.0, 'VertResolution': 1}, 'Downsampling': {'Active': True, 'Comment': '', 'Downsampling': 'FACTOR', 'DownsamplingFactor': 1, 'DownsamplingSampleSize': 0.01}, 'ES60Correction': {'Active': True, 'Comment': '', 'ReliabilityDetectionWindow': 5, 'PerformScan': False, 'ContinueAcrossFiles': False}, 'EdgeDetection': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': True, 'StartDepth': 10.0, 'EndDepth': 1000.0, 'ScaleFactor': 1.0, 'VertResolution': 1}, 'EmptyPingRemoval': {'Active': True, 'Comment': ''}, 'ErodeLowValues': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': True, 'StartDepth': 10.0, 'EndDepth': 1000.0, 'Threshold': -70.0, 'ReplacementValue': -120.0, 'VerticalExtent': 1.0}, 'Erode': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': True, 'StartDepth': 10.0, 'EndDepth': 1000.0, 'VertResolution': 1}, 'Expression': {'Active': True, 'Comment': '', 'Expression': ['C1']}, 'FillMissingData': {'Active': True, 'Comment': ''}, 'Filter3X3': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': True, 'StartDepth': 10.0, 'EndDepth': 1000.0, 'FilterType': 'User defined', '00': 1.0, '01': 1.0, '02': 1.0, '10': 1.0, '11': 1.0, '12': 1.0, '20': 1.0, '21': 1.0, '22': 1.0}, 'FiskViewDisplay': {'Active': True, 'Comment': ''}, 'GroupEnd': {'Active': True, 'Comment': ''}, 'HorizontalOffsetCorrection': {'Active': True, 'Comment': ''}, 'Isolation': {'Active': True, 'Comment': '', 'Category': ''}, 'Median': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': True, 'StartDepth': 10.0, 'EndDepth': 1000.0}, 'NoiseAcceptance': {'Active': True, 'Comment': '', 'NoiseFraction': {'min': 0.25, 'max': 4.0}, 'UseFileNoiseFile': True, 'UseDayNoiseFile': True, 'UseSurveyNoiseFile': True, 'UseSurveyLowNoiseFile': True}, 'NoiseMedianQuantification': {'Active': True, 'Comment': '', 'PingHistory': 10, 'NoiseSamplesPerBeam': 100, 'DetectionDistance': 50.0, 'InnermostDistance': False}, 'NoiseQuantification': {'Active': True, 'Comment': '', 'Smooth': 'running averager', 'SmoothInterval': 5, 'Mask': 'dynamic', 'MinimumQuality': 60.0, 'ThresholdMasking': False, 'Threshold': -80.0, 'Histogram': 'geometric', 'UseTimeStepBuffer': True, 'TimeStepBufferMaxSize': 50, 'HistogramInitializationCellCount': 500, 'HistogramMaximumCellCount': 2000, 'HistogramInitializationSampleCount': 1000, 'HistogramMinimumSampleCount': 25000, 'HistogramSmooth': True, 'HistogramSmoothFactor': 100.0, 'SdevMasking': False, 'Sdev': 10.0, 'SNMasking': False, 'SNRatio': 10.0, 'UseFallbackNoiseQuantile': False, 'FallbackNoiseQuantile': 5.0, 'FallbackNoiseChannels': 'true', 'WritePlotParameters': False}, 'NoiseRemover': {'Active': True, 'Comment': '', 'RemoveNoiseFromStart': True, 'MaxBufferSize': 10}, 'NoiseVisualization': {'Active': True, 'Comment': '', 'UpdatePeriod': 20, 'TimeSeriesLength': 200, 'HistogramSpan': 3.0, 'MedianSampleCount': 500}, 'PingCollapsing': {'Active': True, 'Comment': ''}, 'PingThinning': {'Active': True, 'Comment': '', 'PingsToSkipInitially': 0, 'PingsToSkip': 0}, 'PlanktonInversion': {'Active': True, 'Comment': '', 'VerticalUnit': 'SAMPLES', 'PingsPerBin': 7, 'DepthSamplesPerBin': 30, 'DepthDurationPerBin': 4.0, 'DepthDistancePerBin': 6.0, 'Use global noise threshold': True, 'Noise threshold': -90.0, 'Use min depth': False, 'Min depth': 20.0, 'Use max depth': False, 'Max depth': 110.0, 'CategoriesUsedForInversion': [], 'UseAllFrequencies': True, 'ActiveFrequencies': [], 'MinResidualErrorThreshold': 0.01, 'MaxResidualErrorThreshold': 0.2, 'LevenbergMarquardtFactor': 0.0005, 'MaxIter': 4, 'HardShelled': True, 'HardShelledR': 0.5, 'GaseousSphere': True, 'GasSphereG': 0.0012, 'GasSphereH': 0.22, 'FluidSpheriod': True, 'FluidSpheriodG': 1.043, 'FluidSpheriodH': 1.052, 'FluidSpheriodBeta': 5.0, 'FluidBent': True, 'FluidBentR': 0.058, 'FluidBentS': 0.1, 'FluidBentBeta': 11.0, 'FluidBent2': False, 'FluidBentR2': 0.058, 'FluidBentS2': 0.1, 'FluidBentBeta 2': 11.0, 'SDWBA': False, 'SDWBA coeff': 'N(0, 30)', 'SDWBA2': False, 'SDWBA 2 coeff': 'N(0, 30)', 'SDWBA3': False, 'SDWBA 3 coeff': 'N(0, 30)', 'SDWBA4': False, 'SDWBA 4 coeff': 'N(0, 30)', 'SDWBA5': False, 'SDWBA 5 coeff': 'N(0, 30)', 'SDWBAS': False, 'SDWBA smooth coeff': 'N(4, 2)', 'PlotResolution': 0.01, 'PlotMaxRange': 5.0}, 'Plugin': {'Active': True, 'Comment': '', 'Example': '', 'Implementation': ''}, 'PulseCompressionFilter': {'Active': True, 'Comment': ''}, 'RemoveBottom': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': True, 'StartDepth': 10.0, 'EndDepth': 1000.0, 'UseNeighbours': False, 'Above': 0, 'Below': 100, 'RemoveAboveBottom': False, 'RemoveBottom': True, 'RemoveBelowBottom': False, 'PixelValue': -120.0}, 'Rescale': {'Active': True, 'Comment': '', 'RescaleChannels': 'all', 'DesiredMinimum': -85.0, 'DesiredMaximum': -30.0, 'MinMaxFraction': 0.05, 'InitializationDatagramCount': 10, 'InitializationMaxPingCount': 100}, 'SchoolCategorization': {'Active': True, 'Comment': '', 'UseCellCategorization': True, 'Horizontal cell size': 16, 'Vertical cell size': 50, 'Upper sample offset': 5, 'Lower sample offset': 5, 'HorizontalOffset': 0, 'SecondaryCategoryFraction': 0.1, 'Fill factor for cells': 0.5, 'MinFractionCategorizedCells': 0.5, 'MinCells': 3, 'SchoolCategorizationDistribution': 'CELL', 'EnableUncategorizedCategory': False, 'EnableUnknownCategory': False}, 'SchoolDetection': {'Active': True, 'Comment': '', 'ProcessLast': True, 'Channel': 1, 'MinDepth': '', 'MaxDepth': '', 'Threshold': -62.0, 'Density': {'min': -120.0, 'max': -20.0}, 'MaxSv': {'min': '-Infinity', 'max': 'Infinity'}, 'Length': {'min': 25.0, 'max': 1000000.0}, 'Thickness': {'min': 10.0, 'max': 1000000.0}, 'Area': {'min': 75.0, 'max': 1000000.0}, 'Compactness': {'min': '-Infinity', 'max': 'Infinity'}, 'FillHoles': True}, 'Smoother': {'Active': True, 'Comment': '', 'OnlyLastChannel': False, 'MaskPelagic': False, 'MaskBottom': True, 'MaskSecondBottom': True, 'MaskNoise': False, 'MaskRegion': 'none', 'MaskTrack': 'none', 'MinPing': 0, 'MaxPing': 10, 'HorizontalKernelType': 'gaussian', 'VerticalKernelType': 'gaussian', 'HorizontalWidth': 8.0, 'VerticalWidth': 0.5, 'LogarithmicValues': False}, 'SpikeFilter': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': False, 'StartDepth': 10.0, 'EndDepth': 2500.0, 'TotalDelta': 15.0, 'VerticalDelta': 15.0, 'Debug': False, 'VerticalUnit': 'DURATION', 'VerticalMedianSearchHeight': 7, 'WindowMedianSearchHeight': 35, 'VerticalMedianSearchDuration': 0.9, 'WindowMedianSearchDuration': 4.4, 'VerticalMedianSearchDistance': 1.3, 'WindowMedianSearchDistance': 6.6}, 'SpotNoise': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': False, 'StartDepth': 10.0, 'EndDepth': 2500.0, 'Delta': 20.0, 'Debug': False}, 'TemporaryComputationsBegin': {'Active': True, 'Comment': ''}, 'TemporaryComputationsEnd': {'Active': True, 'Comment': ''}, 'ThresholdAllChannels': {'Active': True, 'Comment': '', 'Criterion': 'BELOW', 'Threshold': -70.0, 'Replacement': -120.0, 'MinFrequency': '', 'MaxFrequency': ''}, 'Threshold': {'Active': True, 'Comment': '', 'LogarithmicValues': True, 'ShowDetails': False, 'OnlyLast': False, 'ChannelsToProcess': -1, 'AutomaticDepthRange': True, 'StartDepth': 10.0, 'EndDepth': 1000.0, 'Threshold': -70.0, 'CutBelow': False, 'CutAbove': False, 'BelowVal': -120.0, 'AboveVal': 0.0}, 'TimeInterval': {'Active': True, 'Comment': '', 'StartDateString': '', 'EndDateString': '', 'StartRelativePingNumber': '', 'EndRelativePingNumber': ''}, 'Towfish': {'Active': True, 'Comment': '', 'TowfishBlindZone': 0.0, 'TowfishEchosounderTimeAddition': 0.0, 'DistBehindFunction': 'PYTAGORAS'}, 'TrackFilter': {'Active': True, 'Comment': '', 'MaxBufferSize': 50, 'KeepValid': True}, 'Tracking': {'Active': True, 'Comment': '', 'TrackerType': 'Aggregation', 'kHz': 38, 'PlatformMotionType': 'Floating', 'MinTS': -66.0, 'PulseLengthDeterminationLevel': 6.0, 'MinEchoLength': 0.01, 'MaxEchoLength': 1.8, 'MaxGainCompensation': 6.0, 'DoPhaseDeviationCheck': True, 'MaxPhaseDevSteps': 8.0, 'MaxTS': 0.0, 'MaxDepth': '', 'MaxAlongshipAngle': 10.0, 'MaxAthwartshipAngle': 10.0, 'InitiationGateFunction': [{'id': 'Alpha', 'description': '', 'unit': 'degree', 'defaultValue': 2.8}, {'id': 'Beta', 'description': '', 'unit': 'degree', 'defaultValue': 2.8}, {'id': 'Range', 'description': '', 'unit': 'm', 'defaultValue': 0.1}, {'id': 'TS', 'description': 'dB', 'unit': 'dB', 'defaultValue': 20.0}], 'InitiationMinLength': 1, 'GateFunction': [{'id': 'Alpha', 'description': '', 'unit': 'degree', 'defaultValue': 2.8}, {'id': 'Beta', 'description': '', 'unit': 'degree', 'defaultValue': 2.8}, {'id': 'Range', 'description': '', 'unit': 'm', 'defaultValue': 0.1}, {'id': 'TS', 'description': 'dB', 'unit': 'dB', 'defaultValue': 20.0}], 'AlphaBetaEstimator': [{'id': 'Alpha', 'description': '', 'allowedValuesDescription': '[0, 1]', 'defaultValue': 0.5}, {'id': 'Beta', 'description': '', 'allowedValuesDescription': '[0, 1]', 'defaultValue': 0.5}], 'MaxMissingPings': 4, 'MaxMissingSamples': 2, 'MaxMissingPingsFraction': 0.5, 'MinTrackLength': 8, 'MinSampleToLengthFraction': 2.0}, 'TsDetection': {'Active': True, 'Comment': '', 'DetectorType': 'SED', 'MinTS': -66.0, 'PulseLengthDeterminationLevel': 6.0, 'MinEchoLength': 0.01, 'MaxEchoLength': 1.8, 'MaxGainCompensation': 6.0, 'DoPhaseDeviationCheck': True, 'MaxPhaseDevSteps': 8.0, 'MaxDepth': ''}, 'VerticalOffsetCorrection': {'Active': True, 'Comment': ''}, 'Writer': {'Active': True, 'Comment': '', 'FileName': '', 'UseRelativeDirectory': False, 'RelativeDirectory': '', 'DirectoryName': ''}, 'NetcdfWriter': {'Active': True, 'Comment': '', 'DirName': 'netcdf', 'MainFrequency': 38, 'WriterType': 'GRIDDED', 'DeltaRange': '', 'MaxRange': '', 'GriddedOutputType': 'SV_AND_ANGLES', 'WriteAngels': True, 'FftWindowSize': 2.0, 'DeltaFrequency': 1.0, 'ChannelGroupOutputType': 'PULSE_COMPRESSION'}}
@@ -1,81 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: koronascript
3
- Version: 0.2.1
4
- Summary: Wrapper around Korona modules for processing echosounder data
5
- Home-page: https://github.com/CRIMAC-WP4-Machine-learning/CRIMAC-KoronaScript
6
- Author: Ketil Malde
7
- Author-email: ketil@malde.org
8
- Description-Content-Type: text/markdown
9
-
10
- # Running Korona through Python
11
-
12
- ## Prerequisites
13
-
14
- ### Install LSSS/Korona.
15
-
16
- This version of the KoronaScript is tested against lsss-2.16.0-alpha
17
- version. LSSS and korona is usually placed at
18
- `~/lsss/lsss-2.16.0-alpha` or a similar directory.
19
-
20
- Download the appropriate version from here:
21
-
22
- https://marec.no/tmp/lsss-2.16.0-alpha-20230922-1417-linux.zip
23
-
24
- https://marec.no/tmp/lsss-2.18.0-alpha-20240918-0847-linux.zip
25
-
26
- https://marec.no/tmp/lsss-2.16.0-alpha-20230922-1417-windows.zip
27
-
28
- https://marec.no/tmp/lsss-2.18.0-alpha-20240918-0847-windows.zip
29
-
30
- If you run linux you need to install the netcdf separately:
31
-
32
- `apt-get install libnetcdf` or `sudo apt install libnetcdf-dev`
33
-
34
-
35
- ### Add license
36
-
37
- You need an LSSS licence. The licence have to be added according to the LSSS manual. the licence files are typically placed at the `~/marec/license` directory.
38
-
39
- ### Set system variables
40
-
41
- The `LSSS` environment variable should point to the root directory of your
42
- LSSS installation. It can be set at run time either by setting the LSSS environment
43
- variable in the shell
44
- ~~~
45
- export LSSS=~/lsss-2.16.0-alpha
46
- ~~~
47
- before running your script, or by adding it manually from inside Python:
48
- ~~~
49
- lsss = '~/lsss-2.16.0-alpha'
50
- os.environ["LSSS"] = lsss
51
- ~~~
52
-
53
- # Usage
54
-
55
- Import the modules:
56
-
57
- import KoronaScript as ks
58
- import KoronaScript.Modules as ksm
59
-
60
- Create a script object:
61
-
62
- ks = ks.KoronaScript(Categorization='categorization.xml',
63
- HorizontalTransducerOffsets='HorizontalTransducerOffsets.xml')
64
-
65
- Add some modules:
66
-
67
- ks.add(ksm.EmptyPingRemoval())
68
- ks.add(ksm.Comment(LineBreak='false', Label='CW_0256ms'))
69
- ks.add(ksm.ChannelRemoval(Channels=[1,5,9,13,17],KeepSpecified='true'))
70
- ks.add(ksm.Writer(RelativeDirectory='CW_0256ms'))
71
-
72
- Write out the resulting configuration:
73
-
74
- ks.write()
75
-
76
- Run the script:
77
-
78
- ks.run(src="input_dir", dst="output_dir")
79
-
80
- The list of modules and their parameters can be found in the
81
- [configuration/korona-info.json](configuration/korona-info.json) file.
@@ -1,72 +0,0 @@
1
- # Running Korona through Python
2
-
3
- ## Prerequisites
4
-
5
- ### Install LSSS/Korona.
6
-
7
- This version of the KoronaScript is tested against lsss-2.16.0-alpha
8
- version. LSSS and korona is usually placed at
9
- `~/lsss/lsss-2.16.0-alpha` or a similar directory.
10
-
11
- Download the appropriate version from here:
12
-
13
- https://marec.no/tmp/lsss-2.16.0-alpha-20230922-1417-linux.zip
14
-
15
- https://marec.no/tmp/lsss-2.18.0-alpha-20240918-0847-linux.zip
16
-
17
- https://marec.no/tmp/lsss-2.16.0-alpha-20230922-1417-windows.zip
18
-
19
- https://marec.no/tmp/lsss-2.18.0-alpha-20240918-0847-windows.zip
20
-
21
- If you run linux you need to install the netcdf separately:
22
-
23
- `apt-get install libnetcdf` or `sudo apt install libnetcdf-dev`
24
-
25
-
26
- ### Add license
27
-
28
- You need an LSSS licence. The licence have to be added according to the LSSS manual. the licence files are typically placed at the `~/marec/license` directory.
29
-
30
- ### Set system variables
31
-
32
- The `LSSS` environment variable should point to the root directory of your
33
- LSSS installation. It can be set at run time either by setting the LSSS environment
34
- variable in the shell
35
- ~~~
36
- export LSSS=~/lsss-2.16.0-alpha
37
- ~~~
38
- before running your script, or by adding it manually from inside Python:
39
- ~~~
40
- lsss = '~/lsss-2.16.0-alpha'
41
- os.environ["LSSS"] = lsss
42
- ~~~
43
-
44
- # Usage
45
-
46
- Import the modules:
47
-
48
- import KoronaScript as ks
49
- import KoronaScript.Modules as ksm
50
-
51
- Create a script object:
52
-
53
- ks = ks.KoronaScript(Categorization='categorization.xml',
54
- HorizontalTransducerOffsets='HorizontalTransducerOffsets.xml')
55
-
56
- Add some modules:
57
-
58
- ks.add(ksm.EmptyPingRemoval())
59
- ks.add(ksm.Comment(LineBreak='false', Label='CW_0256ms'))
60
- ks.add(ksm.ChannelRemoval(Channels=[1,5,9,13,17],KeepSpecified='true'))
61
- ks.add(ksm.Writer(RelativeDirectory='CW_0256ms'))
62
-
63
- Write out the resulting configuration:
64
-
65
- ks.write()
66
-
67
- Run the script:
68
-
69
- ks.run(src="input_dir", dst="output_dir")
70
-
71
- The list of modules and their parameters can be found in the
72
- [configuration/korona-info.json](configuration/korona-info.json) file.
@@ -1,81 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: koronascript
3
- Version: 0.2.1
4
- Summary: Wrapper around Korona modules for processing echosounder data
5
- Home-page: https://github.com/CRIMAC-WP4-Machine-learning/CRIMAC-KoronaScript
6
- Author: Ketil Malde
7
- Author-email: ketil@malde.org
8
- Description-Content-Type: text/markdown
9
-
10
- # Running Korona through Python
11
-
12
- ## Prerequisites
13
-
14
- ### Install LSSS/Korona.
15
-
16
- This version of the KoronaScript is tested against lsss-2.16.0-alpha
17
- version. LSSS and korona is usually placed at
18
- `~/lsss/lsss-2.16.0-alpha` or a similar directory.
19
-
20
- Download the appropriate version from here:
21
-
22
- https://marec.no/tmp/lsss-2.16.0-alpha-20230922-1417-linux.zip
23
-
24
- https://marec.no/tmp/lsss-2.18.0-alpha-20240918-0847-linux.zip
25
-
26
- https://marec.no/tmp/lsss-2.16.0-alpha-20230922-1417-windows.zip
27
-
28
- https://marec.no/tmp/lsss-2.18.0-alpha-20240918-0847-windows.zip
29
-
30
- If you run linux you need to install the netcdf separately:
31
-
32
- `apt-get install libnetcdf` or `sudo apt install libnetcdf-dev`
33
-
34
-
35
- ### Add license
36
-
37
- You need an LSSS licence. The licence have to be added according to the LSSS manual. the licence files are typically placed at the `~/marec/license` directory.
38
-
39
- ### Set system variables
40
-
41
- The `LSSS` environment variable should point to the root directory of your
42
- LSSS installation. It can be set at run time either by setting the LSSS environment
43
- variable in the shell
44
- ~~~
45
- export LSSS=~/lsss-2.16.0-alpha
46
- ~~~
47
- before running your script, or by adding it manually from inside Python:
48
- ~~~
49
- lsss = '~/lsss-2.16.0-alpha'
50
- os.environ["LSSS"] = lsss
51
- ~~~
52
-
53
- # Usage
54
-
55
- Import the modules:
56
-
57
- import KoronaScript as ks
58
- import KoronaScript.Modules as ksm
59
-
60
- Create a script object:
61
-
62
- ks = ks.KoronaScript(Categorization='categorization.xml',
63
- HorizontalTransducerOffsets='HorizontalTransducerOffsets.xml')
64
-
65
- Add some modules:
66
-
67
- ks.add(ksm.EmptyPingRemoval())
68
- ks.add(ksm.Comment(LineBreak='false', Label='CW_0256ms'))
69
- ks.add(ksm.ChannelRemoval(Channels=[1,5,9,13,17],KeepSpecified='true'))
70
- ks.add(ksm.Writer(RelativeDirectory='CW_0256ms'))
71
-
72
- Write out the resulting configuration:
73
-
74
- ks.write()
75
-
76
- Run the script:
77
-
78
- ks.run(src="input_dir", dst="output_dir")
79
-
80
- The list of modules and their parameters can be found in the
81
- [configuration/korona-info.json](configuration/korona-info.json) file.
@@ -1,7 +0,0 @@
1
- [flake8]
2
- ignore = E302,E501,E203,E701
3
-
4
- [egg_info]
5
- tag_build =
6
- tag_date = 0
7
-
@@ -1,14 +0,0 @@
1
- from setuptools import setup
2
-
3
- setup(name='koronascript',
4
- version='0.2.1',
5
- description='Wrapper around Korona modules for processing echosounder data',
6
- long_description=open('README.md').read(),
7
- long_description_content_type='text/markdown',
8
- url='https://github.com/CRIMAC-WP4-Machine-learning/CRIMAC-KoronaScript',
9
- author='Ketil Malde',
10
- author_email='ketil@malde.org',
11
- packages=['KoronaScript'],
12
- package_data={'': ['configuration/korona-info.json']},
13
- include_package_data=True,
14
- zip_safe=False)
@@ -1,15 +0,0 @@
1
- import os
2
- import examples.channelRemoval as CR
3
-
4
- TESTDATA = 'test_data/EK60'
5
-
6
- def test_get_data():
7
- if not os.path.exists(TESTDATA):
8
- # Get test data from pyEchoLab examples:
9
- os.system('mkdir -p test_data && cd test_data && wget --recursive --no-parent -nH --cut-dirs=6 ftp://ftp.ngdc.noaa.gov/pub/outgoing/mgg/wcd/pyEcholab_data/examples/EK60')
10
-
11
- def test_channelRemoval():
12
- """This fails to fail if no data is present"""
13
- CR.ks.run('test_data/EK60', 'test_out/cr_out')
14
-
15
-