EQTransformer icon indicating copy to clipboard operation
EQTransformer copied to clipboard

question about channel filtering behavior

Open dylanmikesell opened this issue 3 years ago • 7 comments

I am running a download using a channel filter (I think anyways). I use the following.

channel_list=["HH[ZNE12]"]

However, I returned in the json file in json/ is the complete list of channels at a station. For example,

"REDW": {"network": "IW", "channels": ["HN1", "LN1", "LH1", "BH2", "LN2", "LHZ", "BH
1", "BHZ", "HN2", "HNZ", "LNZ", "LH2"], "coords": [43.3624, -110.8518, 2192.0]}

Can you please explain the behavior of channel_list to me? I am writing some other code to build a station file for hypoinverse from the json file, but the fact that there are these extra channels is screwing things up for me. I did update EQTransformer code today, so I am using EQTransformer==0.1.61.

Thanks!

dylanmikesell avatar Jul 19 '21 18:07 dylanmikesell

Hi @dylanmikesell, your channel_list format looks fine. These are channel_priorities by the way and I do not know why it returns low frequency and broadband channels as well. Under the hood Obspy's mass downloader is being used these are the documentations https://docs.obspy.org/packages/autogen/obspy.clients.fdsn.mass_downloader.html

smousavi05 avatar Jul 21 '21 03:07 smousavi05

I think the mass_downloader call is fine. However, in utils/downloader.py there is the makeStationList() function. It looks to me like someone was trying to code in a channel filter given the channel_list variable, but I do not think it is working. The function downloadMseeds() does only download the channel_list channels. But I am not sure why channel_list is an input to makeStationList() when it doesn't seem to filter the json file channels.

dylanmikesell avatar Jul 21 '21 21:07 dylanmikesell

@dylanmikesell I see now. It seems the formatting conventions for channel list is different here. Could you try something like this: channel_list=["HHZ", "HHN", "HHE", "HH1", "HH2"]

smousavi05 avatar Jul 22 '21 19:07 smousavi05

I have a related question to this. I am creating my station list and finding a mix of stations with multiple channels and some with a single channel, which seems fine. However, when I run the downloader, I am only getting mseed files with single component data for every station on my station list. I don't believe I am using the downloader incorrectly but is there something I am doing that is causing only a single channel to be collected per station?

Example

Station MNHN from JSON list has channels HH2, HHZ, HH1

downloaded mseed file 'TX.MNHN.00.HHZ__20200501T000000Z__20200502T000000Z.mseed' only has the channel HHZ and is the only mseed downloaded for station MNHN.

Code

makeStationList(json_path=json_basepath,
                  client_list=["IRIS"], 
                  min_lat=31.00, 
                  max_lat=33.50, 
                  min_lon=-105.00, 
                  max_lon=-102.00, 
                  start_time= start_time, 
                  end_time=end_time, 
                  channel_list=["HHZ", "HHE", "HHN", "EHZ", "HH1", "HH2", "EHE", "EHN", "EH1", "EH2"], 
                  filter_network=["SY", "PN"], 
                  filter_station=["DG01", "DG02", "DG03", "DG04", "DG05", "DG06", "DG07", "DG08", "DG09", 
                                  "MB01", "MB02", "MB04", "MB07",
                                   "PB03", "PB04", "PB06", "PB02", "PB09", "PB10", "PB12", "PB13", "PB14", "PB15",
                                    "PB16", "PB18", "PB19", "PB21", "PB28", "PB29", "PB30", "PB31", "PB32", "PB33"])

downloadMseeds(client_list=["IRIS"], 
                 stations_json=json_basepath, 
                 output_dir="downloads_mseeds", 
                 min_lat=31.00, 
                 max_lat=33.50, 
                 min_lon=-105.00, 
                 max_lon=-102.00, 
                 start_time=start_time, 
                 end_time=end_time, 
                 chunk_size=1, 
                 channel_list=["HHZ", "HHE", "HHN", "EHZ", "HH1", "HH2", "EHE", "EHN", "EH1", "EH2"], 
                 n_processor=4)

Bryanrt-geophys avatar Jul 25 '21 00:07 Bryanrt-geophys

@Bryanrt-geophys Hi Bryan, that sometimes happens just due to networking traffic. I have seen that behavior before but couldn't find any explanation/solution for it as it is mainly governed by Obspy API and IRIS fetching mechanism.

smousavi05 avatar Jul 25 '21 04:07 smousavi05

@smousavi05 Thanks Mustafa. It appears to have happened with every instance I have drawn on so far. I will try looking into Obspy and see if there is something I can figure out from there. If I find anything I will be sure to pass it on.

Also, as I am not a seismologist, I don't know if this is a horrible idea but can the missing components from a sensor be simulated easily from single component data?

Bryanrt-geophys avatar Jul 25 '21 19:07 Bryanrt-geophys

@Bryanrt-geophys thanks. No simulation is not easy. Jut try downloading the same data using Obspy and see if you get those missing traces.

smousavi05 avatar Jul 25 '21 23:07 smousavi05