fmagrini / seislib

Seismic imaging at local, regional, and global scale
https://seislib.readthedocs.io/en/latest/
MIT License
67 stars 17 forks source link

Can't get frequency greater than .5 using seismic ambient noise #17

Closed bensonbee closed 3 months ago

bensonbee commented 3 months ago

Hello! I have been learning and messing with this program for about a year. I think it is great but I can not seem to get frequencies greater than .5 when choosing my dispersion curve. I have my download and extract dispersion curve functions both to have a max frequency of around 1hz. I wanted to see if I could get periods between 1 and 10.

Here is my current code, omiting my what i am using for my reference curve my t2 and t1 are a year apart.

stations_configamb=dict( channel='BH*', starttime=t1, endtime=t2, latitude= 41, longitude= -121,
maxradius = 1)

downloader = ANDownloader(savedir='files', inventory_name='surface.xml', provider= "IRIS", sampling_rate=1, prefilter= (0.001, .1, 1, 2), units='disp', attach_response=False, stations_config=stations_configamb, verbose=True) downloader.start()

an.extract_dispcurves(refcurve, freqmin=0.1, freqmax= 1, cmin=1, cmax=5, distmax= None, window_length=3600, overlap=.5, min_no_days=1, plotting = True, save_xcorr = True, manual_picking=True, show = False)

I seem to only get up to a frequency of .5 every time, but I can not see why. I have looked though the code and don't see anything that would trigger that so, as I assumed, it must be a issue with my input. I also thought it could be an issue of how far my stations are, but the sudden stop at .5 instead of seeming to vary by distance makes me think over wise. Thank you

fmagrini commented 3 months ago

Hello! Thanks for opening this issue. I am not sure I understand what you mean when you say:

but the sudden stop at .5 instead of seeming to vary by distance makes me think over wise

Based on your code, I can see that you are trying to pick dispersion curves manually. I deduce that by "sudden stop" you are referring to the zero-crossings, which are calculated only up to 0.5 Hz. If that is the case, you might only need to extend your reference curve to 1 s period before passing it to an.extract_dispcurves. (Note that the frequency range spanned by the retrieved zero-crossings always coincides with that spanned by your reference curve.)

I cannot see any other big issues in your code. Please keep in mind that calculating phase velocities at periods shorter than ~2 s can be challenging, depending on your inter-station distances, length of recordings, and "quality" (loosely speaking) of your seismic records.

I hope this helps. I will close this issue for now. Feel free to reopen it in case this does not solve your problems.