gimli-org / gimli

Geophysical Inversion and Modeling Library :earth_africa:
https://www.pygimli.org
Other
383 stars 137 forks source link

Question: Can I use PyGIMLi to perform an attenuation tomography with earthquake data? #788

Open eguzmanv opened 3 weeks ago

eguzmanv commented 3 weeks ago

Problem description

I have an earthquake database. For each event-station pair, I have calculated the Q value along the raypath. Based on this information, I have created a DataContainer that includes the locations of the sensors and events, along with +9000 Q values. Additionally, I have created the grid (3D) for my study volume.

As I explore the various classes, functions, and examples that PyGIMLi offers to understand its capabilities, I'm wondering if it is possible to perform tomography to visualize how Q is distributed throughout my study volume.

Your environment


Date: Tue Oct 29 14:41:48 2024 UTC

            OS : Linux (Ubuntu 22.04)
        CPU(s) : 32
       Machine : x86_64
  Architecture : 64bit
           RAM : 16 GiB
   Environment : Python
   File system : ext4

Python 3.10.14 | packaged by conda-forge | (main, Mar 20 2024, 12:45:18) [GCC 12.3.0]

       pygimli : 1.5.2
        pgcore : 1.5.0
         numpy : 1.26.4
    matplotlib : 3.9.1
         scipy : 1.14.1
          tqdm : 4.66.5
       IPython : 8.29.0
       pyvista : 0.44.1

Expected behavior

I aim to conduct tomography to examine how Q is distributed across the study volume.

halbmy commented 3 weeks ago

I guess that's easily possible. Of course, first one needs to do a traveltime tomography to have the way matrix, which is then needed as operator for the logarithmic amplitudes. So there should be columns for both t and Q. Would be good to demonstrate this on behalf of a simple 2D model first.

makeabhishek commented 1 week ago

Take a look of it here : https://github.com/gimli-org/notebooks/blob/main/issues/546/issue546.ipynb

But I do not understand why the log of amplitude was taken.

appAtt = - np.log(data["a"]) / dist

Also what is TransLog

tLog = pg.trans.TransLog()
fAtt.modelTrans = tLog
halbmy commented 1 week ago

Indeed I had forgotten that I have created a notebook one and a half year ago...

If the logarithm of the amplitude is taken (on the data side), the problem is linear with the traveltime way matrix.

The logarithmic transform used for the model parameter is as usual to prevent negative model parameters. Actually, a tutorial for transformation functions is needed.

eguzmanv commented 1 week ago

Thank you both for your prompt responses. The notebook you mentioned has been very helpful. I've been testing the pygimli functions with my data for both 2D and 3D scenarios. In both cases, I was able to map Q in my study volume; however, I think I'll need to increase my RAM a bit more for the 3D scenario to get better results. This would be my next step.

I was also wondering if there might be a way to paralellize the processes - I believe there isn't an input parameter for that (please correct me if I'm wrong).

A tutorial for transformation functions would be very helpful in the future