class Indexer(root_path, database='timeseries.sqlite', leap_seconds_file='SEARCH', index_cmd='mseedindex', bulk_params=None, filename_pattern='*', parallel=5, loglevel=None)[source]

Bases: object

Build an index for miniSEED data using EarthScope’s mseedindex program. Recursively search for files matching filename_pattern starting from root_path and run index_cmd for each target file found that is not already in the index. After all new files are indexed a summary table is generated with the extents of each timeseries.

Public Methods


Create a list of absolute paths to all files under root_path that match the filename_pattern.


Attempt to download leap-seconds.list from Internet Engineering Task Force (IETF) and save to a file.


Execute the file discovery and indexing.

Private Methods


Private methods are mainly for internal/developer use and their API might change without notice.

Indexer._find_leap_seconds_file(leap_seconds_file=None, download=False, download_url=None)[source]

Search for leap seconds file and return path.

  • leap_seconds_file (str or None) – Leap seconds file location. If None a file location will be generated in same directory as a SQLite database location if present.

  • download (bool) – If download is True and any existing file has expired, a new file will be downloaded.

  • download_url (str or None) – URL to download from, passed to download_leap_seconds_file().


Return path to leap second file and set appropriate environment variable for mseedindex.


leap_seconds_file (str or None) – Leap second file options defined in the Indexer constructor.


Return a list of absolute paths to files under the rootpath that match the Indexers filename pattern


Checks if the index command (e.g. mseedindex) is installed.

Return type:



Returns True if the index_cmd is installed.


Test expiration status of specified leap seconds file.

The file is expected to be a leap-seconds.list as published by the Internet Engineering Task Force (IETF), which contains a line starting with #@ followed by the expiration time stamp in NTP format.


file_path (str) – Path to leap seconds file to test

Return type:



Expiration status of leap seconds file.

classmethod Indexer._run_index_command(index_cmd, root_path, file_name, bulk_params)[source]

Execute a command to perform indexing.

  • index_cmd (str) – Name of indexing command to execute. Defaults to mseedindex.

  • file_name (str) – Name of file to index.

  • bulk_params (dict) – Dictionary of options to pass to index_cmd.

Special Methods

Indexer.__delattr__(name, /)

Implement delattr(self, name).


Default dir() implementation.

Indexer.__eq__(value, /)

Return self==value.

Indexer.__format__(format_spec, /)

Default object formatter.

Indexer.__ge__(value, /)

Return self>=value.

Indexer.__getattribute__(name, /)

Return getattr(self, name).

Indexer.__gt__(value, /)

Return self>value.


Return hash(self).

Indexer.__init__(root_path, database='timeseries.sqlite', leap_seconds_file='SEARCH', index_cmd='mseedindex', bulk_params=None, filename_pattern='*', parallel=5, loglevel=None)[source]

Initializes the Indexer.

  • root_path (str) – Root path to the directory structure to index.

  • database (str or TSIndexDatabaseHandler) – Path to SQLite tsindex database or a TSIndexDatabaseHandler object. A database will be created if one does not already exists at the specified path.

  • leap_seconds_file (str) –

    Path to leap seconds file. If set to “SEARCH” (default), then the program looks for a leap seconds file in the same directory as the SQLite database. If set to “DOWNLOAD”, a leap seconds file will be downloaded from the IETF (if expired). If set to None then no leap seconds file will be used.

    In run() the leap seconds listed in this file will be used to adjust the time coverage for records that contain a leap second. Also, leap second indicators in the miniSEED headers will be ignored. See the `mseedindex wiki leap second

    ”master/doc/mseedindex.md#leap-second-list-file>`_ for more” “for more information regarding this file.

  • index_cmd (str) – Command to be run for each target file found that is not already in the index

  • bulk_params (dict) – Dictionary of options to pass to index_cmd.

  • filename_pattern (str) – Glob pattern to determine what files to index.

  • parallel (int) – Max number of index_cmd instances to run in parallel. By default a max of 5 parallel process are run.


This method is called when a class is subclassed.

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

Indexer.__le__(value, /)

Return self<=value.

Indexer.__lt__(value, /)

Return self<value.

Indexer.__ne__(value, /)

Return self!=value.


Helper for pickle.

Indexer.__reduce_ex__(protocol, /)

Helper for pickle.


Return repr(self).

Indexer.__setattr__(name, value, /)

Implement setattr(self, name, value).


Size of object in memory, in bytes.


Return str(self).


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).