fosanalysis
A framework to evaluate distributed fiber optic sensor data
Loading...
Searching...
No Matches
finding.py
Go to the documentation of this file.
2r"""
3Contains functionality to find potential crack locations.
4\author Bertram Richter
5\date 2022
6"""
7
8import scipy.signal
9
10from fosanalysis import utils
11
12from . import cracks
13
15 r"""
16 Object to identify potential crack positions.
17 Core functionality is based on [`scipy.signal.find_peaks()`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.find_peaks.html).
18 """
19 def __init__(self,
20 *args,
21 **kwargs
22 ):
23 r"""
24 Constructs a CrackFinder object.
25 \param args \copybrief args For more, see \ref args.
26 \param kwargs \copybrief kwargs For more, see \ref kwargs.
27 """
28
30 self.args = args
31
39 self.kwargs = kwargs if kwargs else {"height": 100,"prominence": 100}
40 def run(self, x, strain) -> cracks.CrackList:
41 r"""
42 Identifies the positions of cracks using [`scipy.signal.find_peaks()`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.find_peaks.html) and returns a \ref cracks.CrackList object.
43 Those \ref cracks.Crack objects are still incomplete.
44 Their effective lengths may need to be recalculated using \ref separation.CrackLengths.run() and the widths \ref strainprofile.StrainProfile.calculate_crack_widths().
45 \param x Positional data.
46 \param strain Strain data.
47 \return Returns a \ref cracks.CrackList.
48 """
49 peaks_max, max_properties = scipy.signal.find_peaks(strain, *self.args, **self.kwargs)
50 segment_left = max_properties["left_bases"]
51 segment_right = max_properties["right_bases"]
52 crack_list = []
53 for left_index, peak_index, right_index in zip(segment_left, peaks_max, segment_right):
54 crack = cracks.Crack(location=x[peak_index],
55 x_l=x[left_index],
56 x_r=x[right_index],
57 index = peak_index,
58 max_strain=strain[peak_index],
59 )
60 crack_list.append(crack)
61 return cracks.CrackList(*crack_list)
A Crack object presents a crack in concrete with its properties.
Definition cracks.py:14
Object to identify potential crack positions.
Definition finding.py:14
cracks.CrackList run(self, x, strain)
Identifies the positions of cracks using scipy.signal.find_peaks() and returns a cracks....
Definition finding.py:40
__init__(self, *args, **kwargs)
Constructs a CrackFinder object.
Definition finding.py:22
args
Positional arguments, will be passed to scipy.signal.find_peaks().
Definition finding.py:30
kwargs
Keyword arguments, will be passed to scipy.signal.find_peaks().
Definition finding.py:39
This intermediate class indicates, that a sub-class is implementing a task.
Definition base.py:26