obspy.imaging.scripts.scan.Scanner

class Scanner(format=None, verbose=False, recursive=True, ignore_links=False)[source]

Bases: object

Class to scan contents of waveform files, file by file or recursively across directory trees.

>>> scanner = Scanner()
>>> scanner.parse("/some/directory/with/waveforms")  
>>> scanner.plot()  

(Source code, png)

../../_images/obspy-imaging-scripts-scan-Scanner-1.png

Information on gaps can be accessed in a dictionary structure as scanner._info after calling plot() or analyze_parsed_data() (all timing information is in matplotlib date numbers):

>>> print(scanner._info.keys())  
[u'.LE0083..  Z', u'.RNON..Z', u'.GRB1.. BZ', u'.RNHA..EHN', u'.GRA1.. BN',
 u'ABCD.ABCDE..HHZ', u'.RJOB..Z', u'.CLZ.. BZ',
 u'SEDZ...A', u'.GRA1.. BZ']
>>> print(scanner._info[".RJOB..Z"])  
{u'data_startends_compressed': array(
    [[ 732189.10682697,  732189.10752141]]),
 u'data_starts': array(
    [ 732189.10682697,  732189.10682697,  732189.10682697]),
 u'gaps': [],
 u'overlaps': [(732189.10752141208, 732189.10682696756),
               (732189.10752141208, 732189.10682696756)],
 u'percentage': 100.0}
Parameters:
  • format (str) – Use fixed format for reading all files (e.g. MSEED). This skips file format autodetection and speeds up reading waveform data if file format of all files is known to be the same (files with different waveform format will be skipped!).

  • verbose (bool) – Whether to print information messages.

  • recursive (bool) – Whether to parse directories recursively.

  • ignore_links (bool) – Whether to ignore symbolic links.

Public Methods

add_stream

Add information of provided stream to scanner object.

analyze_parsed_data

Prepare information for plotting.

load_npz

Load information on scanned data from npz file.

parse

Parse file/directory and store information on encountered waveform files.

plot

Plot the information on parsed waveform files.

save_npz

Save information on scanned data to npz file.

Special Methods

Scanner.__delattr__(name, /)

Implement delattr(self, name).

Scanner.__dir__()

Default dir() implementation.

Scanner.__eq__(value, /)

Return self==value.

Scanner.__format__(format_spec, /)

Default object formatter.

Scanner.__ge__(value, /)

Return self>=value.

Scanner.__getattribute__(name, /)

Return getattr(self, name).

Scanner.__gt__(value, /)

Return self>value.

Scanner.__hash__()

Return hash(self).

Scanner.__init__(format=None, verbose=False, recursive=True, ignore_links=False)[source]

see Scanner

Scanner.__init_subclass__()

This method is called when a class is subclassed.

The default implementation does nothing. It may be overridden to extend subclasses.

Scanner.__le__(value, /)

Return self<=value.

Scanner.__lt__(value, /)

Return self<value.

Scanner.__ne__(value, /)

Return self!=value.

Scanner.__new__(**kwargs)
Scanner.__reduce__()

Helper for pickle.

Scanner.__reduce_ex__(protocol, /)

Helper for pickle.

Scanner.__repr__()

Return repr(self).

Scanner.__setattr__(name, value, /)

Implement setattr(self, name, value).

Scanner.__sizeof__()

Size of object in memory, in bytes.

Scanner.__str__()

Return str(self).

Scanner.__subclasshook__()

Abstract classes can override this to customize issubclass().

This is invoked early on by abc.ABCMeta.__subclasscheck__(). It should return True, False or NotImplemented. If it returns NotImplemented, the normal algorithm is used. Otherwise, it overrides the normal algorithm (and the outcome is cached).