Subduction convergence & obliquity in pyGPlates

Hi, just wondered if anyone had already written a pyGPlates script to calculate subduction convergence and obliquity over time for a given latitude and longitude?

As this is how convergence histories are commonly reported in papers, I thought someone may have already put one together.

Thank you for your help,

Hi Alex,

Yes there’s a subduction convergence Python script in PlateTectonicTools that can calculate convergence velocity and obliquity (among other outputs).

You can see the various options and available outputs by running:

python -m ptt.subduction_convergence --help

Alternatively you can import ptt into your own Python script and call the subduction convergence function as is done in this notebook.

Hi John,

Thank you for your reply. I’ve spent the day trying to get my head around the script, but haven’t worked out how to extract convergence data relative to a fixed point on the overriding plate, as done in the kinematics tool for GPlates. Essentially, I have a reconstruction in GPlates where the convergence is visibly close to orthogonal over the whole period of interest, but the kinematics tool shows a wide range (90°) of velocity azimuths. I’ll have a look around and see if anyone has written anything elsewhere - it seems the kind of thing someone is bound to have done before!

Thank you again,

Ah yes, you’re wanting convergence at a specific location. Whereas the subduction convergence script does not take location(s) as input. Instead it takes the topologies as input (eg, topological plate polygons) and calculates convergence at many even-spaced points along its subducting boundaries.

The subduction convergence script essentially works by resolving the topological plate polygons (at a specific reconstruction time) and retrieving subduction zone segments from that. Each segment has its own subducting and overriding plate. Then each subduction segment is tessellated (by a user-specified amount) into even-spaced points. Then the convergence/obliquity/etc is calculated at these points.

One option, if you have a fixed position that you know is on a subducting line, is to find the closest point (output by the subduction convergence script) to your fixed point. And then use the convergence output parameters associated with that point. This would mean you’d need to tessellate finely enough to get the accuracy you want (ie, so your fixed point and the nearest tessellated point aren’t too far away from each other). To find the nearest tessellated point you can use this pyGPlates function - if you decide to try this then I can provide more details on using that function. It would be similar to this sample code but instead of distance from your fixed point to a reconstructed geometry it would be distance to a point that is output by the subduction convergence script (and looping over all output points to find the shortest distance).

Yes the Kinematics Tool wouldn’t help here, since azimuth is relative to North rather than the subduction line itself.

Hi John,

Thank you again for your detailed answer. In the end, I think I’ve managed to get what I’m after using the Kinematics tool by creating point locations on the overriding plate, and using “use focussed feature” on these points whilst setting the subducting plate as the Anchor Plate. Subtracting 180° from the resultant azimuth gives me the obliquity of the down-going plate.

However, I’m keen to get a handle on pyGPlates. Having watched the course by Ben and Nicky on YouTube, it’s very clearly a powerful tool. I will have a look at the script and suggestions you’ve made.

Thank you again for all your help,