GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Test Failed
Push — master ( 0cfc77...d5fd82 )
by
unknown
02:35
created

voltcycle.functions_and_tests.peak_detection_fxn   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 66
Duplicated Lines 81.82 %

Importance

Changes 0
Metric Value
eloc 18
dl 54
loc 66
rs 10
c 0
b 0
f 0
wmc 1

1 Function

Rating   Name   Duplication   Size   Complexity  
A peak_detection_fxn() 54 54 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
"""This module contains a function to determine the peaks in the specified dataset,
2
based on the y values (or current values). The function takes in the specified
3
y column of the dataframe and outputs a list consisting of the index values of
4
the peaks. This module calls the peakutils and numpy packages along with the
5
'main.py' file in the master branch."""
6
7
import peakutils
8
import numpy as np
9
import core
10
11
12 View Code Duplication
def peak_detection_fxn(data_y):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
13
    """The function takes an input of the column containing the y variables in the dataframe,
14
    associated with the current. The function calls the split function, which splits the
15
    column into two arrays, one of the positive and one of the negative values.
16
    This is because cyclic voltammetry delivers negative peaks, but the peakutils function works
17
    better with positive peaks. The function also runs on the middle 80% of data to eliminate
18
    unnecessary noise and messy values associated with pseudo-peaks.The vectors are then imported
19
    into the peakutils.indexes function to determine the significant peak for each array.
20
    The values are stored in a list, with the first index corresponding to the top peak and the
21
    second corresponding to the bottom peak.
22
    Parameters
23
    ______________
24
    y column: must be a column from a pandas dataframe
25
    Returns
26
    _____________
27
    A list with the index of the peaks from the top curve and bottom curve.
28
    """
29
30
    # initialize storage list
31
    index_list = []
32
33
    # split data into above and below the baseline
34
    col_y1, col_y2 = core.split(data_y)
35
36
    # detemine length of data and what 10% of the data is
37
    len_y = len(col_y1)
38
    ten_percent = int(np.around(0.1*len_y))
39
40
    # adjust both input columns to be the middle 80% of data
41
    # (take of the first and last 10% of data)
42
    # this avoid detecting peaks from electrolysis
43
    # (from water splitting and not the molecule itself,
44
    # which can form random "peaks")
45
    mod_col_y2 = col_y2[ten_percent:len_y-ten_percent]
46
    mod_col_y1 = col_y1[ten_percent:len_y-ten_percent]
47
48
    # run peakutils package to detect the peaks for both top and bottom
49
    peak_top = peakutils.indexes(mod_col_y2, thres=0.99, min_dist=20)
50
    peak_bottom = peakutils.indexes(abs(mod_col_y1), thres=0.99, min_dist=20)
51
52
    # detemine length of both halves of data
53
    len_top = len(peak_top)
54
    len_bot = len(peak_bottom)
55
56
    # append the values to the storage list
57
    # manipulate values by adding the ten_percent value back
58
    # (as the indecies have moved)
59
    # to detect the actual peaks and not the modified values
60
    index_list.append(peak_top[int(len_top/2)]+ten_percent)
61
    index_list.append(peak_bottom[int(len_bot/2)]+ten_percent)
62
63
    # return storage list
64
    # first value is the top, second value is the bottom
65
    return index_list
66