Dear ObsPy user,

As a student at the Vrije Universiteit Amsterdam I’m currently working on a master’s project related to the induced earthquakes in the Groningen area, the Netherlands as a result of the exploration of gas. My aim of the research is to compare seismic data from various institutions to find out how comparable their results with different methods are (accelerometers versus tiltmeters, groundsensors versus buildingsensors).

One of these above mentioned institutions is KNMI, which provides its seismic data is miniSEED format. An employee of KNMI recommended to use the ObsPy package to process and visualize the seismic data provided by their accelerometers. This ObsPy package and tutorial are really straight forward and understanding, however I try to correct the data expressed by ‘counts’ to acceleration or velocity. The KNMI employee provided me with the FSDN response information and forwarded me to one of the tutorials, but he mentioned he did not have the time to explain everything in detail… But nor I or my supervisor can figure it out.

My question is: could you please help me figure out what I should precisely do in Python to correct the seismic data with the response of the sensor with the use of the mSEED and FSDN data? I attached a mSEED example of a moment in history from sensor 404 and a link in which the FSDN information is provided: http://rdsa.knmi.nl/fdsnws/station/1/query?network=NL&station=G404&nodata=404&level=response

Thank you very much and I’m looking forward to your response!

With regards,


G404.mseed (143 KB)

Hi Ryan,

it should be as easy as:

from obspy import read, read_inventory
stream = read('G404.mseed)')
inventory = read_inventory('your_stations.xml') # you can also pass
the link in your mail as string

Compare to the examples here:

Regards, Tom

Dear Tom,

Thank you very much for your reply and help! Great! I succeeded in using your part script! This resulted in the following graphs:

Eventhough I think this is the last step for me to reach the goal to have the acceleration as a function of time, however an acceleration with values in the order of 10^-16 is very little (seen at last figure). Do you think I missed a step or need to do other actions in order to get the results I want?

Thank you again and I’m looking forward to your reply!

With regards,


You should really pay close attention to the documentation of
remove_response(), this is not a trivial one-size-fits all step.

First of all if you want to go to acceleration you have to specify it
(kwarg "output"). You should also probably use a "pre_filt" and check if
the water level choice is OK for you (this will have an even heavier
impact when going to acceleration). If you don't have a good idea what
those options should be set for you (main question is what frequencies
are you interested in), you should at least explore different settings
of "pre_filt" and "water_level" and check how they influence your results.


Dear Ryan,

as Tobias hinted, ground-motion restitution through removal of the instrumental response is one of the most delicate tasks in seismic signal processing.
Obspy allows to perform the task, but you might really need some good signal processing and seismometry background to command the process.

Let me list a few popular readings below:

F. Scherbaum, Of Poles and Zeros, Fundamentals of Digital Seismology,
   Kluwer Academic Publishers, 2006.
online @ http://www.springerlink.com/content/t5510k446366/
D. Gubbins, Time Series Analysis and Inverse Theory for Geophysicists,
   Cambridge University Press, 2004
J. Havskow and G. Alguacil, Instrumentation in Earthquake Seismology, Springer 2010
online @ http://www.springerlink.com/content/978-1-4020-2968-4/#section=658729&page=1

Best regards,

Dear Tobias and Cauzzi,

Thank you very much for your informative and helpful replies! I will take a look at it again and try to improve the results with your input!

With regards,