Receiver functions for PKP-arrivals

Hello everyone,
is it possible to calculate Receiver Functions with the PKP-phases using the rf-module?
When I try to create the RFstream with stream = RFStream(zrt) and rfstats(stream), the traces are not added to the stream.
In the documentation I found how to differ between P and S phase, but is it also possible to calculate with PKP arrivals? Is there a way to ‘trick’ the module that it is calculating the slowness for the PKP-phases and based on that creating the RFs?
Many thanks in advance! :slight_smile:


Yes that should be possible. Please try something along this line

rfstats(stream, phase='PKP', dist_range=(130, 160))

When the resulting stream is empty, the calculated distances are probably not in the expected distance range.


thanks for your help.
Unfortunately, I still have problems with that…

I’m receiving the Error:
File “…/python3.8/site-packages/rf/”, line 698, in rfstats
warnings.warn(msg % (phase, dist))

TypeError: not all arguments converted during string formatting

I tried a few things, but I don’t know how to fix this…but even if I exclude the warning.warn message, I receive again 0 traces in the stream…

For my example, the calculated epicentral distance was 146°, which is perfectly between the dist_range of 130-160°.

Thanks for your help!

I opened a PR to track changes resulting from the discussion here.

The mentioned warning is triggered when more than one arrival is returned by taupy. There was an error upon formatting the warning message which hopefully is fixed now.

I do not understand yet, why nothing is returned when you comment the message. Can you try again with the code from the PR? If the problem persists, do you have a small code example illustrating the problem?

Hi, it is working now. Thanks a lot!