Merge two events in one with control on preferred_*

Hello

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()
merges.events.append(catalog_1.events[ i ])

for elt in catalog_2.events[ j ].origins:

merges.events[-1].origins.append(elt)

merges.events[-1].preferred_origin_id = catalog_2.events[ j ].preferred_origin_id

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

Regards

Fred

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:

ev1.origins.extend(ev2.origins)

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

ev1.preferred_origin_id = ev1.origins[-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.

Cheers!

Lion

Hi Lion,

This is not so hard…

Thank you very much !

Regards