[ncl-talk] Fwd: efficient way of reading numbered directories?

Tabish Ansari tabishumaransari at gmail.com
Thu Feb 21 15:53:08 MST 2019


Tabish U Ansari
PhD student, Lancaster Environment Center
Lancaster Univeristy
Bailrigg, Lancaster,
LA1 4YW, United Kingdom


---------- Forwarded message ---------
From: Tabish Ansari <tabishumaransari at gmail.com>
Date: Thu, 21 Feb 2019 at 22:52
Subject: Re: [ncl-talk] efficient way of reading numbered directories?
To: Adam Phillips <asphilli at ucar.edu>
Cc: Dennis Shea <shea at ucar.edu>


Hi Adam, Dennis,

Thanks very much.
But this only solves part of the problem that is reading in the directories.

I still have these other lines which have to be repeated 60 times with
changing numbers as part of variable names.

FILES1 = systemfunc (" ls -1 " + DATADir1 + "subset_d03_2014-* ")
FILES2 = systemfunc (" ls -1 " + DATADir2 + "subset_d03_2014-* ")
FILES3 = systemfunc (" ls -1 " + DATADir3 + "subset_d03_2014-* ")
FILES4 = systemfunc (" ls -1 " + DATADir4 + "subset_d03_2014-* ")
FILES5 = systemfunc (" ls -1 " + DATADir5 + "subset_d03_2014-* ")
FILES6 = systemfunc (" ls -1 " + DATADir6 + "subset_d03_2014-* ")
FILES7 = systemfunc (" ls -1 " + DATADir7 + "subset_d03_2014-* ")
..... and so on up to FILES60

a1 = addfiles(FILES1,"r")
a2 = addfiles(FILES2,"r")
a3 = addfiles(FILES3,"r")
a4 = addfiles(FILES4,"r")
a5 = addfiles(FILES5,"r")
a6 = addfiles(FILES6,"r")
a7 = addfiles(FILES7,"r")
a8 = addfiles(FILES8,"r")
.... and so on up to a60

pm25_sim_a1    = a1[:]->PM2_5_DRY(:,0,145,79)
pm25_sim_a2    = a2[:]->PM2_5_DRY(:,0,145,79)
pm25_sim_a3    = a3[:]->PM2_5_DRY(:,0,145,79)
pm25_sim_a4    = a4[:]->PM2_5_DRY(:,0,145,79)
pm25_sim_a5    = a5[:]->PM2_5_DRY(:,0,145,79)
pm25_sim_a6    = a6[:]->PM2_5_DRY(:,0,145,79)
pm25_sim_a7    = a7[:]->PM2_5_DRY(:,0,145,79)
..... and so on up to
pm25_sim_a60    = a60[:]->PM2_5_DRY(:,0,145,79)

Further inside a loop...
 pm25_sim_a1    = pm25_sim_a1 + a1[:]->PM2_5_DRY(:,0,J,I)
 pm25_sim_a2    = pm25_sim_a2 + a2[:]->PM2_5_DRY(:,0,J,I)
 pm25_sim_a3    = pm25_sim_a3 + a3[:]->PM2_5_DRY(:,0,J,I)
 pm25_sim_a4    = pm25_sim_a4 + a4[:]->PM2_5_DRY(:,0,J,I)
 pm25_sim_a5    = pm25_sim_a5 + a5[:]->PM2_5_DRY(:,0,J,I)
 pm25_sim_a6    = pm25_sim_a6 + a6[:]->PM2_5_DRY(:,0,J,I)
and so on... up to
pm25_sim_a60    = pm25_sim_a60 + a60[:]->PM2_5_DRY(:,0,J,I)

pm25_sim_a1 = pm25_sim_a1 / 12.0
pm25_sim_a2 = pm25_sim_a2 / 12.0
pm25_sim_a3 = pm25_sim_a3 / 12.0
pm25_sim_a4 = pm25_sim_a4 / 12.0
pm25_sim_a5 = pm25_sim_a5 / 12.0
pm25_sim_a6 = pm25_sim_a6 / 12.0
pm25_sim_a7 = pm25_sim_a7 / 12.0
... and so on up to
pm25_sim_a60 = pm25_sim_a60 / 12.0


Is there a way to deal with that in a loop?

Cheers,

Tabish

Tabish U Ansari
PhD student, Lancaster Environment Center
Lancaster Univeristy
Bailrigg, Lancaster,
LA1 4YW, United Kingdom


On Thu, 21 Feb 2019 at 22:39, Adam Phillips <asphilli at ucar.edu> wrote:

> Dennis: Agreed, your way is more elegant.
>
> On Thu, Feb 21, 2019 at 3:37 PM Dennis Shea <shea at ucar.edu> wrote:
>
>> offline!
>>
>> I was just typing when I saw Adam's response.
>>
>> Originally, I was going to use a 'do loop' but then
>>
>>  N = 60
>>  dirRoot  = "/mnt/rasher/"+N+"sensruns/run" +*ispan*(1,N,1)+"/"
>>  print(dirRoot)
>>
>> On Thu, Feb 21, 2019 at 3:30 PM Adam Phillips <asphilli at ucar.edu> wrote:
>>
>>> Hi Tabish,
>>> Yes, a do loop could be used:
>>>
>>> DATADir =  "/mnt/rasher/60sensruns/run"
>>> do gg = 1,60
>>>      FILES1 = systemfunc (" ls -1 " + DATADir +gg+ "subset_d03_2014-* ")
>>>      a1 = addfiles(FILES1,"r")
>>> .....
>>>
>>> Also note, you could set up a string array that houses the directories
>>> using a do loop
>>> DATADir = new(60,string)
>>> do gg = 1,dimsizes(DATADir)-1
>>>      DATADir(gg-1) = "/mnt/rasher/60sensruns/run"+gg
>>> end do
>>>
>>> Adam
>>>
>>> On Thu, Feb 21, 2019 at 1:15 PM Tabish Ansari <
>>> tabishumaransari at gmail.com> wrote:
>>>
>>>> Hi
>>>>
>>>> I am currently reading in files in a very inefficient way from 60
>>>> directories:
>>>>
>>>> DATADir1 = "/mnt/rasher/60sensruns/run1/"
>>>> DATADir2 = "/mnt/rasher/60sensruns/run2/"
>>>> DATADir3 = "/mnt/rasher/60sensruns/run3/"
>>>> DATADir4 = "/mnt/rasher/60sensruns/run4/"
>>>> DATADir5 = "/mnt/rasher/60sensruns/run5/"
>>>> DATADir6 = "/mnt/rasher/60sensruns/run6/"
>>>> DATADir7 = "/mnt/rasher/60sensruns/run7/"
>>>> DATADir8 = "/mnt/rasher/60sensruns/run8/"
>>>> DATADir9 = "/mnt/rasher/60sensruns/run9/"
>>>> DATADir10 = "/mnt/rasher/60sensruns/run10/"
>>>> DATADir11 = "/mnt/rasher/60sensruns/run11/"
>>>> DATADir12 = "/mnt/rasher/60sensruns/run12/"
>>>> DATADir13 = "/mnt/rasher/60sensruns/run13/"
>>>> DATADir14 = "/mnt/rasher/60sensruns/run14/"
>>>> DATADir15 = "/mnt/rasher/60sensruns/run15/"
>>>> DATADir16 = "/mnt/rasher/60sensruns/run16/"
>>>> DATADir17 = "/mnt/rasher/60sensruns/run17/"
>>>> DATADir18 = "/mnt/rasher/60sensruns/run18/"
>>>> DATADir19 = "/mnt/rasher/60sensruns/run19/"
>>>> DATADir20 = "/mnt/rasher/60sensruns/run20/"
>>>> DATADir21 = "/mnt/rasher/60sensruns/run21/"
>>>> DATADir22 = "/mnt/rasher/60sensruns/run22/"
>>>> DATADir23 = "/mnt/rasher/60sensruns/run23/"
>>>> DATADir24 = "/mnt/rasher/60sensruns/run24/"
>>>> DATADir25 = "/mnt/rasher/60sensruns/run25/"
>>>> DATADir26 = "/mnt/rasher/60sensruns/run26/"
>>>> DATADir27 = "/mnt/rasher/60sensruns/run27/"
>>>> DATADir28 = "/mnt/rasher/60sensruns/run28/"
>>>> DATADir29 = "/mnt/rasher/60sensruns/run29/"
>>>> DATADir30 = "/mnt/rasher/60sensruns/run30/"
>>>> DATADir31 = "/mnt/rasher/60sensruns/run31/"
>>>> DATADir32 = "/mnt/rasher/60sensruns/run32/"
>>>> DATADir33 = "/mnt/rasher/60sensruns/run33/"
>>>> DATADir34 = "/mnt/rasher/60sensruns/run34/"
>>>> DATADir35 = "/mnt/rasher/60sensruns/run35/"
>>>> DATADir36 = "/mnt/rasher/60sensruns/run36/"
>>>> DATADir37 = "/mnt/rasher/60sensruns/run37/"
>>>> DATADir38 = "/mnt/rasher/60sensruns/run38/"
>>>> DATADir39 = "/mnt/rasher/60sensruns/run39/"
>>>> DATADir40 = "/mnt/rasher/60sensruns/run40/"
>>>> DATADir41 = "/mnt/rasher/60sensruns/run41/"
>>>> DATADir42 = "/mnt/rasher/60sensruns/run42/"
>>>> DATADir43 = "/mnt/rasher/60sensruns/run43/"
>>>> DATADir44 = "/mnt/rasher/60sensruns/run44/"
>>>> DATADir45 = "/mnt/rasher/60sensruns/run45/"
>>>> DATADir46 = "/mnt/rasher/60sensruns/run46/"
>>>> DATADir47 = "/mnt/rasher/60sensruns/run47/"
>>>> DATADir48 = "/mnt/rasher/60sensruns/run48/"
>>>> DATADir49 = "/mnt/rasher/60sensruns/run49/"
>>>> DATADir50 = "/mnt/rasher/60sensruns/run50/"
>>>> DATADir51 = "/mnt/rasher/60sensruns/run51/"
>>>> DATADir52 = "/mnt/rasher/60sensruns/run52/"
>>>> DATADir53 = "/mnt/rasher/60sensruns/run53/"
>>>> DATADir54 = "/mnt/rasher/60sensruns/run54/"
>>>> DATADir55 = "/mnt/rasher/60sensruns/run55/"
>>>> DATADir56 = "/mnt/rasher/60sensruns/run56/"
>>>> DATADir57 = "/mnt/rasher/60sensruns/run57/"
>>>> DATADir58 = "/mnt/rasher/60sensruns/run58/"
>>>> DATADir59 = "/mnt/rasher/60sensruns/run59/"
>>>> DATADir60 = "/mnt/rasher/60sensruns/run60/"
>>>>
>>>> For each directory I will further have to do this:
>>>> FILES1 = systemfunc (" ls -1 " + DATADir1 + "subset_d03_2014-* ")
>>>> a1 = addfiles(FILES1,"r")
>>>> pm25_sim_a1    = a1[:]->PM2_5_DRY(:,0,145,79)
>>>>
>>>> (I will have to type this another 59 times for the other directories)
>>>>
>>>> Is there a way to do this more efficiently perhaps in a loop?
>>>>
>>>> Thanks
>>>>
>>>> Tabish
>>>>
>>>> Tabish U Ansari
>>>> PhD student, Lancaster Environment Center
>>>> Lancaster Univeristy
>>>> Bailrigg, Lancaster,
>>>> LA1 4YW, United Kingdom
>>>> _______________________________________________
>>>> ncl-talk mailing list
>>>> ncl-talk at ucar.edu
>>>> List instructions, subscriber options, unsubscribe:
>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>
>>>
>>>
>>> --
>>> Adam Phillips
>>> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
>>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>>>
>>> <http://www.cgd.ucar.edu/staff/asphilli>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>
>
> --
> Adam Phillips
> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>
> <http://www.cgd.ucar.edu/staff/asphilli>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20190221/8f0c0c95/attachment.html>


More information about the ncl-talk mailing list