ihesp / IPART

Image-Process based Atmospheric River Tracking (IPART) algorithms
https://ipart.readthedocs.io/en/latest/
GNU General Public License v3.0
22 stars 8 forks source link

A gentle request #20

Open ShangWangCS opened 1 year ago

ShangWangCS commented 1 year ago

Dear author, I wonder if it is convenient for you to provide the results of atmospheric rivers identification, or I wonder if it is convenient for you to provide the IVT data of CMIP6. Thank you very much!

Xunius commented 1 year ago

Hi @Home-tenderness I'm afraid the answer would be no to both. I haven't processed any CMIP6 myself. And I think you should look for downloads of integrated northward and eastward moisture fluxes from the CMIP6 data portal or website, and then compute the IVT yourself.

ShangWangCS commented 1 year ago

Ok, thank you very much for your reply! There are some more specific questions:

  1. Whether the input data resolution requirements, such as 0.25*0.25, and then the need is hourly data, right?
  2. The second problem is that, you what is the scope of this algorithm, at https://www.cgd.ucar.edu/projects/artmip/algorithms before I see IPART scope of application is in the northern hemisphere, The article https://gmd.copernicus.org/articles/13/4639/2020/ before including also mention of 20-80 degrees north latitude. I wonder if you can use this algorithm to calculate the global, or 20-80 degrees north and south latitude range. I think the southern Hemisphere results are also very important.
  3. The third problem is that I see there is also another web site, https://github.com/dominiktraxl/artracks, this site are the IPART with you, is there a difference? Thank you for your busy reply, best wishes!
Xunius commented 1 year ago

Whether the input data resolution requirements, such as 0.25*0.25, and then the need is hourly data, right?

0.25*0.25 would work. There isn't a very strict requirement on the resolution, so long as it is not too coarse (> 2.0x2.0 is probably too coarse by today's standard). It also doesn't have to be hourly. 6-hourly or even daily would work. There is a KERNEL global parameter in the scripts compute_thr_singlefile.py and compute_thr_multifile.py (use either one), and the 3 numbers in the KERNEL are related to the resolution of your data. I suggest going through the notebook tutorials (and the GMD paper if necessary) for guidance on how to set a suitable KERNEL depending on resolution.

The second problem is that, you what is the scope of this algorithm, at https://www.cgd.ucar.edu/projects/artmip/algorithms before I see IPART scope of application is in the northern hemisphere, The article https://gmd.copernicus.org/articles/13/4639/2020/ before including also mention of 20-80 degrees north latitude. I wonder if you can use this algorithm to calculate the global, or 20-80 degrees north and south latitude range. I think the southern Hemisphere results are also very important.

It can be used (and have been by myself) to process the entire globe. The 20-80 degrees north range is mostly for selecting out the mid-latitude domain, so we achieve a closer correspondence between what is detected by the algorithm and extra-tropical cyclones, which are what drives (most) ARs . You can adjust the boundary to your needs. I have processed the Southern Hemisphere myself and I have heard about other people doing the same using this tool.

The third problem is that I see there is also another web site, https://github.com/dominiktraxl/artracks, this site are the IPART with you, is there a difference?

I didn't know about this repo you mentioned. It seems that IPART is used to create that catalogue. But it is using the ERA5 data, not CMIP6 as you mentioned earlier.

ShangWangCS commented 1 year ago

Thanks for your detailed reply above, I got an error while running notebooks with the third file, 3_detect_ARs.ipynb.

IndexError Traceback (most recent call last) /var/folders/nm/3fb3rytd46n9777cz16dwmp00000gn/T/ipykernel_77206/3576563972.py in 17 18 #--------------------Slice data-------------------- ---> 19 qu=qu.sliceData(TIME_START,TIME_END,axis=0).squeeze() 20 qv=qv.sliceData(TIME_START,TIME_END,axis=0).squeeze() 21 ivt=ivt.sliceData(TIME_START,TIME_END,axis=0).squeeze()

~/opt/anaconda3/lib/python3.9/site-packages/ipart/utils/funcs.py in sliceData(self, v1, v2, axis) 348 raise Exception("No data found in [v1,v2].") 349 --> 350 newdata=self.data[slicer] # if var is np.ndarray 351 352 #--------------Create a new data obj--------------

~/opt/anaconda3/lib/python3.9/site-packages/numpy/ma/core.py in getitem(self, indx) 3220 # mask of being reshaped if it hasn't been set up properly yet 3221 # So it's easier to stick to the current version -> 3222 dout = self.data[indx] 3223 _mask = self._mask 3224

IndexError: only integers, slices (:), ellipsis (...), numpy.newaxis (None) and integer or boolean arrays are valid indices

ShangWangCS commented 1 year ago

Thank you very much!Okay, I found a solution.

ShangWangCS commented 1 year ago

Hello, I have one more question and one more request. The question is that I find that the coordinates of the center point have a longitude greater than 360, do I need to convert them again, for example, 361 represents 179 degrees west longitude? My request is that I wonder if you can go on to give some columns to calculate the landing location of the Atmospheric River and the different geographical areas to which it belongs. Thank you! Best wishes!

Xunius commented 1 year ago

@Home-tenderness

The question is that I find that the coordinates of the center point have a longitude greater than 360, do I need to convert them again, for example, 361 represents 179 degrees west longitude?

I think if you decide to convert the longitude to within 0-360 you could do something like longitude = longitude % 360, so 361 turns into 1.

My request is that I wonder if you can go on to give some columns to calculate the landing location of the Atmospheric River and the different geographical areas to which it belongs.

I think this belongs to subsequent analyses one might want to carry out after the detection of the ARs. How to determine a landing location may vary depending on some subjective criteria. Say, what resolution of the coastline shape one chooses to use to define the land -vs-ocean regions, is the outer boundary of the AR or the centroid of the AR used to qualify a landing, how long the landing has to be to distinguish a proper landing from a noise, etc. Similar for the geographical areas, I think you can decide it yourself so long as the geographical area definition is sensible enough to help explain the topic you wish to explain.

ShangWangCS commented 1 year ago

KERNEL=[16,6,6] As for the parameter selection of kernal, I don't quite understand, if my resolution is 1.125, then how should I set the parameter, thank you!