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):
"""