From 9ef0bcf8fafde15eb50a25d5c12f81b7d396c434 Mon Sep 17 00:00:00 2001 From: Nicolau Manubens Date: Fri, 14 Jul 2017 17:40:42 +0200 Subject: [PATCH 1/4] Small bugfix in nc2a, solving crash when all dims in file are singleton and expect_all_indices = TRUE. --- R/NcToArray.R | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/R/NcToArray.R b/R/NcToArray.R index 7bb13b6..4ad00ea 100644 --- a/R/NcToArray.R +++ b/R/NcToArray.R @@ -217,7 +217,12 @@ NcToArray <- function(file_to_read, dim_indices = NULL, vars_to_read = NULL, names(dim(var_result)) <- names(indices_to_take) # Drop extra dims if (!is.null(extra_dims) && expect_all_indices) { - dim(var_result) <- dim(var_result)[-which(names(indices_to_take) %in% names(extra_dims))] + reduced_dims <- dim(var_result)[-which(names(indices_to_take) %in% names(extra_dims))] + if (length(reduced_dims) > 0) { + dim(var_result) <- reduced_dims + } else { + dim(var_result) <- NULL + } } # Reorder if needed reorder_back <- NULL -- GitLab From 95051724ed5d33b8c2f4a6d7938b11129327d4b5 Mon Sep 17 00:00:00 2001 From: Nicolau Manubens Date: Fri, 14 Jul 2017 19:22:13 +0200 Subject: [PATCH 2/4] Improved a2nc to store data types properly. --- R/ArrayToNc.R | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/R/ArrayToNc.R b/R/ArrayToNc.R index f548a7b..a716232 100644 --- a/R/ArrayToNc.R +++ b/R/ArrayToNc.R @@ -209,7 +209,15 @@ ArrayToNc <- function(arrays, file_path) { var_info[['longname']] <- var_info[['longname']][1] } if (!('prec' %in% names(var_info))) { - var_info[['prec']] <- 'float' + if (typeof(arrays[[i]]) == 'logical') { + var_info[['prec']] <- 'short' + } else if (typeof(arrays[[i]]) == 'character') { + var_info[['prec']] <- 'char' + } else if (typeof(arrays[[i]]) == 'integer') { + var_info[['prec']] <- 'integer' + } else { + var_info[['prec']] <- 'double' + } } else { if (!is.character(var_info[['prec']])) { stop("The provided 'prec' for the ", j, "th variable in the ", i, "th array must be a character string.") -- GitLab From f13a7d84b8935aa4b674116713cebd6c13544b8e Mon Sep 17 00:00:00 2001 From: Nicolau Manubens Date: Mon, 18 Sep 2017 18:47:56 +0200 Subject: [PATCH 3/4] Fix in .MergeArrays. --- R/Utils.R | 54 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/R/Utils.R b/R/Utils.R index 82c2fb6..cc9b059 100644 --- a/R/Utils.R +++ b/R/Utils.R @@ -173,33 +173,41 @@ # 'a' 'b' 'c' 'e' 'd' 'f' 'g' # 2 4 3 7 5 9 11 .MergeArrays <- function(array1, array2, along) { - if (!(identical(names(dim(array1)), names(dim(array2))) && - identical(dim(array1)[-which(names(dim(array1)) == along)], - dim(array2)[-which(names(dim(array2)) == along)]))) { - new_dims <- .MergeArrayDims(dim(array1), dim(array2)) - dim(array1) <- new_dims[[1]] - dim(array2) <- new_dims[[2]] - for (j in 1:length(dim(array1))) { - if (names(dim(array1))[j] != along) { - if (dim(array1)[j] != dim(array2)[j]) { - if (which.max(c(dim(array1)[j], dim(array2)[j])) == 1) { - na_array_dims <- dim(array2) - na_array_dims[j] <- dim(array1)[j] - dim(array2)[j] - na_array <- array(dim = na_array_dims) - array2 <- abind(array2, na_array, along = j) - names(dim(array2)) <- names(na_array_dims) - } else { - na_array_dims <- dim(array1) - na_array_dims[j] <- dim(array2)[j] - dim(array1)[j] - na_array <- array(dim = na_array_dims) - array1 <- abind(array1, na_array, along = j) - names(dim(array1)) <- names(na_array_dims) + if (!(is.null(array1) || is.null(array2))) { + if (!(identical(names(dim(array1)), names(dim(array2))) && + identical(dim(array1)[-which(names(dim(array1)) == along)], + dim(array2)[-which(names(dim(array2)) == along)]))) { + new_dims <- .MergeArrayDims(dim(array1), dim(array2)) + dim(array1) <- new_dims[[1]] + dim(array2) <- new_dims[[2]] + for (j in 1:length(dim(array1))) { + if (names(dim(array1))[j] != along) { + if (dim(array1)[j] != dim(array2)[j]) { + if (which.max(c(dim(array1)[j], dim(array2)[j])) == 1) { + na_array_dims <- dim(array2) + na_array_dims[j] <- dim(array1)[j] - dim(array2)[j] + na_array <- array(dim = na_array_dims) + array2 <- abind(array2, na_array, along = j) + names(dim(array2)) <- names(na_array_dims) + } else { + na_array_dims <- dim(array1) + na_array_dims[j] <- dim(array2)[j] - dim(array1)[j] + na_array <- array(dim = na_array_dims) + array1 <- abind(array1, na_array, along = j) + names(dim(array1)) <- names(na_array_dims) + } } } } } + if (!(along %in% names(dim(array2)))) { + stop("The dimension specified in 'along' is not present in the ", + "provided arrays.") + } + array1 <- abind(array1, array2, along = which(names(dim(array1)) == along)) + names(dim(array1)) <- names(dim(array2)) + } else if (is.null(array1)) { + array1 <- array2 } - array1 <- abind(array1, array2, along = which(names(dim(array1)) == along)) - names(dim(array1)) <- names(dim(array2)) array1 } -- GitLab From 37489cbf7cd2694969122df336a82aee154a08d7 Mon Sep 17 00:00:00 2001 From: Nicolau Manubens Date: Mon, 18 Sep 2017 18:53:13 +0200 Subject: [PATCH 4/4] Bumped to v0.0.6. --- DESCRIPTION | 2 +- easyNCDF-manual.pdf | Bin 108580 -> 108586 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index bdc423f..ae13f8c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: easyNCDF Title: Tools to Easily Read/Write NetCDF Files into/from Multidimensional R Arrays -Version: 0.0.5 +Version: 0.0.6 Authors@R: c( person("BSC-CNS", role = c("aut", "cph")), person("Nicolau", "Manubens", , "nicolau.manubens@bsc.es", role = c("aut", "cre"))) diff --git a/easyNCDF-manual.pdf b/easyNCDF-manual.pdf index d8fe6af1c55bcb70a613985da60e2fd8fca1fe36..646d02d05780dd7561765a00788d52a1d3705863 100644 GIT binary patch delta 1805 zcmV+o2lDu&&<3i|29PEJIFmprD1Yr(-;d%p5PsjkB5wuhFm@a#&Z#~17H&^hvGfGA zeb}y46AW0FkX+()kN)+Y#1188H_J-fr=k^WCwPAN`)0;tu(NTn^YIElFI^8ns*mflAkaumJH8 z#t^xFV3aNTg!hz=<-aBQk)-RPzzyIVE5dOvP2<9t)u|ajh(g7CGoMMZ8vd3mZ8tfU z8g^*rH!7A^RPA&+T<2+08Gm;$A{?BnH*YN6ma$eVmB?M8(w&H{ax=WobFnWvHw=D< zH~^g-`NXLF74XMBnO6$CwoC&=Legv*BcQd@lwDt&!j|i?ETUXx`WaKqLoW3jQ*)`! z{?fG>A99gp;IMgGrH*9kTi%;pTACoRNMa?F9DV<}Pf#*dR zydFV}cn!R>1~i7>{b2J35f2e~LprTnJuQYmC0Uy5PV*F!Eu@Y4nkbvE03?9k8B|90 zc*7GF0eoH zCWpOlwa$vS!=V(p-lAm@Az2JJP;10;2(zZ{4Ik7ORSdUj(%#jRQDBT1Z#`q`y4=j< zDHUfq%@_(_>ar?|QWj^qTdQvc%|!gQ9}6uygVskLKhy-Bmw&Q5HqG+mK$-6gI3;HC zYpL?8#!JY%?nn(8!uX#^l^SBzMCwZRUDo@vsuVI#vr3csB38>>JSaD?3hz~AqT7)q?fk0ue`SxMJ{dPzOsHBAMyCZxi_!=TS=s;uc{g5#xxqR?Z9 zm`*blS!`BmR8~PHS8oqZ&{0(ZIh*jTI=gFwB1f&JA<@XsXSXJ~!;10QPp z1@+hFAUKnQ>Y_7N3Dhx8+zaxj$iEuo{xRfmiz5W?3{#O*mkmn13)(M3o1Yor=8Ub6 z+siTgT2R#`JPZ7Jxh$$50~n~?!1w@8OtAhn`LfTcTet41wQfYjYKbV3G5j`|_P0@sDWSkA_HHqC zKm{(bcav!itc5xDpsa&Vc*x!jruDD^7TLSbv=KJ3tim;amP}7CqS6~+Wk2?xyGvCj9qD|_^X#Vk%{)yI!)`@PY zGh^z5Kc!)!S8}ghBnqPLjM>+|gbs-gi4KVliROrZ=7{Eq=7{EqzKFiaeQ`nRFaQ)p zj@vH|af`UsfLg}fFaIQYh$zILEiw}6i}XeMB7Kp*Xo*H(G^17V4aPE-e|TzF;LD1q z@r6ftTs^WDG5{MZx!0ZprOhL`)N0U!xEGYTaoMNdWw*wIs{ delta 1777 zcmV_+cp$_&#%ziETE=&5p^lHVvXGt9UQN)z3m|j zFj}H*qLQWRvef(aI}$0+niItVvZon=LrUVgedqAwk+8L~u=Vi@KQUe}uSPe_vnWQc zOS!dNTa-}5F|%CiBE|x18CiFO&o;pW5q=RHX%8vKgFmDw_OtQi<~#d-`4i}W@GU}6 zz&WjTxEL{qT0;i6YOS@3Td~)oGMNSaFBtX>lw4S9+ z{DCTC`EODGNR&FrqaHjlB0e6ZX1@m^DAeParnG*4s^<|-?nF~uE3ncJFL$Wq6buJ!nki!1|& z_0>Af4eVQk?eCa*yD(Zi^+eywj%%yUPoa`5R%??Xv5WLX+Jq0jm9o8mR;96&Lk`t$ zGkSnD!l-YCA`>eW51WJyX@D3Fx;cZzr|E4jlfG<72+6JTLm-bqM0bY2lr> zpmF@}2eWYyaS(w!q}RI9)5-9sBun$M*F1yG7O>WQlPI%c0Z0J7x2Ux2allg*0)FzD z(#8Ivbf+IbPlxQe+N}kDz$xGbrp11lPdhRg)%zb?Ib53Qyw>E9W1eskCWlzJWtkOk zMw~jV-U2W#_G!ar?|N)~6i+oDodzUU8#|@DIfeRfV`lL&6z^?twJNtjoqgMeBgZ=&a@ULTa6DV+Fz-ZFnoS#K+xs_~{Ro^1 zUYGo4DokTh>7}=SVppwTv!3e6<^9=2*8+AcfKK5jdxPK%5q8-7kGs=!7@aNP`3Tbk zz~Aq*7)p%9k9s4#Gm_K-zGRL|byoph38`^#Fz9nymep;Hcf6D^6gd1)(`lwcgH4o% zRb5mvdVA=9j#vfc%!bFVL8CeRbt5th?O{O40NFzhNBjSOe1Hb;^mJ)d@w{AQ#dwcucaJiqOC346+t z-}y)v_=wdX=^W_f9nVh@B#Ni5A5UimtX?U zv$vn=B3x#90LEYn7GarBIgAEa@{px3qxmDZm#^z*nq)czhrt&QLM@~Hm!IV*9E0O< z0#3pR3}tlw@O8sbhf^8VZtsl(4_;1ZbS-;t9L~ajIq-=t04FLOwK&GfjGjOKhEF*S zGcXJO#~p<;a(E;yGA~bHA*26;Z*U84!yUK__uxJ}gh%k08@NqN8MOg__bEJs=kNkv za-ILl%zU@#i8iSzqyF1V`X^c^S|_@p){Kew{*;D^Udg?3ktm2N8MCi^2^|t05*-p9 z63r2R%@NHJ%@NHJeGz?;`{IK1LLX2NIc~o=#4X}h4XPP)KmC*BA)*j}w#Z1NFVYw3 zi}XeMq9q!F;f(ozzQIVw>YArU1wMcCG@9}CyQg}_TE$bN4C^hP#xkeAcpA@KeeKC_ zGD(Z1MW022B0-U$NKhmw5|rOxViYmTF;W2;ErH(!ViYlo7)6X)$$a}aGC#G&e=Nvz T^_Kyt0U!xDHwq;sMNdWw5+6Vz -- GitLab