Merge two events in one with control on preferred_*


What is the proper way to merge the origins, magnitudes (and all other elements if possible) of two events coming from different 2 catalogs. And how to define manually the preferred [origin, magnitude, etc] to pick between the two versions ?

Say, I would like to add all origins and preferred origin of [event j, catalog_2] to a copy of [event i, catalog_1] I have made some experiments using :

merges = obspy.core.event.catalog.Catalog()[ i ])

for elt in[ j ].origins:[-1].origins.append(elt)[-1].preferred_origin_id =[ j ].preferred_origin_id

But I feel like going the wrong way… should I use the Event.update method ? If yes, how ?



Fr****édérick Massin +41 44 63 - 38276 | Git | Blog | Publications.

Hi Fred,

this is a bit of a special use case so I am not sure that there is a proper way to do it. In any case - your code is basically correct - don’t use the update() method.

Note that you don’t have to loop to add all origins of event 2 to event 1:

and instead of directly copying the preferred origin id you could also manually pick the preferred origin:

ev1.preferred_origin_id =[-1].resource_id

If you have any ideas on how to make this easier or more intuitive let us know. I think this is just a consequence of the fairly complex data model of ObsPy which is modelled after QuakeML.



Hi Lion,

This is not so hard…

Thank you very much !