コード例 #1
0
    def load_snuffling(win):
        s = LassieSnuffling()
        s.config = _lassie_config
        s.setup()
        win.pile_viewer.viewer.add_snuffling(s, reloaded=True)
        win.pile_viewer.viewer.add_blacklist_pattern('*.SMAX.i.*')
        for bl in _lassie_config.blacklist:
            win.pile_viewer.viewer.add_blacklist_pattern('%s.*' % bl)

        detections_path = _lassie_config.get_detections_path()

        if os.path.exists(detections_path):
            s.detections = detections_to_event_markers(detections_path)
            s.add_markers(s.detections)

        for _ifc in s.config.image_function_contributions:
            if isinstance(_ifc, ifc.ManualPickIFC):
                markers_path_extra = _ifc.picks_path
            elif isinstance(_ifc, ifc.TemplateMatchingIFC):
                markers_path_extra = _ifc.template_markers_path
            else:
                continue

            if os.path.exists(markers_path_extra):
                s.add_markers(pmarker.load_markers(markers_path_extra))
            else:
                logger.warn(
                    'No such file: %s (referenced in %s, named %s)' %
                    (markers_path_extra, _ifc.__class__.__name__, _ifc.name))
コード例 #2
0
ファイル: test_marker.py プロジェクト: wsja/pyrocko
    def test_writeread(self):
        nslc_ids = [('', 'STA', '', '*')]

        event = model.Event(lat=111., lon=111., depth=111., time=111.)

        _marker = marker.Marker(nslc_ids=nslc_ids, tmin=1., tmax=10.)
        emarker = marker.EventMarker(event=event)
        pmarker = marker.PhaseMarker(nslc_ids=nslc_ids,  tmin=1., tmax=10.)
        pmarker.set_event(event)

        emarker.set_alerted(True)

        markers = [_marker, emarker, pmarker]
        fn = tempfile.mkstemp()[1]

        marker.save_markers(markers, fn)

        in_markers = marker.load_markers(fn)
        in__marker, in_emarker, in_pmarker = in_markers
        for i, m in enumerate(in_markers):
            if not isinstance(m, marker.EventMarker):
                assert (m.tmax - m.tmin) == 9.
            else:
                assert not m.is_alerted()

        marker.associate_phases_to_events([in_pmarker, in_emarker])

        in_event = in_pmarker.get_event()

        assert all((in_event.lat == 111., in_event.lon == 111.,
                    in_event.depth == 111., in_event.time == 111.))

        assert in_pmarker.get_event_hash() == in_event.get_hash()
        assert in_pmarker.get_event_time() == 111.
コード例 #3
0
ファイル: data.py プロジェクト: chaoshunh/pinky
    def setup(self):
        self.data_pile = pile.make_pile(
            self.data_paths, fileformat=self.data_format)

        if self.data_pile.is_empty():
            sys.exit('Data pile is empty!')

        self.deltat_want = self.config.deltat_want or \
                min(self.data_pile.deltats.keys())

        self.n_samples = int(
                (self.config.sample_length + self.config.tpad) / self.deltat_want)

        logger.debug('loading marker file %s' % self.fn_markers)

        # loads just plain markers:
        markers = marker.load_markers(self.fn_markers)

        if self.fn_events:
            markers.extend(
                    [marker.EventMarker(e) for e in
                load_events(self.fn_events)])

        if self.sort_markers:
            logger.info('sorting markers!')
            markers.sort(key=lambda x: x.tmin)
        marker.associate_phases_to_events(markers)

        markers_by_nsl = {}
        for m in markers:
            if not m.match_nsl(self.config.reference_target.codes[:3]):
                continue

            if m.get_phasename().upper() != self.align_phase:
                continue

            markers_by_nsl.setdefault(m.one_nslc()[:3], []).append(m)

        assert(len(markers_by_nsl) == 1)

        # filter markers that do not have an event assigned:
        self.markers = list(markers_by_nsl.values())[0]

        if not self.labeled:
            dummy_event = Event(lat=0., lon=0., depth=0.)
            for m in self.markers:
                if not m.get_event():
                    m.set_event(dummy_event)

        self.markers = [m for m in self.markers if m.get_event() is not None]

        if not len(self.markers):
            raise Exception('No markers left in dataset')

        self.config.channels = list(self.data_pile.nslc_ids.keys())
        self.config.channels.sort()
コード例 #4
0
ファイル: data.py プロジェクト: zhengjing8628/pinky
    def setup(self):
        self.data_pile = pile.make_pile(
            self.data_paths, fileformat=self.data_format)

        if self.data_pile.is_empty():
            sys.exit('Data pile is empty!')

        self.deltat_want = self.config.deltat_want or \
                min(self.data_pile.deltats.keys())

        self.n_samples = int(
                (self.config.sample_length + self.config.tpad) / self.deltat_want)

        logger.debug('loading marker file %s' % self.fn_markers)

        # loads just plain markers:
        markers = marker.load_markers(self.fn_markers)

        if self.fn_events:
            markers.extend(
                    [marker.EventMarker(e) for e in
                load_events(self.fn_events)])

        marker.associate_phases_to_events(markers)
        markers = [m for m in markers if isinstance(m, marker.PhaseMarker)]

        markers_dict = defaultdict(list)
        for m in markers:
            if m.get_phasename().upper() != self.align_phase:
                continue

            markers_dict[m.get_event()].append(m)

        self.markers = []
        for e, _markers in markers_dict.items():
            first = min(_markers, key=lambda x: x.tmin)
            self.markers.append(first)

        if not self.labeled:
            dummy_event = Event(lat=0., lon=0., depth=0.)
            for m in self.markers:
                if not m.get_event():
                    m.set_event(dummy_event)

        self.markers = [m for m in self.markers if m.get_event() is not None]

        if not len(self.markers):
            raise Exception('No markers left in dataset')

        self.config.channels = list(self.data_pile.nslc_ids.keys())
        self.config.channels.sort()
コード例 #5
0
def get_arv_time_from_pyrocko(self):
    """
    Description:
    ------------
    Get arrival times from pyrock format data.

    Parameters/Input:
    -----------
    'tt_pyrockp.dat':
    stream (obspy stream): Input 3 component waveform data
    evid (int): Event id.

    Returns/Modificatoins:
    P_tt (dict): P travel time data
    S_tt (dict): S travel time data
    """

    evids = self.evlist.keys()
    markers = mk.load_markers(self.maindir + '/input/tt_pyrocko.dat')
    mk.associate_phases_to_events(markers)
    indexs = [
        i for i in range(len(markers))
        if isinstance(markers[i], (mk.PhaseMarker))
    ]
    evid_markers_index = [
        j for i in evids for j in indexs if markers[j]._event.name == i
    ]
    P_tt, S_tt = {}, {}
    for i in evids:
        P_tt[i] = []
        S_tt[i] = []
    for j in evid_markers_index:
        if markers[j]._phasename == 'P':
            P_tt[markers[j]._event.name].append([
                UTCDateTime(util.time_to_str(markers[j].tmin)),
                markers[j].get_nslc_ids()[0][1]
            ])
        if markers[j]._phasename == 'S':
            S_tt[markers[j]._event.name].append([
                UTCDateTime(util.time_to_str(markers[j].tmin)),
                markers[j].get_nslc_ids()[0][1]
            ])
    self.P_tt = P_tt
    self.S_tt = S_tt
    return None
コード例 #6
0
def snuffler_from_commandline(args=None):
    if args is None:
        args = sys.argv[1:]

    usage = '''usage: %prog [options] waveforms ...'''
    parser = OptionParser(usage=usage)

    parser.add_option(
        '--format',
        dest='format',
        default='detect',
        choices=io.allowed_formats('load'),
        help='assume input files are of given FORMAT. Choices: %s' %
        io.allowed_formats('load', 'cli_help', 'detect'))

    parser.add_option('--pattern',
                      dest='regex',
                      metavar='REGEX',
                      help='only include files whose paths match REGEX')

    parser.add_option('--stations',
                      dest='station_fns',
                      action='append',
                      default=[],
                      metavar='STATIONS',
                      help='read station information from file STATIONS')

    parser.add_option(
        '--stationxml',
        dest='stationxml_fns',
        action='append',
        default=[],
        metavar='STATIONSXML',
        help='read station information from XML file STATIONSXML')

    parser.add_option('--event',
                      '--events',
                      dest='event_fns',
                      action='append',
                      default=[],
                      metavar='EVENT',
                      help='read event information from file EVENT')

    parser.add_option('--markers',
                      dest='marker_fns',
                      action='append',
                      default=[],
                      metavar='MARKERS',
                      help='read marker information file MARKERS')

    parser.add_option('--follow',
                      type='float',
                      dest='follow',
                      metavar='N',
                      help='follow real time with a window of N seconds')

    parser.add_option('--cache',
                      dest='cache_dir',
                      default=config.config().cache_dir,
                      metavar='DIR',
                      help='use directory DIR to cache trace metadata '
                      '(default=\'%default\')')

    parser.add_option(
        '--force-cache',
        dest='force_cache',
        action='store_true',
        default=False,
        help='use the cache even when trace attribute spoofing is active '
        '(may have silly consequences)')

    parser.add_option(
        '--store-path',
        dest='store_path',
        metavar='PATH_TEMPLATE',
        help='store data received through streams to PATH_TEMPLATE')

    parser.add_option(
        '--store-interval',
        type='float',
        dest='store_interval',
        default=600,
        metavar='N',
        help='dump stream data to file every N seconds [default: %default]')

    parser.add_option(
        '--ntracks',
        type='int',
        dest='ntracks',
        default=24,
        metavar='N',
        help='initially use N waveform tracks in viewer [default: %default]')

    parser.add_option('--opengl',
                      dest='opengl',
                      action='store_true',
                      default=False,
                      help='use OpenGL for drawing')

    parser.add_option('--qt5',
                      dest='gui_toolkit_qt5',
                      action='store_true',
                      default=False,
                      help='use Qt5 for the GUI')

    parser.add_option('--qt4',
                      dest='gui_toolkit_qt4',
                      action='store_true',
                      default=False,
                      help='use Qt4 for the GUI')

    parser.add_option('--debug',
                      dest='debug',
                      action='store_true',
                      default=False,
                      help='print debugging information to stderr')

    options, args = parser.parse_args(list(args))

    if options.debug:
        util.setup_logging('snuffler', 'debug')
    else:
        util.setup_logging('snuffler', 'warning')

    if options.gui_toolkit_qt4:
        config.override_gui_toolkit = 'qt4'

    if options.gui_toolkit_qt5:
        config.override_gui_toolkit = 'qt5'

    this_pile = pile.Pile()
    stations = []
    for stations_fn in extend_paths(options.station_fns):
        stations.extend(model.station.load_stations(stations_fn))

    for stationxml_fn in extend_paths(options.stationxml_fns):
        stations.extend(
            stationxml.load_xml(filename=stationxml_fn).get_pyrocko_stations())

    events = []
    for event_fn in extend_paths(options.event_fns):
        events.extend(model.load_events(event_fn))

    markers = []
    for marker_fn in extend_paths(options.marker_fns):
        markers.extend(marker.load_markers(marker_fn))

    return snuffle(this_pile,
                   stations=stations,
                   events=events,
                   markers=markers,
                   ntracks=options.ntracks,
                   follow=options.follow,
                   controls=True,
                   opengl=options.opengl,
                   paths=args,
                   cache_dir=options.cache_dir,
                   regex=options.regex,
                   format=options.format,
                   force_cache=options.force_cache,
                   store_path=options.store_path,
                   store_interval=options.store_interval)
コード例 #7
0
from markers import lookPattern

###Command line arguments
# 1: number of the day
# 2: number of the marker

if len(sys.argv) < 2:
    sys.exit("Day number and markers number were not introduced.")

# set input file (which day to work on and which channel)
day = sys.argv[1]
dayCMD = formatDay(day)
filename = dict[int(sys.argv[2])] + dayCMD

stream = obspy.read(filename)
markers = pm.load_markers("../Markers/" + dayCMD + ".mk")

trace = stream[0]

interval = 30  #seconds for window width
overlap = 15

tzero = trace.stats.starttime

traces = []

maxTime = 24 * 60 * 60 - interval
#maxTime = 50 #for testing

#fileToSave = open(, 'w')
コード例 #8
0
ファイル: snuffler.py プロジェクト: emolch/pyrocko
def snuffler_from_commandline(args=None):
    if args is None:
        args = sys.argv[1:]

    usage = '''usage: %prog [options] waveforms ...'''
    parser = OptionParser(usage=usage)

    parser.add_option(
        '--format',
        dest='format',
        default='detect',
        choices=io.allowed_formats('load'),
        help='assume input files are of given FORMAT. Choices: %s'
             % io.allowed_formats('load', 'cli_help', 'detect'))

    parser.add_option(
        '--pattern',
        dest='regex',
        metavar='REGEX',
        help='only include files whose paths match REGEX')

    parser.add_option(
        '--stations',
        dest='station_fns',
        action='append',
        default=[],
        metavar='STATIONS',
        help='read station information from file STATIONS')

    parser.add_option(
        '--stationxml',
        dest='stationxml_fns',
        action='append',
        default=[],
        metavar='STATIONSXML',
        help='read station information from XML file STATIONSXML')

    parser.add_option(
        '--event', '--events',
        dest='event_fns',
        action='append',
        default=[],
        metavar='EVENT',
        help='read event information from file EVENT')

    parser.add_option(
        '--markers',
        dest='marker_fns',
        action='append',
        default=[],
        metavar='MARKERS',
        help='read marker information file MARKERS')

    parser.add_option(
        '--follow',
        type='float',
        dest='follow',
        metavar='N',
        help='follow real time with a window of N seconds')

    parser.add_option(
        '--cache',
        dest='cache_dir',
        default=config.config().cache_dir,
        metavar='DIR',
        help='use directory DIR to cache trace metadata '
             '(default=\'%default\')')

    parser.add_option(
        '--force-cache',
        dest='force_cache',
        action='store_true',
        default=False,
        help='use the cache even when trace attribute spoofing is active '
             '(may have silly consequences)')

    parser.add_option(
        '--store-path',
        dest='store_path',
        metavar='PATH_TEMPLATE',
        help='store data received through streams to PATH_TEMPLATE')

    parser.add_option(
        '--store-interval',
        type='float',
        dest='store_interval',
        default=600,
        metavar='N',
        help='dump stream data to file every N seconds [default: %default]')

    parser.add_option(
        '--ntracks',
        type='int',
        dest='ntracks',
        default=24,
        metavar='N',
        help='initially use N waveform tracks in viewer [default: %default]')

    parser.add_option(
        '--opengl',
        dest='opengl',
        action='store_true',
        default=False,
        help='use OpenGL for drawing')

    parser.add_option(
        '--qt5',
        dest='gui_toolkit_qt5',
        action='store_true',
        default=False,
        help='use Qt5 for the GUI')

    parser.add_option(
        '--qt4',
        dest='gui_toolkit_qt4',
        action='store_true',
        default=False,
        help='use Qt4 for the GUI')

    parser.add_option(
        '--debug',
        dest='debug',
        action='store_true',
        default=False,
        help='print debugging information to stderr')

    options, args = parser.parse_args(list(args))

    if options.debug:
        util.setup_logging('snuffler', 'debug')
    else:
        util.setup_logging('snuffler', 'warning')

    if options.gui_toolkit_qt4:
        config.override_gui_toolkit = 'qt4'

    if options.gui_toolkit_qt5:
        config.override_gui_toolkit = 'qt5'

    this_pile = pile.Pile()
    stations = []
    for stations_fn in extend_paths(options.station_fns):
        stations.extend(model.station.load_stations(stations_fn))

    for stationxml_fn in extend_paths(options.stationxml_fns):
        stations.extend(
            stationxml.load_xml(
                filename=stationxml_fn).get_pyrocko_stations())

    events = []
    for event_fn in extend_paths(options.event_fns):
        events.extend(model.load_events(event_fn))

    markers = []
    for marker_fn in extend_paths(options.marker_fns):
        markers.extend(marker.load_markers(marker_fn))

    return snuffle(
        this_pile,
        stations=stations,
        events=events,
        markers=markers,
        ntracks=options.ntracks,
        follow=options.follow,
        controls=True,
        opengl=options.opengl,
        paths=args,
        cache_dir=options.cache_dir,
        regex=options.regex,
        format=options.format,
        force_cache=options.force_cache,
        store_path=options.store_path,
        store_interval=options.store_interval)
コード例 #9
0
        #Filtering the data to the ones that are not noise
        lastColumn = np.append(lastColumn, label)
    return lastColumn


if len(sys.argv) < 2:
    sys.exit("Day was not introduced")
day = formatDay(int(sys.argv[1]))
# set input file (which day to work on and which channel)

df = 50  #sampling rate
interval = 30  #seconds for window width
overlap = 15

markers = pm.load_markers("../Markers/" + day + ".pf")

#header = 'MEAN_E,MEDIAN_E,STDV_E,MAXIMUM_E,REP_FREQ_E,SUM_ENERGY_E,ENERGY_PREV_E,ENERGY_NEXT_E,MEAN_N,MEDIAN_N,STDV_N,MAXIMUM_N,REP_FREQ_N,SUM_ENERGY_N,ENERGY_PREV_N,ENERGY_NEXT_N,MEAN_Z,MEDIAN_Z,STDV_Z' #,MAXIMUM_Z,REP_FREQ_Z,SUM_ENERGY_Z,ENERGY_PREV_Z,ENERGY_NEXT_Z, CLASS'

filenames = filenames = [prefix + day for prefix in dict.values()]

##BMAS
station1 = processFile(filenames[0], markers)
station2 = processFile(filenames[1], markers)
station3 = processFile(filenames[2], markers, lastFile=True)

#classes = computeClasess(filenames[0], markers)
#classes = np.reshape(classes,(-1,1))

bmas = np.hstack((station1, station2, station3))
コード例 #10
0
from pyrocko import util
from pyrocko.gui import marker as pm
from pyrocko.example import get_example_data

# Download example markers
get_example_data('my_markers.pf')

markers = pm.load_markers('my_markers.pf')
pm.associate_phases_to_events(markers)

for marker in markers:
    print(util.time_to_str(marker.tmin), util.time_to_str(marker.tmax))

    # only event and phase markers have an event attached
    if isinstance(marker, (pm.EventMarker, pm.PhaseMarker)):
        ev = marker.get_event()
        print(ev)  # may be shared between markers