Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

age-gridding gaps #182

Open
michaelchin opened this issue Jun 4, 2024 · 16 comments
Open

age-gridding gaps #182

michaelchin opened this issue Jun 4, 2024 · 16 comments
Assignees
Labels
bug Something isn't working medium

Comments

@michaelchin
Copy link
Contributor

Here is an example of the gaps in the age-gridding process using the 1 Ga model.
Screenshot 2024-06-04 at 4 43 51 PM

@michaelchin michaelchin added bug Something isn't working medium labels Jun 4, 2024
@michaelchin
Copy link
Contributor Author

Investigation is in process. Set to "medium" priority. Let me know if "high" priority is needed.

@michaelchin michaelchin self-assigned this Jun 13, 2024
@michaelchin michaelchin pinned this issue Jun 14, 2024
@michaelchin
Copy link
Contributor Author

Customer mentioned "the 1 Ga model". Need to confirm with customer which model exactly is mentioned here.

@michaelchin michaelchin unpinned this issue Jun 17, 2024
@michaelchin
Copy link
Contributor Author

I had sent an email to customer to clarify the meaning of "the 1 Ga model". Waiting for customer's response.

@michaelchin
Copy link
Contributor Author

while waiting for customer's response, I tested with merdith2021 model which goes back to 1Ga as well. There are no seed points in the area which the customer had reported. See the screenshot below. Need to investigate why the missing seed points.

Note: the seed points come from two sources, ocean seed points at the initial time and MOR points at each time step.

Screenshot 2024-06-17 at 12 09 03 PM

@michaelchin
Copy link
Contributor Author

I have put the intermediate files at https://repo.gplates.org/webdav/mchin/test-agegrid-output-20240613/.

The model being used is merdith2021.

sample_points/: sea floor seed points in both .gpmlz and .pkl format
SEAFLOOR_AGE/ : age grid netcdf files
agegrids.mp4 : the animation from 1000Ma to 0Ma
images/ : .png images from 1000Ma to 0Ma

You may use macOS "Finder" to copy the files (login as Guest).

Alternatively, you may use CyberDuck with "webdav" protocol to download the files.

You may open the .gpmlz file in GPlates and colour the points by "FeatureAge".

@michaelchin
Copy link
Contributor Author

Investigation is still in progress. Need to find out why there are no "seed points" in certain areas.

@jcannon-gplates
Copy link

Thanks for putting that all together.

I see what you mean now! The seed point GPML files are very large and slow (as you mentioned in the last meeting).

Here’s a better way to do this – as done in the original isopolate - and should help a lot…

Instead of saving as individual points you can save as a multipoint coverage. Basically, each point gets one or more scalar values – such as age, spreading rate, direction, obliquity, etc. But it’s all compactly stored in the GPML file – so it’s much smaller and loads faster. In isopolate, you can see how it’s done here (where this function shows how the age, spreading rate, direction, obliquity, etc, are added). This ultimately hinges around pygplates.Feature.set_geometry() (see the bottom example in that function).

The following screenshot shows some old isopolate output (it’s actually lines instead of multipoints, but it’s the same idea, each point gets a different colour). And it’s easy to switch between the different output types (eg, age, spreading obliquity, etc) and colour each output type with a different palette. This is in grey layers (that aren’t commonly seen in GPlates).

Also, if you could set the feature time-period on each GPML to [time+0.5, time-0.5] that would be great! Because it means we can load all the GPMLs at once and animate the time slider - and only one GPML will be visible at a time. That allows us to more easily animate the seed points to see where they go over time. Currently, when you animate the slider you also have to disable some layers at later times so they don’t overlap the current time.

image

@michaelchin
Copy link
Contributor Author

At around 428Ma, Laurussia plate started to move to right and away from Farallon Ocean plate. See the screenshots below. While Laurussia moving to right, the seed points in Farallon Ocean plate did not follow and there was no middle ocean ridge between the two plates. So no points to fill the void and a gap started forming. At around 410Ma, a big gap formed. I have very limited plate tectonic knowledge and I don't want to pretend. I could not understand what was going on there.

Screenshot 2024-06-28 at 6 39 59 PM Screenshot 2024-06-28 at 6 40 15 PM

@michaelchin
Copy link
Contributor Author

The seed points come from two sources. One is the initial oceanic points and the other is the middle ocean ridges. So either the old seed points move into the gap or the middle ocean ridges generate the new points, otherwise the gap is inevitable.

@michaelchin
Copy link
Contributor Author

michaelchin commented Jun 29, 2024

I had sent an email to customer to clarify the meaning of "the 1 Ga model". Waiting for customer's response.

Still no response from customer.

Assume "the 1 Ga model" means any models which go back to 1000Ma, such as merdith2021, unless the customer says otherwise.

@jcannon-gplates
Copy link

Thanks for making those changes! Much easier to view now.

I agree with your assessment. It appears the ocean plate is moving away from the continent. Which leaves a gap that cannot be captured by the seed points (for the reasons you stated).

I guess that’s where the interpolation ideas bounced around in recent meetings (a separate concept than seed point reconstruction) might need to come into play.

Just a minor point: in future if you add more than just seafloor ages to the sample points (eg, spreading rate/obliquity/etc) then it might be easier to view if all sample points are in a single file – only because with hundreds of file/layers (ie, one per time step) you’d have to go into each layer and select spreading rate, for example, if you wanted to switch from viewing seafloor age to spreading rate. And if that single file is too big then could always have one file every 100Myr or so, for example.

@michaelchin
Copy link
Contributor Author

it might be easier to view if all sample points are in a single file

yes, it is a good idea.

@michaelchin
Copy link
Contributor Author

@jcannon-gplates I tried to recall what decision had been made in the auscope meeting on 2 July, 2024, but my memory failed me again. Did we conclude anything in the meeting regarding this age gridding gaps?

@jcannon-gplates
Copy link

Did we conclude anything in the meeting regarding this age gridding gaps?

My memory is a bit sketchy on that too ;-) I think Dietmar mentioned just continuing with the changes that makes it easier to view for now, such as:

  1. Adding some extra parameters like what's in isopolate (eg, the spreading rate/obliquity/etc)? I think you said you currently have age and spreading rate.
  2. Put it all into a single file so can switch between those parameters in just a single layer (associated with the single file).

...then others might look into the gaps further.

@jcannon-gplates
Copy link

Then there's the issue of how to actually fill the gaps in the age-gridding. Sabin noted that the gap in this particular issue is an error in the model (ie, ocean crust wasn't subducting but instead going in reverse direction), and would need to be fixed in the model itself.

For a general solution, I suggested we could add seed points in the gaps (assuming that once a model is fixed that you'd still have gaps here and there). So that could involve:

  1. Detecting gaps that need filling.

    • We'd need a heuristic to find gaps.
    • Not all gaps would need filling.
    • Eg, sometimes cracks form between reconstructed seed points for various reasons (such as topological geometries abruptly changing shape over a time step). And these don't need to be filled.
  2. Inserting seed points into those gaps and assigning ages to them.

    • This could be based on interpolation with nearby points, but that gets tricky in some scenarios such as subduction zones I guess (might need to extrapolate there).
    • It could also be based on following the direction of spreading for each inserted seed point and getting age from nearest existing seed point along that direction, something like that anyway.
  3. Having two debug seed point files:

    1. One file containing original seed points (ie, what you have now).
    2. Another file containing seed points added into gaps (and tracking them over time).

    This would allow users to hide one or the other (in GPlates) to see the effect that filling gaps has.

So yeah, just some random thoughts I mentioned in the meeting. But I think we'd all need to really discuss this again in future meeting before doing any work on a general solution.

@michaelchin
Copy link
Contributor Author

Then there's the issue of how to actually fill the gaps in the age-gridding. Sabin noted that the gap in this particular issue is an error in the model (ie, ocean crust wasn't subducting but instead going in reverse direction), and would need to be fixed in the model itself.

For a general solution, I suggested we could add seed points in the gaps (assuming that once a model is fixed that you'd still have gaps here and there). So that could involve:

  1. Detecting gaps that need filling.

    • We'd need a heuristic to find gaps.
    • Not all gaps would need filling.
    • Eg, sometimes cracks form between reconstructed seed points for various reasons (such as topological geometries abruptly changing shape over a time step). And these don't need to be filled.
  2. Inserting seed points into those gaps and assigning ages to them.

    • This could be based on interpolation with nearby points, but that gets tricky in some scenarios such as subduction zones I guess (might need to extrapolate there).
    • It could also be based on following the direction of spreading for each inserted seed point and getting age from nearest existing seed point along that direction, something like that anyway.
  3. Having two debug seed point files:

    1. One file containing original seed points (ie, what you have now).
    2. Another file containing seed points added into gaps (and tracking them over time).

    This would allow users to hide one or the other (in GPlates) to see the effect that filling gaps has.

So yeah, just some random thoughts I mentioned in the meeting. But I think we'd all need to really discuss this again in future meeting before doing any work on a general solution.

Thanks John.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working medium
Projects
None yet
Development

No branches or pull requests

2 participants