Source code for pyrocko.gui.drum.state

# https://pyrocko.org - GPLv3
#
# The Pyrocko Developers, 21st Century
# ---|P------/S----------~Lg----------

from __future__ import absolute_import, print_function, division

import math

import numpy as num

from pyrocko.guts import Object, Float, StringChoice, Int, String, Bool, \
    Tuple, List

from pyrocko.gui import talkie


[docs]class Color(Object): r = Float.T(default=0.0) g = Float.T(default=0.0) b = Float.T(default=0.0) a = Float.T(default=1.0) @property def qt_color(self): from pyrocko.gui.qt_compat import qg color = qg.QColor(*(int(round(x*255)) for x in ( self.r, self.g, self.b, self.a))) return color
[docs]class ScalingMode(StringChoice): choices = ['same', 'individual', 'fixed']
[docs]class ScalingBase(StringChoice): choices = [ 'min-max', 'mean-plusminus-1-sigma', 'mean-plusminus-2-sigma', 'mean-plusminus-4-sigma']
[docs]class Filter(Object): def apply(self, tr): pass def tpad(self): return 0.0
[docs]class Demean(Filter): def apply(self, tr): tr.ydata = tr.ydata - num.mean(tr.ydata)
[docs]class ButterLowpass(Filter): order = Int.T(default=4) corner = Float.T() pad_factor = Float.T(default=1.0, optional=True) def apply(self, tr): tr.lowpass(self.order, self.corner) def tpad(self): return self.pad_factor/self.corner
[docs]class ButterHighpass(Filter): order = Int.T(default=4) corner = Float.T() pad_factor = Float.T(default=1.0, optional=True) def apply(self, tr): tr.highpass(self.order, self.corner) def tpad(self): return self.pad_factor/self.corner
[docs]class Downsample(Filter): deltat = Float.T() def apply(self, tr): tr.downsample_to(self.deltat)
[docs]class TextStyle(talkie.Talkie): family = String.T(default='default', optional=True) size = Float.T(default=9.0, optional=True) bold = Bool.T(default=False, optional=True) italic = Bool.T(default=False, optional=True) color = Color.T(default=Color.D()) outline = Bool.T(default=False) background_color = Color.T(optional=True) @property def qt_font(self): from pyrocko.gui.qt_compat import qg font = qg.QFont(self.family) font.setPointSizeF(self.size) font.setBold(self.bold) font.setItalic(self.italic) return font
[docs]class Style(talkie.Talkie): antialiasing = Bool.T(default=False, optional=True) label_textstyle = TextStyle.T(default=TextStyle.D( bold=True, background_color=Color(r=1.0, g=1.0, b=1.0, a=0.5), )) title_textstyle = TextStyle.T(default=TextStyle.D(bold=True, size=12.0)) marker_textstyle = TextStyle.T(default=TextStyle.D( bold=False, size=9.0, italic=True, background_color=Color(r=1.0, g=1.0, b=0.7), outline=True, )) marker_color = Color.T(default=Color.D()) trace_resolution = Float.T(default=2.0, optional=True) trace_color = Color.T(default=Color.D()) background_color = Color.T(default=Color.D(r=1.0, g=1.0, b=1.0))
[docs]class Scaling(talkie.Talkie): mode = ScalingMode.T(default='same') base = ScalingBase.T(default='min-max') min = Float.T(default=-1.0, optional=True) max = Float.T(default=1.0, optional=True) gain = Float.T(default=1.0, optional=True)
[docs]class State(talkie.TalkieRoot): nslc = Tuple.T(4, String.T(default='')) tline = Float.T(default=60.*60.) nlines = Int.T(default=24) iline = Int.T(default=0) follow = Bool.T(default=False) style = Style.T(default=Style.D()) filters = List.T(Filter.T()) scaling = Scaling.T(default=Scaling.D()) npages_cache = Int.T(default=10, optional=True) @property def tmin(self): return self.iline*self.tline @tmin.setter def tmin(self, tmin): self.iline = int(math.floor(tmin / self.tline)) @property def tmax(self): return (self.iline+self.nlines)*self.tline @tmax.setter def tmax(self, tmax): self.iline = int(math.ceil(tmax / self.tline))-self.nlines