diff --git a/Release/dreqPy/docs/CMIP6_MIP_tables.xlsx b/Release/dreqPy/docs/CMIP6_MIP_tables.xlsx index c7598ce..b5eb5c8 100644 Binary files a/Release/dreqPy/docs/CMIP6_MIP_tables.xlsx and b/Release/dreqPy/docs/CMIP6_MIP_tables.xlsx differ diff --git a/Release/dreqPy/docs/dreq.xml b/Release/dreqPy/docs/dreq.xml index b873a87..0e2592f 100644 --- a/Release/dreqPy/docs/dreq.xml +++ b/Release/dreqPy/docs/dreq.xml @@ -1,11 +1,11 @@ -Draft CMIP6 Data Request [01.00.27] +Draft CMIP6 Data Request [01.00.29] The CMIP6 Data Request will specify the variables requested for the CMIP6 archive, and the detail the experiments and time slices for which they are required. Martin Juckes -2018-07-25 +2018-12-11 CF Standard Name table; CMIP6 Controlled Vocabularies; ESDOC CMIP6 Experiment Documentation -01.00.27 +01.00.29
@@ -15,10 +15,8 @@ - - @@ -31,14 +29,12 @@ - - @@ -67,16 +63,15 @@ + - - @@ -86,7 +81,6 @@ - @@ -111,13 +105,11 @@ - - @@ -150,7 +142,6 @@ - @@ -166,7 +157,6 @@ - @@ -201,7 +191,6 @@ - @@ -225,7 +214,6 @@ - @@ -241,26 +229,19 @@ - - - - - - - @@ -288,7 +269,6 @@ - @@ -318,17 +298,14 @@ - - - @@ -494,7 +471,6 @@ - @@ -518,7 +494,6 @@ - @@ -539,12 +514,10 @@ - - @@ -701,11 +674,14 @@ + + + + + - - @@ -895,176 +871,164 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2128,7 +2092,6 @@ - @@ -2145,7 +2108,6 @@ - @@ -2404,7 +2366,6 @@ - @@ -2438,7 +2399,6 @@ - @@ -2693,15 +2653,6 @@ - - - - - - - - - @@ -2900,7 +2851,6 @@ - @@ -3167,92 +3117,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -3339,7 +3203,6 @@ - @@ -3367,7 +3230,6 @@ - @@ -3391,11 +3253,9 @@ - - @@ -3423,7 +3283,6 @@ - @@ -3582,78 +3441,73 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - + + + + @@ -3704,75 +3558,75 @@ - - - - - - - - - - - + + + + + + + + + + + - + - - + + - - + + - + - + - + - - + + - - - - - - + + + + + + - - - + + + - - - - - + + + + + - - - - - - - + + + + + + + - - + + @@ -3784,70 +3638,70 @@ - + - - - - - - + + + + + + - - + + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - + + + @@ -3858,9 +3712,9 @@ - - - + + + @@ -3869,56 +3723,56 @@ - - - + + + - + - - - - + + + + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + @@ -3928,69 +3782,69 @@ - + - - - - + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - + + + + - - - + + + - - - + + + - - + + - + - + - - - - + + + + @@ -3998,7 +3852,7 @@ - + @@ -4008,47 +3862,47 @@ - + - + - - - - - - - - + + + + + + + + - + - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -4062,57 +3916,57 @@ - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + @@ -4125,43 +3979,43 @@ - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - + + @@ -4169,178 +4023,174 @@ - - + - - - - - - - - - - + + + + + + + + + + - - - + + - - - - - - - - - - + + + + + + + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - + + + + + - - - - - - + + + + + + - - + + - - - + + + - - - - - - - - - - + + + + + + + + + + - - + + - - - - - - - - - - + + + + + + + + + + - - + + - - - - - - + + + + + + - - + + - + - - - - - - - - - - - - + + + + + + + + + + + + - - + + - - - + + + - + - - - - - + + + + + @@ -4351,23 +4201,23 @@ - - - - + + + + - - - - - - - - - + + + + + + + + + @@ -4378,15 +4228,15 @@ - - - - - - - + + + + + + + - + @@ -4398,314 +4248,314 @@ - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + + - - - - - - - - - + + + + + + + + + - + - - + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + - + - + - - - - - - - + + + + + + + - + - - - - + + + + - + - - - - - - + + + + + + - - + + - - - - - - - + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - - - + + + + - + - + - - + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4713,44 +4563,44 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - - + + + + - - + + - - - + + + @@ -4765,51 +4615,51 @@ - + - - - - - - - - - - - + + + + + + + + + + + - - - - + + + + - + - - - - + + + + - - + + - - + + - + - - - + + + @@ -4818,7 +4668,7 @@ - + @@ -4829,10 +4679,10 @@ - - - - + + + + @@ -4841,8 +4691,8 @@ - - + + @@ -4852,29 +4702,29 @@ - - - - - - + + + + + + - - + + - - - + + + - - + + @@ -4883,24 +4733,24 @@ - - - - - - - + + + + + + + - - - + + + - - + + @@ -4911,55 +4761,55 @@ - - - - - - - - - - - + + + + + + + + + + + - + - - + + - - - - - - - + + + + + + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -4973,8 +4823,8 @@ - - + + @@ -4997,11 +4847,11 @@ - - + + - + @@ -5013,14 +4863,14 @@ - - + + - + @@ -5031,31 +4881,31 @@ - + - + - - - + + + - - - - - - - - + + + + + + + + - + - - - - - + + + + + @@ -5077,15 +4927,15 @@ - + - + - - + + @@ -5094,13 +4944,13 @@ - + - + - - - + + + @@ -5116,13 +4966,13 @@ - - - - - - - + + + + + + + @@ -5132,15 +4982,15 @@ - + - - + + @@ -5151,204 +5001,203 @@ - + - + - - - - + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - + + - - - - - - + + + + + + - - - - - - - - + + + + + + + + - - + + - + - - - - - + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - - - + + + @@ -5376,28 +5225,28 @@ - + - - - + + + - - + + - + - - + + - - + + - + @@ -5405,7 +5254,7 @@ - + @@ -5413,87 +5262,87 @@ - + - - - - - - - - - + + + + + + + + + - - - - + + + + - - - - - - - - + + + + + + + + - - - - + + + + - - + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + @@ -5513,18 +5362,18 @@ - + - - - - - - + + + + + + @@ -5535,13 +5384,13 @@ - - + + - + - + @@ -5551,72 +5400,72 @@ - - - - - + + + + + - - + + - - - - - - - - - - - + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - + + + + + + + + + + - + @@ -5624,18 +5473,18 @@ - - - - - - - - - - + + + + + + + + + + - + @@ -5644,81 +5493,81 @@ - - + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5732,31 +5581,31 @@ - - - - + + + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - + + @@ -5767,49 +5616,53 @@ - - - - - + + + + + + - + - - - + + + - + - - - + + - + + + - - - + + + + - + + - + @@ -5819,45 +5672,39 @@ - - + - - - - - + + + + + - - - + - + - - - + + - - - + - + @@ -5885,6 +5732,7 @@ + @@ -5893,7 +5741,6 @@ - @@ -5923,8 +5770,8 @@ - - + + @@ -5947,13 +5794,12 @@ - - + + - @@ -5985,6 +5831,7 @@ + @@ -6046,7 +5893,7 @@ - + @@ -6095,24 +5942,24 @@ - - - - + + + + - - + + - + - + - + - + @@ -6128,7 +5975,6 @@ - @@ -6166,13 +6012,13 @@ - - - - - - - + + + + + + + @@ -6212,10 +6058,9 @@ - - + @@ -6272,12 +6117,6 @@ - - - - - - @@ -6286,7 +6125,7 @@ - + @@ -6299,7 +6138,7 @@ - + @@ -6313,7 +6152,6 @@ - @@ -6389,6 +6227,20 @@ + + + + + + + + + + + + + + @@ -6402,7 +6254,6 @@ - @@ -6412,43 +6263,43 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6456,55 +6307,64 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -6514,265 +6374,283 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6785,115 +6663,132 @@ - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -6903,106 +6798,105 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -7013,286 +6907,298 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - @@ -7311,22 +7217,18 @@ - - - - @@ -7337,7 +7239,6 @@ - @@ -7364,7 +7265,6 @@ - @@ -7407,7 +7307,6 @@ - @@ -7431,15 +7330,11 @@ - - - - @@ -7471,14 +7366,10 @@ - - - - @@ -7496,31 +7387,23 @@ - - - - - - - - @@ -7530,9 +7413,7 @@ - - @@ -7540,7 +7421,6 @@ - @@ -7548,16 +7428,13 @@ - - - @@ -7569,25 +7446,17 @@ - - - - - - - - @@ -7604,7 +7473,6 @@ - @@ -7622,7 +7490,6 @@ - @@ -7638,7 +7505,6 @@ - @@ -7671,7 +7537,6 @@ - @@ -7685,7 +7550,6 @@ - @@ -7699,23 +7563,19 @@ - - + - - - @@ -7737,7 +7597,6 @@ - @@ -7745,18 +7604,15 @@ - - - @@ -7764,7 +7620,6 @@ - @@ -7776,6 +7631,7 @@ + @@ -7788,34 +7644,27 @@ - - - - - - - @@ -7841,7 +7690,6 @@ - @@ -7849,23 +7697,15 @@ - - - - - - - - @@ -7875,11 +7715,8 @@ - - - @@ -7888,19 +7725,15 @@ - - - - @@ -7909,29 +7742,28 @@ - - - + + - - - + + + - - - + + + - + - + - + - + @@ -7942,12 +7774,12 @@ - + - + @@ -7958,36 +7790,36 @@ - + - + - + - + - - - + + + - - + + - + - + @@ -8009,7 +7841,7 @@ - + @@ -8025,7 +7857,7 @@ - + @@ -8036,52 +7868,53 @@ - - - - + + + + - + - - - + + + - - + + - + - + - + - + + - + - + @@ -8092,7 +7925,7 @@ - + @@ -8111,28 +7944,28 @@ - + - + - + - + - - + + - + - + @@ -8140,7 +7973,7 @@ - + @@ -8151,23 +7984,23 @@ - - + + - + - + - - + + - - + + @@ -8186,23 +8019,23 @@ - - + + - + - + - + - + @@ -8212,30 +8045,30 @@ - + - + - - + + - + - + - + - + @@ -8243,11 +8076,11 @@ - + - + - + @@ -8257,30 +8090,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - - + + + - - + + @@ -8297,16 +8130,16 @@ - + - + - + - + @@ -8318,109 +8151,109 @@ - + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - - - + + + - - - - - + + + + + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + @@ -8429,7 +8262,7 @@ - + @@ -8437,10 +8270,8 @@ - - @@ -8452,6 +8283,7 @@ + @@ -8461,17 +8293,15 @@ - + - - @@ -8481,7 +8311,6 @@ - @@ -8490,14 +8319,11 @@ - - - @@ -8513,6 +8339,7 @@ + @@ -8541,6 +8368,7 @@ + @@ -8570,6 +8398,7 @@ + @@ -8589,8 +8418,6 @@ - - @@ -8607,13 +8434,12 @@ - + - @@ -8633,19 +8459,16 @@ - - - @@ -8655,7 +8478,6 @@ - @@ -8667,7 +8489,6 @@ - @@ -8689,7 +8510,6 @@ - @@ -8718,12 +8538,10 @@ - - @@ -8733,7 +8551,6 @@ - @@ -8747,14 +8564,13 @@ - + - @@ -8763,7 +8579,6 @@ - @@ -8781,10 +8596,10 @@ - + @@ -8793,14 +8608,12 @@ - - @@ -8811,6 +8624,7 @@ + @@ -8819,38 +8633,18 @@ - - - - - - - - - - - - - - - - - - - - @@ -8858,9 +8652,7 @@ - - @@ -8872,60 +8664,27 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -8948,6 +8707,7 @@ + @@ -9019,8 +8779,8 @@ - + @@ -9066,7 +8826,6 @@ - @@ -9091,7 +8850,6 @@ - @@ -9100,7 +8858,6 @@ - @@ -9138,22 +8895,19 @@ - - - - + @@ -9193,7 +8947,7 @@ - + @@ -9212,14 +8966,15 @@ + - + - + @@ -9308,6 +9063,7 @@ + @@ -9327,6 +9083,7 @@ + @@ -9374,6 +9131,7 @@ + @@ -9411,30 +9169,22 @@ - - - - - - - - @@ -9518,22 +9268,18 @@ - - - - - + @@ -9561,6 +9307,7 @@ + @@ -9590,19 +9337,15 @@ - - - - - + @@ -9617,7 +9360,6 @@ - @@ -9626,22 +9368,16 @@ - - - - - - @@ -9655,11 +9391,10 @@ - - + @@ -9672,7 +9407,6 @@ - @@ -9682,7 +9416,6 @@ - @@ -9692,12 +9425,10 @@ - - @@ -9718,17 +9449,15 @@ - - - + @@ -9761,10 +9490,8 @@ - - @@ -9783,6 +9510,7 @@ + @@ -9833,6 +9561,7 @@ + @@ -9856,6 +9585,7 @@ + @@ -9879,9 +9609,7 @@ - - @@ -9901,9 +9629,7 @@ - - @@ -10021,16 +9747,11 @@ - - - - - @@ -10049,18 +9770,15 @@ - - - @@ -10072,10 +9790,8 @@ - - @@ -10083,7 +9799,6 @@ - @@ -10095,7 +9810,6 @@ - @@ -10109,18 +9823,14 @@ - - - - @@ -10128,29 +9838,21 @@ - - - - - - - - @@ -10159,7 +9861,6 @@ - @@ -10192,7 +9893,6 @@ - @@ -10214,6 +9914,7 @@ + @@ -10233,11 +9934,11 @@ - + @@ -10269,7 +9970,6 @@ - @@ -10287,23 +9987,19 @@ - - - - @@ -10312,7 +10008,6 @@ - @@ -10322,21 +10017,18 @@ - - - + - @@ -10346,8 +10038,6 @@ - - @@ -10366,6 +10056,7 @@ + @@ -10384,12 +10075,10 @@ - - @@ -10403,15 +10092,13 @@ - - - + @@ -10426,7 +10113,6 @@ - @@ -10437,6 +10123,7 @@ + @@ -10470,8 +10157,8 @@ - + @@ -10509,7 +10196,6 @@ - @@ -10522,53 +10208,40 @@ - - - - - + - - - - - - - - - @@ -10576,67 +10249,39 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -10650,7 +10295,6 @@ - @@ -10684,34 +10328,26 @@ - - - - - - - - @@ -10725,38 +10361,30 @@ - - - - - - - - @@ -10781,9 +10409,7 @@ - - @@ -10793,18 +10419,15 @@ - - - @@ -10813,15 +10436,12 @@ - - - @@ -10833,31 +10453,26 @@ - + - - - - - @@ -10865,12 +10480,11 @@ - - + @@ -10888,7 +10502,6 @@ - @@ -10929,7 +10542,6 @@ - @@ -10949,10 +10561,8 @@ - - @@ -10963,7 +10573,6 @@ - @@ -10983,7 +10592,6 @@ - @@ -10992,7 +10600,6 @@ - @@ -11012,7 +10619,6 @@ - @@ -11026,7 +10632,6 @@ - @@ -11043,7 +10648,6 @@ - @@ -11056,18 +10660,15 @@ - + - - - @@ -11078,7 +10679,6 @@ - @@ -11106,7 +10706,6 @@ - @@ -11151,22 +10750,19 @@ - - - - + @@ -11190,23 +10786,19 @@ - - - - @@ -11216,9 +10808,7 @@ - - @@ -11250,8 +10840,6 @@ - - @@ -11264,7 +10852,6 @@ - @@ -11289,7 +10876,6 @@ - @@ -11309,12 +10895,9 @@ - - - @@ -11323,7 +10906,6 @@ - @@ -11340,7 +10922,6 @@ - @@ -11357,18 +10938,15 @@ - + - - - @@ -11379,6 +10957,7 @@ + @@ -11399,35 +10978,24 @@ - - - - - - - - - - - @@ -11452,6 +11020,7 @@ + @@ -11513,12 +11082,7 @@ - - - - - @@ -11537,8 +11101,6 @@ - - @@ -11589,7 +11151,6 @@ - @@ -11597,10 +11158,6 @@ - - - - @@ -11615,49 +11172,38 @@ - - - - - + - - - - - - + - - @@ -11686,7 +11232,6 @@ - @@ -11729,19 +11274,14 @@ - - - - - @@ -11754,14 +11294,12 @@ - - @@ -11788,9 +11326,8 @@ - - + @@ -11853,15 +11390,10 @@ - - - - - @@ -11872,13 +11404,11 @@ - - @@ -11893,25 +11423,20 @@ - - - - + - - @@ -11919,21 +11444,16 @@ - - - + - - - @@ -11942,8 +11462,8 @@ - + @@ -11956,7 +11476,6 @@ - @@ -11964,14 +11483,13 @@ - + - @@ -11983,7 +11501,6 @@ - @@ -12006,21 +11523,18 @@ - - - @@ -12085,7 +11599,6 @@ - @@ -12095,17 +11608,15 @@ - - - + @@ -12237,18 +11748,16 @@ - + - - @@ -12260,18 +11769,15 @@ - - - @@ -12286,16 +11792,14 @@ - - - - + + @@ -12329,7 +11833,7 @@ - + @@ -12339,7 +11843,6 @@ - @@ -12367,12 +11870,10 @@ - - @@ -12387,12 +11888,10 @@ - - @@ -12418,7 +11917,6 @@ - @@ -12469,7 +11967,6 @@ - @@ -12490,23 +11987,18 @@ - - - - - @@ -12520,15 +12012,14 @@ - + - @@ -12570,7 +12061,6 @@ - @@ -12585,8 +12075,8 @@ - + @@ -12615,12 +12105,10 @@ - - @@ -12646,7 +12134,6 @@ - @@ -12654,21 +12141,17 @@ - - - - @@ -12681,7 +12164,6 @@ - @@ -12691,10 +12173,8 @@ - - @@ -12712,7 +12192,6 @@ - @@ -12722,7 +12201,6 @@ - @@ -12757,9 +12235,7 @@ - - @@ -12781,7 +12257,6 @@ - @@ -12823,14 +12298,12 @@ - - @@ -12871,7 +12344,6 @@ - @@ -12881,7 +12353,6 @@ - @@ -12904,7 +12375,6 @@ - @@ -12919,10 +12389,7 @@ - - - @@ -12938,22 +12405,19 @@ - - - - + @@ -12997,8 +12461,6 @@ - - @@ -13028,7 +12490,6 @@ - @@ -13050,14 +12511,13 @@ - - + @@ -13066,9 +12526,7 @@ - - @@ -13086,7 +12544,6 @@ - @@ -13098,9 +12555,7 @@ - - @@ -13111,7 +12566,6 @@ - @@ -13145,7 +12599,6 @@ - @@ -13158,7 +12611,6 @@ - @@ -13168,7 +12620,6 @@ - @@ -13187,11 +12638,11 @@ - + @@ -13232,13 +12683,10 @@ - - - @@ -13252,7 +12700,6 @@ - @@ -13281,7 +12728,6 @@ - @@ -13297,16 +12743,15 @@ - + - - + @@ -13802,7 +13247,6 @@ - @@ -13821,13 +13265,13 @@ - + @@ -13837,7 +13281,6 @@ - @@ -13876,7 +13319,6 @@ - @@ -13889,7 +13331,6 @@ - @@ -13898,8 +13339,6 @@ - - @@ -13913,45 +13352,26 @@ - - - - - - - - - - - - - - - - - - - @@ -13986,7 +13406,6 @@ - @@ -14019,7 +13438,6 @@ - @@ -14032,7 +13450,6 @@ - @@ -14045,17 +13462,13 @@ - - - - @@ -14077,7 +13490,6 @@ - @@ -14086,7 +13498,6 @@ - @@ -14102,7 +13513,6 @@ - @@ -14120,10 +13530,8 @@ - - @@ -14165,9 +13573,9 @@ - + @@ -14178,21 +13586,20 @@ - + - - + @@ -14200,15 +13607,15 @@ + - + - @@ -14252,7 +13659,7 @@ - + @@ -14324,11 +13731,11 @@ - + - + @@ -14585,7 +13992,7 @@ - + @@ -14605,7 +14012,7 @@ - + @@ -14626,9 +14033,9 @@ - - - + + + @@ -15290,22 +14697,22 @@ - + - + - + - + - + - + @@ -15620,7 +15027,7 @@ - + @@ -15677,6 +15084,10 @@ + + + + @@ -15989,6 +15400,7 @@ + @@ -16050,7 +15462,7 @@ - + @@ -16143,27 +15555,29 @@ - - - - + + + + + + - - - - + + + + - + - - + + @@ -16580,7 +15994,7 @@ - + @@ -16652,12 +16066,18 @@ + + + + + + @@ -16670,6 +16090,13 @@ + + + + + + + @@ -16694,12 +16121,15 @@ + + + @@ -16761,7 +16191,7 @@ - + @@ -16825,10 +16255,10 @@ - - - - + + + + @@ -16851,8 +16281,8 @@ - - + + @@ -17365,7 +16795,7 @@ - + @@ -17460,9 +16890,9 @@ - - - + + + @@ -17533,42 +16963,42 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - - + + + + + @@ -17586,29 +17016,29 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + @@ -17616,17 +17046,17 @@ - - - - - - - - - - - + + + + + + + + + + + @@ -18164,7 +17594,7 @@ - + @@ -18246,9 +17676,9 @@ - + - + @@ -18280,6 +17710,8 @@ + + @@ -18433,7 +17865,7 @@ - + @@ -18493,59 +17925,59 @@ - - - - - - + + + + + + - - + + - + - + - + - + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -18554,45 +17986,45 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + @@ -18607,19 +18039,19 @@ - + - - - - + + + + - + - - + + @@ -18632,55 +18064,55 @@ - + - - - - + + + + - - - - - - - - - - + + + + + + + + + + - - - + + + - + - - - + + + - - + + - + - + - - - - + + + + @@ -18688,37 +18120,37 @@ - + - + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -18728,53 +18160,53 @@ - - - - - - - - - + + + + + + + + + - + - + - - - - + + + + - - - - - - - + + + + + + + - + - + - - + + - - - + + + @@ -18783,429 +18215,429 @@ - - - + + + - + - + - - - - - - - - - - - + + + + + + + + + + + - - + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - - + + - - - - - - - - - - + + + + + + + + + + - - - + + + - - - - - - - - - + + + + + + + + + - + - - - + + + - - - - + + + + - - + + - - + + - + - - - - - - - - - - - + + + + + + + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - + - + - + - + - - + + - + - - + + - + - - - + + + - - - - - - - - + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - - + + + + + + + - + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - - - + + + - - - - + + + + - - + + - + - + - - + + - + - - - + + + - - - - - - + + + + + + - - + + - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + - - - + + + - - + + - - + + - + - - - - + + + + - - + + - - - - + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - - - + + + + - + - - - - - + + + + + - + @@ -19213,47 +18645,47 @@ - + - - + + - - + + - - - - - + + + + + - - - - - - - + + + + + + + - - - - - + + + + + - - - - + + + + - + - - - - + + + + @@ -19261,65 +18693,65 @@ - - - - - - - - + + + + + + + + - - + + - - - + + + - - - - - + + + + + - - + + - + - - + + - - - + + + - + - - - - - - - - - - - - + + + + + + + + + + + + @@ -19337,32 +18769,32 @@ - + - + - + - + - + - - + + - - - + + + @@ -19373,189 +18805,188 @@ - + - + - - + + - + - - + + - + - - - + + + - - - - + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + - + - - - - - - - + + + + + + + - + - + - + - + - - - - - - - + + + + + + + - - - + + + - - + + - - - - - - - + + + + + + + - - + + @@ -19572,53 +19003,53 @@ - + - + - + - - - - - + + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - - + + + + + @@ -19626,15 +19057,15 @@ - + - - - - - + + + + + @@ -19643,17 +19074,18 @@ - + + - + - - + + - - + + @@ -19662,61 +19094,61 @@ - - - - - + + + + + - - + + - - - + + + - - + + - - - - + + + + - + - - + + - - - + + + - - - - - + + + + + - - - - - - - + + + + + + + @@ -19725,34 +19157,34 @@ - - + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - - - + + + + + + - - + + @@ -19762,20 +19194,21 @@ - - - + + + + - + @@ -19787,16 +19220,14 @@ - + - - - + @@ -19833,7 +19264,6 @@ - @@ -19874,7 +19304,7 @@ - + @@ -19896,7 +19326,7 @@ - + @@ -19904,8 +19334,8 @@ - - + + @@ -19922,17 +19352,19 @@ - + - + - + + + @@ -19940,10 +19372,11 @@ - - + + + - + @@ -19955,7 +19388,7 @@ - + @@ -19964,19 +19397,23 @@ - + + + + + - + - + @@ -20009,18 +19446,19 @@ - - - + + + + - + @@ -20042,7 +19480,7 @@ - + @@ -20060,9 +19498,9 @@ - - - + + + @@ -20070,12 +19508,13 @@ - - - + + + + @@ -20085,7 +19524,7 @@ - + @@ -20096,7 +19535,7 @@ - + @@ -20108,7 +19547,6 @@ - @@ -20194,6 +19632,7 @@ + @@ -20201,10 +19640,12 @@ + + - - + + @@ -20212,7 +19653,7 @@ - + @@ -20227,7 +19668,7 @@ - + @@ -20239,16 +19680,21 @@ + - - + + + + + + diff --git a/Release/dreqPy/docs/dreq2Defn.xml b/Release/dreqPy/docs/dreq2Defn.xml index 5dd36de..0c19f34 100644 --- a/Release/dreqPy/docs/dreq2Defn.xml +++ b/Release/dreqPy/docs/dreq2Defn.xml @@ -109,8 +109,8 @@ xsi:schemaLocation="http://w3id.org/cmip6dr/ns vocabFrameworkSchema_v01beta.xsd" - - + + @@ -183,7 +183,7 @@ xsi:schemaLocation="http://w3id.org/cmip6dr/ns vocabFrameworkSchema_v01beta.xsd" - + diff --git a/Release/dreqPy/docs/dreq2Sample.xml b/Release/dreqPy/docs/dreq2Sample.xml index e5185b4..e2f255d 100644 --- a/Release/dreqPy/docs/dreq2Sample.xml +++ b/Release/dreqPy/docs/dreq2Sample.xml @@ -6,126 +6,126 @@ xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pav="http://purl.org/pav/2.3" xmlns="urn:w3id.org:cmip6.dreq.dreq:a"> -Draft CMIP6 Data Request [01.00.27] +Draft CMIP6 Data Request [01.00.29] The CMIP6 Data Request will specify the variables requested for the CMIP6 archive, and the detail the experiments and time slices for which they are required. Martin Juckes -2018-07-25 +2018-12-11 CF Standard Name table; CMIP6 Controlled Vocabularies; ESDOC CMIP6 Experiment Documentation -01.00.27 +01.00.29
- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
- + - + - + diff --git a/Release/dreqPy/docs/dreq2Schema.xsd b/Release/dreqPy/docs/dreq2Schema.xsd index 2318d1b..82a0466 100644 --- a/Release/dreqPy/docs/dreq2Schema.xsd +++ b/Release/dreqPy/docs/dreq2Schema.xsd @@ -488,7 +488,7 @@ xs:stringDescriptionegid; xs:stringIdentifier for experiment groupmip; xs:stringMIP defining experimentmcfg; - xs:stringModel categorytier; + xs:stringModel Source Typestier; aa:st__integerListMonIncTier of experimentnstart; xs:integerNumber of start datesstarty; xs:stringStart yearendy; diff --git a/Release/dreqPy/docs/dreqML.pdf b/Release/dreqPy/docs/dreqML.pdf index 05c4122..54d2608 100644 Binary files a/Release/dreqPy/docs/dreqML.pdf and b/Release/dreqPy/docs/dreqML.pdf differ diff --git a/Release/dreqPy/docs/dreqPy.pdf b/Release/dreqPy/docs/dreqPy.pdf index 0aca69c..310fba9 100644 Binary files a/Release/dreqPy/docs/dreqPy.pdf and b/Release/dreqPy/docs/dreqPy.pdf differ diff --git a/Release/dreqPy/docs/dreqSupp.xml b/Release/dreqPy/docs/dreqSupp.xml index 667a542..ed542cb 100644 --- a/Release/dreqPy/docs/dreqSupp.xml +++ b/Release/dreqPy/docs/dreqSupp.xml @@ -1,127 +1,127 @@ -CMIP6 Data Request Supplement [01.00.27] +CMIP6 Data Request Supplement [01.00.29] The CMIP6 Data Request will specify the variables requested for the CMIP6 archive, and the detail the experiments and time slices for which they are required. Martin Juckes -2018-07-26 +2018-12-11 CF Standard Name table; CMIP6 Controlled Vocabularies; ESDOC CMIP6 Experiment Documentation -01.00.27 +01.00.29
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -135,11 +135,10 @@ - + - @@ -159,9 +158,7 @@ - - @@ -177,10 +174,10 @@ + - @@ -193,7 +190,7 @@ - + @@ -207,7 +204,7 @@ - + @@ -215,12 +212,12 @@ + -
diff --git a/Release/dreqPy/dreq.py b/Release/dreqPy/dreq.py index 398a500..48c6432 100644 --- a/Release/dreqPy/dreq.py +++ b/Release/dreqPy/dreq.py @@ -3,7 +3,7 @@ 1. A collection of records 2. Index """ -import xml, string, collections +import xml, collections import xml.dom import xml.dom.minidom import re, shelve, os, sys @@ -33,13 +33,26 @@ """ +dreqMonitoring = ''' + + +''' + + jsh=''' +%s -''' +''' % dreqMonitoring def dref(i,x): return i._inx.uid[i.__dict__[x]] @@ -977,21 +990,22 @@ def __init__(self, xmlVersion=None, dreqXML=None, configdoc=None, useShelve=Fals ## dreqItemBase._htmlStyle['__general__'] = {'addRemarks':True} - self.pageTmpl = """%s + self.pageTmpl = """%%s +%%s + %s -
CMIP6 Data Request
- +
-%s +%%s
-""" +""" % dreqMonitoring def getHtmlItemStyle(self, sect): """Get the styling method associated with a given section.""" diff --git a/Release/dreqPy/extensions/collect.py b/Release/dreqPy/extensions/collect.py index c75c2bd..a042962 100644 --- a/Release/dreqPy/extensions/collect.py +++ b/Release/dreqPy/extensions/collect.py @@ -3,13 +3,23 @@ import collections +def _expt__CMORvar(self): + """Return set of CMORvar item identifiers for CMORvars requested for this experiment""" + cmv = set() + for u in self._get__requestItem(): + ri = self._inx.uid[u] + rl = self._inx.uid[ri.rlid] + for i in rl._get__CMORvar(): + cmv.add(i) + return cmv + def _expt__requestItem(self): """Return set of request item item identifiers for request items linked directly or indirectly to this experiment""" s = set() for u in [self.uid,self.mip,self.egid]: - if 'requestItem' in self._inx.uid[u].a: - for x in self._inx.uid[u].a['requestItem']: + if 'requestItem' in self._inx.iref_by_sect[u].a: + for x in self._inx.iref_by_sect[u].a['requestItem']: s.add(x) return s @@ -245,6 +255,7 @@ def add(dq): """Add extensions to data request section classes.""" dq.coll['mip'].items[0].__class__._get__expt = _mip__expt dq.coll['experiment'].items[0].__class__._get__requestItem = _expt__requestItem + dq.coll['experiment'].items[0].__class__._get__CMORvar = _expt__CMORvar dq.coll['requestItem'].items[0].__class__._get__expt = _requestItem__expt dq.coll['requestLink'].items[0].__class__._get__expt = _requestLink__expt dq.coll['requestLink'].items[0].__class__._get__CMORvar = _requestLink__CMORvar diff --git a/Release/dreqPy/extensions/versions.py b/Release/dreqPy/extensions/versions.py index 9ef813d..80f443c 100644 --- a/Release/dreqPy/extensions/versions.py +++ b/Release/dreqPy/extensions/versions.py @@ -13,13 +13,13 @@ def compare(self, oth,count=True,lst='short',sect='CMORvar' ): if k not in this._uidDict: n0 += 1 if lst != None: - print 'Only in %s: %s [%s]' % (oth.version, k, that._uidDict[k].label ) + print ( 'Only in %s: %s [%s]' % (oth.version, k, that._uidDict[k].label ) ) for k in sorted( this._uidDict.keys() ): if k not in that._uidDict: n1 += 1 if lst != None: - print 'Only in %s: %s [%s]' % (self.version, k, this._uidDict[k].label ) + print ( 'Only in %s: %s [%s]' % (self.version, k, this._uidDict[k].label ) ) elif this._uidDict[k].__dict__ != that._uidDict[k].__dict__: n2 += 1 @@ -29,16 +29,16 @@ def compare(self, oth,count=True,lst='short',sect='CMORvar' ): for i in s1 + s2 + s3: cc[i] += 1 if lst == 'long': - print 'Changed in %s -- %s: %s [%s], {%s|%s|%s}' % (self.version,oth.version, k, this._uidDict[k].label, str(s1),str(s2),str(s3) ) + print ('Changed in %s -- %s: %s [%s], {%s|%s|%s}' % (self.version,oth.version, k, this._uidDict[k].label, str(s1),str(s2),str(s3) ) ) if n0 == 0 and n1 == 0: - print '%s (%s --> %s):: No additons or removals' % (sect,oth.version,self.version) + print ('%s (%s --> %s):: No additons or removals' % (sect,oth.version,self.version) ) else: - print '%s (%s --> %s):: Added %s, Removed %s' % (sect,oth.version,self.version,n1,n0) - print '%s:: Number changed in %s -- %s: %s' % (sect, self.version,oth.version,n2) + print ('%s (%s --> %s):: Added %s, Removed %s' % (sect,oth.version,self.version,n1,n0) ) + print ('%s:: Number changed in %s -- %s: %s' % (sect, self.version,oth.version,n2) ) if n2 > 0: msg = '; '.join( ['%s: %s' % (k,cc[k]) for k in sorted(cc.keys())] ) - print '%s:: Attribute changes: %s' % (sect,msg) + print ('%s:: Attribute changes: %s' % (sect,msg) ) def fetch(self,version=None, vdir=None): files = ['dreq.xml', 'dreq2Defn.xml', 'dreqSupp.xml', 'dreqSuppDefn.xml'] @@ -53,7 +53,7 @@ def fetch(self,version=None, vdir=None): u = utmpl % (version,f) page = requests.get(u) md5 = hashlib.md5(page.text.encode('utf-8')).hexdigest() - print version, f, md5 + print ( (version, f, md5 ) ) oo = open( '%s/%s/%s' % (vdir,version,f), 'w' ) oo.write( page.text.encode('utf-8') ) oo.close() diff --git a/Release/dreqPy/makeTables.py b/Release/dreqPy/makeTables.py index 7d82891..c379c0f 100644 --- a/Release/dreqPy/makeTables.py +++ b/Release/dreqPy/makeTables.py @@ -215,6 +215,12 @@ def stidLink01(self,a,targ,frm='',ann=''): else: return '
  • %s [%s]: %s [%s]
  • ' % ( targ._h.title, a, targ.__href__(label=targ.title), targ.label ) + def baseLink01(self,targ,frm='',ann=''): + if targ._h.label == 'remarks': + return '
  • Broken link [%s]
  • ' % ( targ.__href__() ) + else: + return '
  • %s: %s
  • ' % ( targ.label, targ.__href__(odir='../u/',label=targ.title) ) + def rqlLink02(self,targ,frm='',ann=''): t2 = targ._inx.uid[targ.refid] if t2._h.label == 'remarks': @@ -230,7 +236,11 @@ def rqiLink02(self,targ,frm='',ann=''): if t2._h.label == 'remarks': return '
  • %s: %s
  • ' % ( targ.__href__(odir='../u/', label=targ.title), "Link to request link broken" ) else: - t3 = t2._inx.uid[t2.refid] + try: + t3 = t2._inx.uid[t2.refid] + except: + print t2.uid, t2.__dict__ + raise if t3._h.label == 'remarks': return '
  • %s [%s]: %s
  • ' % ( targ.__href__(odir='../u/', label=targ.title), t2.__href__(odir='../u/', label=t2.title),"Link to request group broken" ) else: @@ -258,7 +268,7 @@ def cmvLink(self,targ,frm='',ann=''): return '
  • %s {%s}: %s [%s: %s] (%s)
  • ' % ( targ.__href__(odir='../u/', label=targ.label), targ.mipTable, targ.title, targ.frequency, t2.title, nrq ) def objLink(self,targ,frm='',ann=''): - return '
  • %s: %s
  • ' % ( targ.label, targ.__href__(odir='../u/', label=targ.title,title=targ.description) ) + return '
  • %s [%s]: %s
  • ' % ( targ.label, targ.mip, targ.__href__(odir='../u/', label=targ.title,title=targ.description) ) def unitLink(self,targ,frm='',ann=''): return '
  • %s [%s]: %s
  • ' % ( targ.text, targ.label, targ.__href__(odir='../u/', label=targ.title) ) @@ -287,14 +297,19 @@ def cmLink(self,targ,frm='',ann=''): return '
  • %s [%s]: %s {%s/%s}
  • ' % ( targ.cell_methods,targ.label, targ.__href__(odir='../u/', label=targ.title),sz0,sz1 ) def objLnkLink(self,targ,frm='',ann=''): + lab1 = targ.title + if lab1 == '': + lab1 = targ.label + if frm == 'objective': t2 = targ._inx.uid[targ.rid] t3 = targ._inx.uid[t2.refid] thislab = '%s (%s)' % (t2.mip,t3.label) - return '
  • %s: %s
  • ' % ( t2.title, t2.__href__(odir='../u/',label=thislab) ) + ##return '
  • %s: %s
  • ' % ( t2.title, t2.__href__(odir='../u/',label=thislab) ) + return '
  • %s: %s
  • ' % ( targ.__href__(odir='../u/',label=lab1), t2.__href__(odir='../u/',label=thislab, title=t2.title) ) else: t2 = targ._inx.uid[targ.oid] - return '
  • %s: %s
  • ' % ( t2.label, t2.__href__(odir='../u/',label=t2.title) ) + return '
  • %s: %s
  • ' % ( targ.__href__(odir='../u/',label=lab1), t2.__href__(odir='../u/',label=t2.label, title=t2.title) ) def labTtl(self,targ,frm='',ann=''): return '
  • %s: %s
  • ' % ( targ.__href__(odir='../u/', label=targ.label), targ.title ) @@ -376,6 +391,7 @@ def run(): dq.itemStyles['structure'] = styls.strLink dq.itemStyles['cellMethods'] = styls.cmLink dq.itemStyles['remarks'] = styls.remarkLink + dq.itemStyles['exptgroup'] = styls.baseLink01 dq.itemStyles['objectiveLink'] = styls.objLnkLink dq.itemStyles['requestVarGroup'] = styls.vgrpLink dq.itemStyles['miptable'] = styls.miptableLink diff --git a/Release/dreqPy/misc_utils.py b/Release/dreqPy/misc_utils.py index 9bc0040..30215c3 100644 --- a/Release/dreqPy/misc_utils.py +++ b/Release/dreqPy/misc_utils.py @@ -1,4 +1,4 @@ -import collections, string , os, sys +import collections, os, sys import logging import time import difflib @@ -125,9 +125,9 @@ def rankCMORvars(dq): if i.title != ic.title: print ( '%s: %s, %s' % (kk, ic.title, i.title) ) kd += 1 - if string.find( ic.modeling_realm, ' ' ) != -1: - for x in string.split( ic.modeling_realm ): - r.add( string.strip( x ) ) + if ic.modeling_realm.find( ' ' ) != -1: + for x in ic.modeling_realm.split( ): + r.add( x.strip( ) ) elif ic.modeling_realm not in ['__unset__','']: r.add( ic.modeling_realm ) if 'requestVar' in dq.inx.iref_by_sect[ic.uid].a: @@ -160,9 +160,9 @@ def rankVars(dq): if 'CMORvar' in dq.inx.iref_by_sect[i.uid].a: for cmv in dq.inx.iref_by_sect[i.uid].a['CMORvar']: ic = dq.inx.uid[cmv] - if string.find( ic.modeling_realm, ' ' ) != -1: - for x in string.split( ic.modeling_realm ): - r.add( string.strip( x ) ) + if ic.modeling_realm.find( ' ' ) != -1: + for x in ic.modeling_realm.split( ): + r.add( x.strip( ) ) elif ic.modeling_realm not in ['__unset__','']: r.add( ic.modeling_realm ) if 'requestVar' in dq.inx.iref_by_sect[cmv].a: @@ -363,7 +363,7 @@ def getExptByThisMip(self,mip,rqi,tiermax=1): self.expts[ex.mip].add(id) self.exrqi[id].add( i.uid ) ks = sorted( list( self.expts.keys() ) ) - xx = string.join( ['%s: %s' % (k,len(self.expts[k])) for k in ks], ', ' ) + xx = ', '.join( ['%s: %s' % (k,len(self.expts[k])) for k in ks] ) print ( '%s:: %s' % (mip,xx) ) class c1(object): diff --git a/Release/dreqPy/overviewTabs.py b/Release/dreqPy/overviewTabs.py index 84abe01..0bf3fce 100644 --- a/Release/dreqPy/overviewTabs.py +++ b/Release/dreqPy/overviewTabs.py @@ -1,15 +1,19 @@ - -import collections, string, os +import collections, os import xlsxwriter try: import dreq + import scope_utils + import table_utils except: import dreqPy.dreq as dreq + import dreqPy.scope_utils as scope_utils + import dreqPy.table_utils as table_utils jsh=''' -''' +%s +''' % dreq.dreqMonitoring def vfmt( x ): if x < 1.e9: @@ -44,7 +48,7 @@ def __init__(self,sc,mt_tables,tiermax=1,pmax=1,only=False,vols=None,fnm='new',m self.fnm = fnm assert vols == None or type(vols) == type( () ), 'vols argument must be none or tuple of length 2: %s' % type(vols) self.dq = sc.dq - self.mips = ['CMIP','AerChemMIP', 'C4MIP', 'CFMIP', 'DAMIP', 'DCPP', 'FAFMIP', 'GeoMIP', 'GMMIP', 'HighResMIP', 'ISMIP6', 'LS3MIP', 'LUMIP', 'OMIP', 'PAMIP', 'PMIP', 'RFMIP', 'ScenarioMIP', 'VolMIP', 'CORDEX', 'DynVar', 'SIMIP', 'VIACSAB'] + self.mips = ['CMIP'] + scope_utils.mips self.mipsp = self.mips[:-4] self.sc = sc self.pmax=pmax @@ -138,10 +142,10 @@ def makeMMhtml(self,m,m2): ##print ('INFO.mmhtml.00001: %s, %s' % (kc,len( self.cc[kc].a.keys() ) ) ) if len( self.cc[kc].a.keys() ) == 0: return - if not os.path.isdir( 'tabs03' ): + if not os.path.isdir( 'html/tabs03' ): print ( 'WARNING.makeMMhtml: creating directory for html files: tabs03' ) - os.mkdir( 'tabs03' ) - oo = open( 'tabs03/%s' % fss, 'w' ) + os.mkdir( 'html/tabs03' ) + oo = open( 'html/tabs03/%s' % fss, 'w' ) ttl = 'Data requested by %s from %s experiments (tier %s, priority %s)' % (m,m2,self.tiermax,self.pmax) jsh = '' pream = '

    %s

    \n' % ttl @@ -300,5 +304,5 @@ def writeMips(self,sss=False): import dreqPy.scope as scope import dreqPy.makeTables as makeTables sc = scope.dreqQuery() - r = r1( sc, makeTables.tables, tiermax=1, pmax=1 ) - r = r1( sc, makeTables.tables, tiermax=3, pmax=3 ) + r = r1( sc, table_utils.tables, tiermax=1, pmax=1 ) + r = r1( sc, table_utils.tables, tiermax=3, pmax=3 ) diff --git a/Release/dreqPy/packageConfig.py b/Release/dreqPy/packageConfig.py index eeb4fa9..93d0387 100644 --- a/Release/dreqPy/packageConfig.py +++ b/Release/dreqPy/packageConfig.py @@ -16,7 +16,7 @@ VERSION_DEFAULT_DIR = os.path.join(HOME, '.dreqPy') VERSION_DIR = os.environ.get('DRQ_VERSION_DIR', VERSION_DEFAULT_DIR) -__version__ = "01.00.27" +__version__ = "01.00.29" __versionComment__ = "Version %s" % __version__ __title__ = "dreqPy" __description__ = "CMIP6 Data Request Python API" diff --git a/Release/dreqPy/scope.py b/Release/dreqPy/scope.py index af61ff3..59d096a 100644 --- a/Release/dreqPy/scope.py +++ b/Release/dreqPy/scope.py @@ -17,15 +17,17 @@ def __init__(self): if imm == 1: from utilities import cmvFilter, gridOptionSort import misc_utils + import scope_utils import fgrid import volsum else: + import dreqPy.scope_utils as scope_utils import dreqPy.volsum as volsum import dreqPy.fgrid as fgrid from dreqPy.utilities import cmvFilter, gridOptionSort import dreqPy.misc_utils as misc_utils -import collections, string, operator +import collections, operator import sys, os def intdict(): @@ -247,8 +249,9 @@ def __init__(self,dq=None,tierMax=1): self.exptFilterBlack = None self.uniqueRequest = False - self.mips = set( [x.label for x in self.dq.coll['mip'].items ] ) - self.mips = ['CMIP','AerChemMIP', 'C4MIP', 'CFMIP', 'DAMIP', 'DCPP', 'FAFMIP', 'GeoMIP', 'GMMIP', 'HighResMIP', 'ISMIP6', 'LS3MIP', 'LUMIP', 'OMIP', 'PAMIP', 'PMIP', 'RFMIP', 'ScenarioMIP', 'VolMIP', 'CORDEX', 'DynVar', 'SIMIP', 'VIACSAB'] + ##self.mips = set( [x.label for x in self.dq.coll['mip'].items ] ) + ##self.mips = ['CMIP','AerChemMIP', 'C4MIP', 'CFMIP', 'DAMIP', 'DCPP', 'FAFMIP', 'GeoMIP', 'GMMIP', 'HighResMIP', 'ISMIP6', 'LS3MIP', 'LUMIP', 'OMIP', 'PAMIP', 'PMIP', 'RFMIP', 'ScenarioMIP', 'VolMIP', 'CORDEX', 'DynVar', 'SIMIP', 'VIACSAB'] + self.mips = ['CMIP'] + scope_utils.mips self.mipsp = self.mips[:-4] self.cmvGridId, i4 = fgrid.fgrid( self.dq ) assert len(i4) == 0 @@ -1007,8 +1010,8 @@ def rqiByMip( self, mip): l2.append( self.dq.inx.uid[u] ) l20 = self.rqiByMip0( mip ) - for i in l20: - assert i in l2 + ##for i in l20: + ##assert i in l2 return l2 @@ -1061,7 +1064,6 @@ def checkDir(self,odir,msg): print ('Created directory %s for: %s' % (odir,msg) ) def xlsByMipExpt(self,m,ex,pmax,odir='xls',xls=True,txt=False,txtOpts=None): - import scope_utils mxls = scope_utils.xlsTabs(self,tiermax=self.tierMax,pmax=pmax,xls=xls, txt=txt, txtOpts=txtOpts,odir=odir) mlab = misc_utils.setMlab( m ) mxls.run( m, mlab=mlab ) @@ -1598,7 +1600,7 @@ class dreqUI(object): ------------------------- -v : print version and exit; --unitTest : run some simple tests; - -m : MIP of list of MIPs (comma separated; for objective selection see note [1] below); + -m : MIP of list of MIPs (comma separated; use '_all_' for all; for objective selection see note [1] below); -l : List for options: o: objectives e: experiments @@ -1621,10 +1623,12 @@ class dreqUI(object): --omitCmip : omit the CMIP core data request (included by default); --allgrd : When a variable is requested on multiple grids, archive all grids requested (default: only the finest resolution); --unique : List only variables which are requested uniquely by this MIP, for at least one experiment; - --esm : include ESM experiments (default is to omit esm-hist etc from volume estimates); - --txt : Create text file with requested variables; + --esm : include ESM experiments (default is to omit esm-hist etc from volume estimates; over-ridden by --mcat); + --txt : Create text (tab seperated variables) file with requested variables; the files are placed in the same directory as xls files; --mcfg : Model configuration: 7 integers, comma separated, 'nho','nlo','nha','nla','nlas','nls','nh1' default: 259200,60,64800,40,20,5,100 + --mcat [none]: Source types inlcuded in model, as comma separated list: only experiments with all required source types are included in volume estimates. Set to 'none' to turn off filtering; + --mcat-strict : if present, the experiments are filtered to those with the specified configuration, not allowing components to be switched off; --txtOpts : options for content of text file: (v|c)[(+|-)att1[,att2[...]]] --xlsDir : Directory in which to place variable listing [xls]; --xmlVersion : version number of XML document [only with extension enabled -- not stable]; @@ -1641,7 +1645,7 @@ class dreqUI(object): drq -m HighResMIP:Ocean.DiurnalCycle """ def __init__(self,args): - self.adict = {} + self.adict = {'mcatStrict':False} self.knownargs = {'-m':('m',True), '-p':('p',True), '-e':('e',True), '-t':('t',True), \ '-h':('h',False), '--printLinesMax':('plm',True), \ '-l':('l',True), @@ -1661,6 +1665,8 @@ def __init__(self,args): '--allgrd':('allgrd',False), \ '--unique':('unique',False), \ '--mcfg':('mcfg',True), \ + '--mcat':('mcat',True), \ + '--mcatStrict':('mcatStrict',False), \ '--txtOpts':('txtOpts',True), \ '--xmlVersion':('xmlVersion',True), \ '--xlsDir':('xlsdir',True), '--xls':('xls',False) \ @@ -1681,6 +1687,9 @@ def __init__(self,args): assert self.checkArgs( notKnownArgs ), 'FATAL ERROR 001: Arguments not recognised: %s' % (str(notKnownArgs) ) + if self.adict.get('mcat','none') != 'none': + self.adict['esm'] = True + if 'm' in self.adict: if self.adict['m'] == '_all_': pass @@ -1699,6 +1708,14 @@ def __init__(self,args): if 'omitcmip' not in self.adict and 'CMIP' not in self.adict['m']: self.adict['m'].add( 'CMIP' ) + if self.adict.get('mcat','none') != 'none': + stys = self.adict['mcat'].split(',') + stys_pp = stys[:] + if 'AOGCM' in stys: + stys_pp.append( 'AGCM' ) + if 'AGCM' in stys_pp: + stys_pp += ['LAND','RAD'] + self.adict['_mcat'] = (stys,stys_pp) if 'grdpol' in self.adict: assert self.adict['grdpol'] in ['native','1deg'], 'Grid policy argument --grdpol must be native or 1deg : %s' % self.adict['grdpol'] @@ -1784,13 +1801,14 @@ def run(self, dq=None): return if 'mcfg' in self.adict: - ll = string.split( self.adict['mcfg'], ',' ) + ll = self.adict['mcfg'].split( ',' ) assert len(ll) == 7, 'Length of model configuration argument must be 7 comma separated integers: %s' % self.adict['mcfg'] lli = [ int(x) for x in ll] self.sc = dreqQuery( dq=self.dq ) self.sc.intersection = self.intersection + if 'grdforce' in self.adict: self.sc.gridPolicyForce = self.adict['grdforce'] if 'grdpol' in self.adict: @@ -1817,6 +1835,7 @@ def run(self, dq=None): if doSf: self.adict['sf'] = True assert not ('legacy' in self.adict and 'sf' in self.adict), "Conflicting command line argument, 'legacy' and 'sf': use only one of these" + if makeXls or makeTxt or doSf: xlsOdir = self.adict.get( 'xlsdir', 'xls' ) self.sc.checkDir( xlsOdir, 'xls files' ) @@ -1893,10 +1912,54 @@ def run(self, dq=None): for e in ['esm-hist','esm-hist-ext','esm-piControl','piControl-spinup','esm-piControl-spinup']: ss.add( self.sc.exptByLabel[ e ] ) self.sc.exptFilterBlack = ss + + if self.sc.exptFilterBlack != None and self.sc.exptFilter != None: + ss = [x for x in self.sc.exptFilter if x not in self.sc.exptFilterBlack] + if len(ss) == 0: + print ( """WARNING: filter settings give no experiments: try using --esm flag: by default esm experiments are filtered out""" ) + return + + + makeTxt = self.adict.get( 'txt', False ) makeXls = self.adict.get( 'xls', False ) + if 'txtOpts' in self.adict: + if self.adict['txtOpts'][0] == 'v': + txtOpts = NT_txtopts( 'var' ) + else: + txtOpts = NT_txtopts( 'cmv' ) + else: + txtOpts=None + + exptFilters = collections.defaultdict( set ) + for i in self.dq.coll['experiment'].items: +## required + tt = tuple( i.mcfg.split( '|' )[0].strip().split(' ') ) +## allowed + uu = tuple( i.mcfg.split( '|' )[1].strip().split(' ') ) + exptFilters[(tt,uu)].add(i.uid) +## NB this is the default## if 'sf' in self.adict: - vs = volsum.vsum( self.sc, odsz, npy, odir=xlsOdir, tabByFreqRealm=tabByFreqRealm ) + if self.adict.get('mcat','none') != 'none': + thisFilter = set() + ##self.sc.exptFilter = set() + for tt,uu in exptFilters: + t1 = all( [x in self.adict['_mcat'][1] for x in tt] ) + if self.adict['mcatStrict']: + t1 = t1 and all( [x in (tt + uu) for x in self.adict['_mcat'][0] ] ) + if t1: + thisFilter = thisFilter.union( exptFilters[(tt,uu)] ) + if self.sc.exptFilter == None: + self.sc.exptFilter = thisFilter + else: + self.sc.exptFilter = thisFilter.intersection( self.sc.exptFilter ) + if len( self.sc.exptFilter ) == 0: + print ( 'WARNING: filter settings give no experiments' ) + return + + ##vs = volsum.vsum( self.sc, odsz, npy, odir=xlsOdir, tabByFreqRealm=tabByFreqRealm, txt=makeTxt,txtOpts=txtOpts, exptFilter=exptFilters['AOGCM'] ) + vs = volsum.vsum( self.sc, odsz, npy, odir=xlsOdir, tabByFreqRealm=tabByFreqRealm, txt=makeTxt,txtOpts=txtOpts ) + self.vs = vs vs.run( self.adict['m'], '%s/requestVol_%s_%s_%s' % (xlsOdir,mlab,tierMax,pmax), pmax=pmax, doxlsx=makeXls ) totalOnly = False if len( self.adict['m'] ) == 1 or totalOnly: @@ -1935,18 +1998,10 @@ def run(self, dq=None): adsCount = self.adict.get( 'count', False ) self.getVolByMip(pmax,eid,adsCount) - makeTxt = self.adict.get( 'txt', False ) + if makeXls or makeTxt: mips = self.adict['m'] - if 'txtOpts' in self.adict: - if self.adict['txtOpts'][0] == 'v': - txtOpts = NT_txtopts( 'var' ) - else: - txtOpts = NT_txtopts( 'cmv' ) - else: - txtOpts=None - self.sc.xlsByMipExpt(mips,eid,pmax,odir=xlsOdir,xls=makeXls,txt=makeTxt,txtOpts=txtOpts) def printListCc(self,cc): diff --git a/Release/dreqPy/scope_utils.py b/Release/dreqPy/scope_utils.py index 13c5aa4..61e538a 100644 --- a/Release/dreqPy/scope_utils.py +++ b/Release/dreqPy/scope_utils.py @@ -1,4 +1,4 @@ -import collections, string +import collections try: import table_utils except: @@ -6,6 +6,8 @@ ##NT_txtopts = collections.namedtuple( 'txtopts', ['mode'] ) +mips = ['AerChemMIP', 'CDRMIP', 'C4MIP', 'CFMIP', 'DAMIP', 'DCPP', 'FAFMIP', 'GeoMIP', 'GMMIP', 'HighResMIP', 'ISMIP6', 'LS3MIP', 'LUMIP', 'OMIP', 'PAMIP', 'PMIP', 'RFMIP', 'ScenarioMIP', 'VolMIP', 'CORDEX', 'DynVar', 'SIMIP', 'VIACSAB'] + class c1(object): def __init__(self): self.a = collections.defaultdict( int ) @@ -22,7 +24,7 @@ def __init__(self,sc,tiermax=1,pmax=1,xls=True, txt=False, txtOpts=None, odir='x self.doXls = xls self.doTxt = txt - self.mips = ['AerChemMIP', 'C4MIP', 'CFMIP', 'DAMIP', 'DCPP', 'FAFMIP', 'GeoMIP', 'GMMIP', 'HighResMIP', 'ISMIP6', 'LS3MIP', 'LUMIP', 'OMIP', 'PAMIP', 'PMIP', 'RFMIP', 'ScenarioMIP', 'VolMIP', 'CORDEX', 'DynVar', 'SIMIP', 'VIACSAB'] + self.mips = mips self.mipsp = ['DECK','CMIP6',] + self.mips[:-4] self.tabs = table_utils.tables( sc, xls=xls, txt=txt, txtOpts=txtOpts, odir=odir ) diff --git a/Release/dreqPy/simpleCheck.py b/Release/dreqPy/simpleCheck.py index d6e5879..b4a6240 100644 --- a/Release/dreqPy/simpleCheck.py +++ b/Release/dreqPy/simpleCheck.py @@ -9,7 +9,9 @@ ##from . import __init__ ##DOC_DIR = __init__.DOC_DIR -import string, os, sys, collections +import os, sys, collections + +usingPython3 = sys.version_info >= (3,0) try: import pkgutil @@ -144,14 +146,42 @@ def _clear_ch04(self): os.unlink( '.simpleCheck_check2_err.txt' ) os.unlink( '.simpleCheck_check2.txt' ) - def _ch04_checkCmd(self): - import os + def _getCmd(self): if self.entryPoint == 'drq': - cmd = 'drq' + self.cmd = 'drq' else: - cmd = 'python dreqCmdl.py' + if usingPython3: + self.cmd = 'python3 dreqCmdl.py' + else: + self.cmd = 'python dreqCmdl.py' + + def _ch05_checkMcfg(self): + self._getCmd() + thisCmd = '%s -m CMIP -e historical --mcfg 259200,60,64800,40,20,5,100' % self.cmd + os.popen( '%s 2> .simpleCheck_check5_err.txt 1>.simpleCheck_check5.txt' % thisCmd ).readlines() + + ii = open( '.simpleCheck_check5_err.txt' ).readlines() + if len(ii) > 0: + print ( 'WARNING[005]: failed to get volume est. with command line call' ) + self.ok = False + ##self._clear_ch04() + return + + ii = open( '.simpleCheck_check5.txt' ).readlines() + if len(ii) < 1: + print ( 'WARNING[006]: failed to get get volume est. with command line call' ) + self.ok = False + ##self._clear_ch04() + return + + self.ok = True + return + + def _ch04_checkCmd(self): + import os + self._getCmd() - os.popen( '%s -v 2> .simpleCheck_check2_err.txt 1>.simpleCheck_check2.txt' % cmd ).readlines() + os.popen( '%s -v 2> .simpleCheck_check2_err.txt 1>.simpleCheck_check2.txt' % self.cmd ).readlines() ii = open( '.simpleCheck_check2_err.txt' ).readlines() if len(ii) > 0: diff --git a/Release/dreqPy/table_utils.py b/Release/dreqPy/table_utils.py index 4747ae5..9169d55 100644 --- a/Release/dreqPy/table_utils.py +++ b/Release/dreqPy/table_utils.py @@ -146,7 +146,7 @@ def cmvtabrec(self,j,t,orec): raise if self.txt: - self.oo.write( '\t'.join( [t,] + orec) + '\n' ) + self.oo.write( '\t'.join( [t,] + [x.replace('"',"'") for x in orec]) + '\n' ) def varrec(self,j,orec): if self.xls: @@ -158,7 +158,7 @@ def varrec(self,j,orec): def var(self): if self.xls: - self.sht = self.newSheet( 'var' ) + self.sht = self.newSheet( 'var' ) j = 0 hrec = ['Long name', 'units', 'description', 'Variable Name', 'CF Standard Name' ] if self.xls: @@ -366,10 +366,19 @@ def __init__(self, sc, subset=None, mcfgNote=None, dest='tables/test', skipped=s thisp = str( min( pdict[cmv.uid] ) ) else: thisp = str(cmv.defaultPriority) - print 'ERROR.priority.0101: ',cmv.label,dest + print ('ERROR.priority.0101: %s, %s ' % (cmv.label,dest) ) else: thisp = str(cmv.defaultPriority) - orec = [thisp,var.title, var.units, var.description, cmv.description, var.label, var.sn, strc.cell_methods, cmv.positive, cmv.type, dims, cmv.label, cmv.modeling_realm, cmv.frequency, strc.cell_measures, cmv.prov,cmv.provNote,str(cmv.rowIndex),cmv.uid,cmv.vid,cmv.stid,strc.title, valid_min, valid_max, ok_min_mean_abs, ok_max_mean_abs] +# +# avoid duplication of information (added in 01.00.29) +## + if cmv.description != var.description: + cmmt = cmv.description + else: + cmmt = '' + orec = [thisp,var.title, var.units, var.description, cmmt, var.label, var.sn, strc.cell_methods, cmv.positive, cmv.type, dims, cmv.label, cmv.modeling_realm, cmv.frequency, strc.cell_measures, cmv.prov,cmv.provNote,str(cmv.rowIndex),cmv.uid,cmv.vid,cmv.stid,strc.title, valid_min, valid_max, ok_min_mean_abs, ok_max_mean_abs] + +## except: print ('FAILED TO CONSTRUCT RECORD: %s [%s], %s [%s]' % (cmv.uid,cmv.label,var.uid,var.label) ) raise @@ -417,7 +426,6 @@ def __init__(self, sc, subset=None, mcfgNote=None, dest='tables/test', skipped=s if type( priority ) != type(1): thisp = priority priority = thisp[1] - ##print 'ERROR in priority type[2]: ',priority, tslice[cmv.uid] orec[0] = '%s' % priority if tsmode[:4] in ['simp','bran']: @@ -437,7 +445,7 @@ def __init__(self, sc, subset=None, mcfgNote=None, dest='tables/test', skipped=s orec.append( grid ) if orec[0] in [0,'0',None]: - print 'ERROR.priority.006: ',orec,dest + print ('ERROR.priority.006: %s, %s ' % (orec,dest)) if withoo: oo.write( '\t'.join(orec ) + '\n' ) j+=1 diff --git a/Release/dreqPy/volsum.py b/Release/dreqPy/volsum.py index e3f13ef..53bec73 100644 --- a/Release/dreqPy/volsum.py +++ b/Release/dreqPy/volsum.py @@ -58,15 +58,21 @@ def close(self): self.wb.close() class vsum(object): - def __init__(self,sc,odsz,npy,exptFilter=None, odir='xls', tabByFreqRealm=False): + def __init__(self,sc,odsz,npy,exptFilter=None, odir='xls', tabByFreqRealm=False,txt=False,txtOpts=None): self.tabByFreqRealm = tabByFreqRealm + self.doTxt = txt + self.txtOpts = txtOpts idir = dreq.DOC_DIR if 'collect' not in sc.dq._extensions_: extCollect.add(sc.dq) self.sc = sc self.exptMipRql = collections.defaultdict( set ) + if exptFilter != None: + assert type( exptFilter ) == type( set() ), 'FATAl.vsum.001: exptFilter argument must be type set: %s' % type( exptFilter ) for i in self.sc.dq.coll['requestLink'].items: expts = requestLink__expt(i,rql=[i.uid,]) + if exptFilter != None: + expts = exptFilter.intersection( expts ) for e in expts: self.exptMipRql[ (i.mip,self.sc.dq.inx.uid[e].label) ].add( i.uid) self.odsz=odsz @@ -76,6 +82,7 @@ def __init__(self,sc,odsz,npy,exptFilter=None, odir='xls', tabByFreqRealm=False) self.accum = False self.odir = odir self.efnsfx = '' + self.accPdict = collections.defaultdict( set ) if sc.gridPolicyForce == 'native': self.efnsfx = '_fn' elif sc.gridPolicyForce == '1deg': @@ -109,20 +116,27 @@ def analAll(self,pmax,mips=None,html=True,makeTabs=True): if mips == None: theseMips = ['TOTAL',] + self.sc.mips else: - theseMips = mips + theseMips = list(mips) + +## move *TOTAL to end of list. + if '*TOTAL' in theseMips: + theseMips.remove( '*TOTAL' ) + theseMips.append( '*TOTAL' ) self.rres = {} self.rresu = {} for m in theseMips: olab = m + useAccPdict = False if m == '*TOTAL': - thism = theseMips.copy() + thism = theseMips[:] if type( thism ) == type( set() ): thism.remove( '*TOTAL' ) else: - thism.pop( '*TOTAL' ) + thism.remove( '*TOTAL' ) olab = misc_utils.setMlab( thism ) + useAccPdict = True elif type( theseMips ) == type( dict() ): thism = {m:theseMips[m]} else: @@ -134,7 +148,7 @@ def analAll(self,pmax,mips=None,html=True,makeTabs=True): self.run( thism, '%s/requestVol_%s_%s_%s' % (self.odir,olab,self.sc.tierMax,pmax), pmax=pmax,doxlsx=makeTabs ) - self.anal(olab=olab,doUnique='TOTAL' in theseMips, makeTabs=makeTabs) + self.anal(olab=olab,doUnique='TOTAL' in theseMips, makeTabs=makeTabs, useAccPdict=useAccPdict) ttl = sum( [x for k,x in self.res['vu'].items()] )*2.*1.e-12 volsmm[m] = self.res['vm'] volsmmt[m] = self.res['vmt'] @@ -189,7 +203,7 @@ def xlsDest(self,mode,olab,lab2): else: return '%s/%s_%s_%s_%s_%s%s' % (self.odir,self.xlsPrefixM,olab,lab2,self.sc.tierMax,self.pmax,self.efnsfx) - def anal(self,olab=None,doUnique=False,makeTabs=False,mode='full'): + def anal(self,olab=None,doUnique=False,makeTabs=False,mode='full',useAccPdict=False): vmt = collections.defaultdict( int ) vm = collections.defaultdict( int ) ve = collections.defaultdict( int ) @@ -249,12 +263,12 @@ def anal(self,olab=None,doUnique=False,makeTabs=False,mode='full'): ss = ss.union( lm[m] ) if makeTabs: ##table_utils.makeTab(self.sc.dq, subset=lm[m], dest=self.xlsDest('m',olab,m), collected=cc[m],exptUid=self.sc.exptByLabel.get(m,m) ) - table_utils.makeTab(self.sc, subset=lm[m], dest=self.xlsDest('m',olab,m), collected=cc[m] ) + table_utils.makeTab(self.sc, subset=lm[m], dest=self.xlsDest('m',olab,m), collected=cc[m], txt=self.doTxt, txtOpts=self.txtOpts ) if olab != None and makeTabs: - table_utils.makeTab(self.sc, subset=ss, dest=self.xlsDest('m',olab,'TOTAL'), collected=cct) + table_utils.makeTab(self.sc, subset=ss, dest=self.xlsDest('m',olab,'TOTAL'), collected=cct, txt=self.doTxt, txtOpts=self.txtOpts ) if olab != 'TOTAL' and doUnique: - table_utils.makeTab(self.sc, subset=s_lm, dest=self.xlsDest('m',olab,'Unique'), collected=s_cc) + table_utils.makeTab(self.sc, subset=s_lm, dest=self.xlsDest('m',olab,'Unique'), collected=s_cc, txt=self.doTxt, txtOpts=self.txtOpts ) cc = collections.defaultdict( dict ) ucc = collections.defaultdict( dict ) @@ -265,7 +279,12 @@ def anal(self,olab=None,doUnique=False,makeTabs=False,mode='full'): if olab != None and makeTabs: el = self.sc.dq.inx.uid[e].label - if olab in ['Total','TOTAL']: + if useAccPdict: + pdict = collections.defaultdict( set ) + for vid, p in self.accPdict[e]: + pdict[vid].add( p ) + + elif olab in ['Total','TOTAL']: pdict = None elif (olab,el) in self.exptMipRql: pdict = collections.defaultdict( set ) @@ -274,8 +293,9 @@ def anal(self,olab=None,doUnique=False,makeTabs=False,mode='full'): for rqvid in self.sc.dq.inx.iref_by_sect[rql.refid].a['requestVar']: rqv = self.sc.dq.inx.uid[rqvid] pdict[rqv.vid].add( rqv.priority ) + self.accPdict[e].add( (rqv.vid,rqv.priority) ) else: - print 'INFO.00201: olab,e not found:',olab,el + print ( 'INFO.00201: olab,e not found:',olab,el ) pdict = None tslice = {} @@ -284,7 +304,7 @@ def anal(self,olab=None,doUnique=False,makeTabs=False,mode='full'): tslice[v] = self.sc.cmvts[v][e] dest = self.xlsDest('e',olab,el) mode ='e' - table_utils.makeTab(self.sc, subset=lex[e], dest=self.xlsDest(mode,olab,el), collected=cc[e],byFreqRealm=self.tabByFreqRealm, tslice=tslice, exptUid=e, tabMode=mode, pdict=pdict) + table_utils.makeTab(self.sc, subset=lex[e], dest=self.xlsDest(mode,olab,el), collected=cc[e],byFreqRealm=self.tabByFreqRealm, tslice=tslice, exptUid=e, tabMode=mode, pdict=pdict, txt=self.doTxt, txtOpts=self.txtOpts ) if olab != 'TOTAL' and doUnique: for e,t in s_vet: @@ -292,7 +312,7 @@ def anal(self,olab=None,doUnique=False,makeTabs=False,mode='full'): for e in sorted( uve.keys() ): if olab != None and makeTabs: el = self.sc.dq.inx.uid[e].label - table_utils.makeTab(self.sc, subset=s_lex[e], dest=self.xlsDest('u',olab,el), collected=ucc[e]) + table_utils.makeTab(self.sc, subset=s_lex[e], dest=self.xlsDest('u',olab,el), collected=ucc[e], txt=self.doTxt, txtOpts=self.txtOpts) self.res = { 'vmt':vmt, 'vet':vet, 'vm':vm, 'uve':uve, 've':ve, 'lm':lm, 'lex':lex, 'vu':vu, 'cc':cc, 'cct':cct, 'vf':vf} diff --git a/Release/dreqPy/vrev.py b/Release/dreqPy/vrev.py index 4158458..d3469d4 100644 --- a/Release/dreqPy/vrev.py +++ b/Release/dreqPy/vrev.py @@ -23,9 +23,13 @@ def chk2(self,vn,byExpt=False, byBoth=False): cc = {} l = dq.inx.iref_by_sect[v.uid].a['CMORvar'] for i in l: - r = dq.inx.uid[i] - kk = '%s.%s' % (r.mipTable, r.label ) - cc[i] = (kk,self.chkCmv( i, byExpt=byExpt, byBoth=byBoth ) ) + try: + r = dq.inx.uid[i] + kk = '%s.%s' % (r.mipTable, r.label ) + cc[i] = (kk,self.chkCmv( i, byExpt=byExpt, byBoth=byBoth ) ) + except: + print ( 'failed at uid = %s' % i ) + raise return cc @@ -110,7 +114,7 @@ def chkCmv(self,cmvid, byExpt=False, byBoth=False,expt=None): if byExpt or byBoth: s3 = set() - if expt != None: + if expt != None and expt in self.sc.rqLinkByExpt: for i in s2: if i in self.sc.rqLinkByExpt[expt]: s3.add(i)