diff --git a/.idea/libraries/Maven__org_apache_commons_commons_math4_core_4_0_SNAPSHOT.xml b/.idea/libraries/Maven__org_apache_commons_commons_math4_core_4_0_SNAPSHOT.xml index 502b24fc..99855144 100644 --- a/.idea/libraries/Maven__org_apache_commons_commons_math4_core_4_0_SNAPSHOT.xml +++ b/.idea/libraries/Maven__org_apache_commons_commons_math4_core_4_0_SNAPSHOT.xml @@ -1,13 +1,13 @@ - + - + - + \ No newline at end of file diff --git a/meteoinfo-data/src/main/java/org/meteoinfo/data/meteodata/micaps/MICAPS3DataInfo.java b/meteoinfo-data/src/main/java/org/meteoinfo/data/meteodata/micaps/MICAPS3DataInfo.java index ca25e935..0ebedb96 100644 --- a/meteoinfo-data/src/main/java/org/meteoinfo/data/meteodata/micaps/MICAPS3DataInfo.java +++ b/meteoinfo-data/src/main/java/org/meteoinfo/data/meteodata/micaps/MICAPS3DataInfo.java @@ -288,8 +288,7 @@ public class MICAPS3DataInfo extends DataInfo implements IStationDataInfo { for (String vName : this._fieldList) { switch (vName) { case "Stid": - dtype = DataType.STRING; - break; + continue; default: dtype = DataType.FLOAT; break; @@ -305,12 +304,9 @@ public class MICAPS3DataInfo extends DataInfo implements IStationDataInfo { for (int j = 0; j < data.size(); j++) { dd = (Array) data.get(j); switch (dd.getDataType()) { - case STRING: - dd.setString(i, dataList.get(j)); - break; case FLOAT: try { - dd.setFloat(i, Float.parseFloat(dataList.get(j))); + dd.setFloat(i, Float.parseFloat(dataList.get(j + 1))); } catch (Exception e) { dd.setFloat(i, Float.NaN); } diff --git a/meteoinfo-lab/milconfig.xml b/meteoinfo-lab/milconfig.xml index 52dfbcf5..385b8d4e 100644 --- a/meteoinfo-lab/milconfig.xml +++ b/meteoinfo-lab/milconfig.xml @@ -22,14 +22,12 @@ - - @@ -37,5 +35,5 @@
- + diff --git a/meteoinfo-lab/pylib/mipylib/meteolib/meteo$py.class b/meteoinfo-lab/pylib/mipylib/meteolib/meteo$py.class index 553d75e2..f7127cc7 100644 Binary files a/meteoinfo-lab/pylib/mipylib/meteolib/meteo$py.class and b/meteoinfo-lab/pylib/mipylib/meteolib/meteo$py.class differ diff --git a/meteoinfo-lab/pylib/mipylib/meteolib/meteo.py b/meteoinfo-lab/pylib/mipylib/meteolib/meteo.py index b5db6492..db0fc440 100644 --- a/meteoinfo-lab/pylib/mipylib/meteolib/meteo.py +++ b/meteoinfo-lab/pylib/mipylib/meteolib/meteo.py @@ -495,7 +495,7 @@ def flowfun(u, v): return psi, phi -def eof(x, svd=True, transform=False): +def eof(x, svd=True, transform=False, return_index=False): """ Empirical Orthogonal Function (EOF) analysis to finds both time series and spatial patterns. @@ -504,9 +504,10 @@ def eof(x, svd=True, transform=False): :param transform: (*boolean*) Do space-time transform or not. This transform will speed up the computation if the space location number is much more than time stamps. Only valid when ``svd=False``. + :param return_index: (*bool*) Whether return valid index. Default is `False`. - :returns: (EOF, E, PC) EOF: eigen vector 2-D array; E: eigen values 1-D array; - PC: Principle component 2-D array. + :returns: (EOF, E, PC, [valid_index]) EOF: eigen vector 2-D array; E: eigen values 1-D array; + PC: Principal component 2-D array. Optional valid_index: Valid data (not NaN) index 1-D array. """ has_nan = False if x.contains_nan(): #Has NaN value @@ -549,9 +550,15 @@ def eof(x, svd=True, transform=False): _PC = np.ones(x.shape) * np.nan _EOF[valid_idx,:] = EOF _PC[valid_idx,:] = PC - return _EOF, E, _PC, valid_idx + if return_index: + return _EOF, E, _PC, valid_idx + else: + return _EOF, E, _PC else: - return EOF, E, PC + if return_index: + return EOF, E, PC, np.arange(x.shape[0]) + else: + return EOF, E, PC def varimax(x, normalize=False, tol=1e-10, it_max=1000): """