Matrix CSV Import/Export
Nuiton-matrix supports 2 format to import/export matrix as string representation in CSV file :
- one and two dimensional matrix
- n dimensional matrix
API
To use matrix import/export method use following API:
- MatrixND#importCSV(Reader reader, int[] position)
- MatrixND#exportCSV(Writer writer, boolean withSemantics)
one and two dimensional matrix
One and two dimensional CSV file is a basic CSV file containing all values separated by ‘;’ character.
For example :
10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;10000.0; 10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; 10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; 10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; 10000.0;10000.0;2000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; 10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; 10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; 10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; 10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; 10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;10000.0;
With semantics
Without semantics
n dimensional matrix
With n dimension import, file format is a little bit more complicated. It’s must include:
- matrix dimensions
- dimensions semantics
- value for each dimension
For example, importing a 222 matrix::
[2, 2, 2] java.lang.String:2009,2010 java.lang.String:Nantes,Lille java.lang.String:Informatique,Administration 0;0;0;0.0 0;0;1;1.0 0;1;1;4.0 1;0;0;-4.0E-7 1;0;1;2.0 1;1;0;4.0 1;1;1;42.0
Using semantics mapper
Previous example was using only “String” to lookup for semantics. You can use an additional SemanticMapper to use custom object.
For example:
[2, 2, 2] Year:2009,2010 City:Nantes,Lille Department:Informatique,Administration 0;0;0;0.0 0;0;1;1.0 0;1;1;4.0 1;0;0;-4.0E-7 1;0;1;2.0 1;1;0;4.0 1;1;1;42.0
The SemanticMapper will be called to resolv object identified by ids such as ‘2009’, ‘2010’…
Here is a SemanticMapper sample code:
public class IsisMatrixSemanticMapper extends SemanticMapper { public Class getType(String typeName) { // In simulation context : Class clazz = null; try { clazz = Class.forName("org.exemple." + typeName); } catch (Exception ex) { clazz = String.class; } return clazz; } public Object getValue(Class type, String valueId) { // In simulation context : Object value = null; try { // lookup in database object identified by valueId [...] } catch (Exception ex) { log.warn("Can't get value for " + valueId, ex); value = valueId; } return value; //return valueId; } }