diff --git a/QtPyLoT.py b/QtPyLoT.py index c3e01ac7..2e19f840 100755 --- a/QtPyLoT.py +++ b/QtPyLoT.py @@ -74,7 +74,7 @@ from pylot.core.util.connection import checkurl from pylot.core.util.dataprocessing import read_metadata, restitute_data from pylot.core.util.utils import fnConstructor, getLogin, \ full_range, readFilterInformation, trim_station_components, check4gaps, make_pen, pick_color_plt, \ - pick_linestyle_plt, identifyPhase, loopIdentifyPhase, remove_underscores + pick_linestyle_plt, identifyPhase, loopIdentifyPhase, remove_underscores, check4doubled from pylot.core.util.event import Event from pylot.core.io.location import create_creation_info, create_event from pylot.core.util.widgets import FilterOptionsDialog, NewEventDlg, \ @@ -1377,7 +1377,9 @@ class MainWindow(QMainWindow): wfdat = self.data.getWFData() # all available streams # remove possible underscores in station names wfdat = remove_underscores(wfdat) + # check for gaps and doubled channels check4gaps(wfdat) + check4doubled(wfdat) # trim station components to same start value trim_station_components(wfdat, trim_start=True, trim_end=False) self._stime = full_range(self.get_data().getWFData())[0] diff --git a/autoPyLoT.py b/autoPyLoT.py index cadf9eb8..62a47525 100755 --- a/autoPyLoT.py +++ b/autoPyLoT.py @@ -26,7 +26,7 @@ from pylot.core.util.dataprocessing import restitute_data, read_metadata from pylot.core.util.defaults import SEPARATOR from pylot.core.util.event import Event from pylot.core.util.structure import DATASTRUCTURE -from pylot.core.util.utils import real_None, remove_underscores, trim_station_components, check4gaps +from pylot.core.util.utils import real_None, remove_underscores, trim_station_components, check4gaps, check4doubled from pylot.core.util.version import get_git_version as _getVersionString __version__ = _getVersionString() @@ -242,6 +242,7 @@ def autoPyLoT(input_dict=None, parameter=None, inputfile=None, fnames=None, even wfdat = remove_underscores(wfdat) # trim components for each station to avoid problems with different trace starttimes for one station wfdat = check4gaps(wfdat) + wfdat = check4doubled(wfdat) wfdat = trim_station_components(wfdat, trim_start=True, trim_end=False) metadata = read_metadata(parameter.get('invdir')) corr_dat = None diff --git a/pylot/core/util/utils.py b/pylot/core/util/utils.py index 70c73f0c..c51f6599 100644 --- a/pylot/core/util/utils.py +++ b/pylot/core/util/utils.py @@ -630,6 +630,31 @@ def check4gaps(data): return data +def check4doubled(data): + ''' + check for doubled stations for same channel in Stream and take only the first one + :param data: stream of seismic data + :return: data stream + ''' + stations = get_stations(data) + + for station in stations: + wf_station = data.select(station=station) + # create list of all possible channels + channels = [] + for trace in wf_station: + channel = trace.stats.channel + if not channel in channels: + channels.append(channel) + else: + print('check4doubled: removed the following trace for station {}, as there is' + ' already a trace with the same channel given:\n{}'.format( + station, trace + )) + data.remove(trace) + return data + + def get_stations(data): stations = [] for tr in data: