ucar.ma2
Class ArrayStructureMA
java.lang.Object
ucar.ma2.Array
ucar.ma2.ArrayStructure
ucar.ma2.ArrayStructureMA
public class ArrayStructureMA
- extends ArrayStructure
Concrete implementation of ArrayStructure, data storage is in member arrays, which are converted to
StructureData member data on the fly.
This defers object creation for efficiency. Use getArray() and getScalar() data accessors if possible.
How to create:
ArrayStructureMA asma = new ArrayStructureMA( smembers, getShape());
for (int i = 0; i < orgVariables.size(); i++) {
Variable v = (Variable) orgVariables.get(i);
Array data = v.read();
asma.setMemberArray( v.getName(), data);
}
How to do Nested Structures:
Structure {
float f1;
short f2(3);
Structure {
int g1;
double(2) g2;
double(3,4) g3;
Structure {
int h1;
double(2) h2;
} nested2(7);
} nested1(12);
} s(4);
- For f1, you need an ArrayFloat of shape {4}
- For f2, you need an ArrayShort of shape {4, 3} .
- For nested1, you need an ArrayStructure of shape {4, 12}.
Use an ArrayStructureMA that has 3 members:
- For g1, you need an ArrayInt of shape (4, 12}
- For g2, you need an ArrayDouble of shape {4, 12, 2}.
- For g3, you need an ArrayDouble of shape {4, 12, 3, 4}.
- For nested2, you need an ArrayStructure of shape {4, 12, 7}.
Use an ArrayStructureMA that has 2 members:
- For h1, you need an ArrayInt of shape (4, 12, 7}
- For h2, you need an ArrayDouble of shape {4, 12, 7, 2}.
Example code:
public void testMA() throws IOException, InvalidRangeException {
StructureMembers members = new StructureMembers("s");
StructureMembers.Member m = new StructureMembers.Member("f1", "desc", "units", DataType.FLOAT, new int[] {1});
members.addMember( m);
Array data = Array.factory(DataType.FLOAT, new int[] {4});
m.setDataObject( data);
fill(data);
m = new StructureMembers.Member("f2", "desc", "units", DataType.SHORT, new int[] {3});
members.addMember( m);
data = Array.factory(DataType.SHORT, new int[] {4, 3});
m.setDataObject( data);
fill(data);
m = new StructureMembers.Member("nested1", "desc", "units", DataType.STRUCTURE, new int[] {9});
members.addMember( m);
data = makeNested1( m);
m.setDataObject( data);
ArrayStructureMA as = new ArrayStructureMA( members, new int[] {4});
}
public ArrayStructure makeNested1(StructureMembers.Member parent) throws IOException, InvalidRangeException {
StructureMembers members = new StructureMembers(parent.getName());
parent.setStructureMembers( members);
StructureMembers.Member m = new StructureMembers.Member("g1", "desc", "units", DataType.INT, new int[] {1});
members.addMember( m);
Array data = Array.factory(DataType.INT, new int[] {4, 9});
m.setDataObject( data);
fill(data);
m = new StructureMembers.Member("g2", "desc", "units", DataType.DOUBLE, new int[] {2});
members.addMember( m);
data = Array.factory(DataType.DOUBLE, new int[] {4, 9, 2});
m.setDataObject( data);
fill(data);
m = new StructureMembers.Member("g3", "desc", "units", DataType.DOUBLE, new int[] {3, 4});
members.addMember( m);
data = Array.factory(DataType.DOUBLE, new int[] {4, 9, 3, 4});
m.setDataObject( data);
fill(data);
m = new StructureMembers.Member("nested2", "desc", "units", DataType.STRUCTURE, new int[] {7});
members.addMember( m);
data = makeNested2( m);
m.setDataObject( data);
return new ArrayStructureMA( members, new int[] {4, 9});
}
public ArrayStructure makeNested2(StructureMembers.Member parent) throws IOException, InvalidRangeException {
StructureMembers members = new StructureMembers(parent.getName());
parent.setStructureMembers( members);
StructureMembers.Member m = new StructureMembers.Member("h1", "desc", "units", DataType.INT, new int[] {1});
members.addMember( m);
Array data = Array.factory(DataType.INT, new int[] {4, 9, 7});
m.setDataObject( data);
fill(data);
m = new StructureMembers.Member("h2", "desc", "units", DataType.DOUBLE, new int[] {2});
members.addMember( m);
data = Array.factory(DataType.DOUBLE, new int[] {4, 9, 7, 2});
m.setDataObject( data);
fill(data);
return new ArrayStructureMA( members, new int[] {4, 9, 7});
}
- Version:
- $Revision:51 $ $Date:2006-07-12 17:13:13Z $
- Author:
- caron
- See Also:
Array
|
Method Summary |
ArrayStructure |
getArrayStructure(int recnum,
StructureMembers.Member m)
Get member data of type array of Structure. |
byte[] |
getJavaArrayByte(int recnum,
StructureMembers.Member m)
Get member data of type byte as a 1D array. |
char[] |
getJavaArrayChar(int recnum,
StructureMembers.Member m)
Get member data of type char as a 1D array. |
double[] |
getJavaArrayDouble(int recnum,
StructureMembers.Member m)
Get member data of type double as a 1D array. |
float[] |
getJavaArrayFloat(int recnum,
StructureMembers.Member m)
Get member data of type float as a 1D array. |
int[] |
getJavaArrayInt(int recnum,
StructureMembers.Member m)
Get member data of type int as a 1D array. |
long[] |
getJavaArrayLong(int recnum,
StructureMembers.Member m)
Get member data of type long as a 1D array. |
short[] |
getJavaArrayShort(int recnum,
StructureMembers.Member m)
Get member data of type short as a 1D array. |
java.lang.String[] |
getJavaArrayString(int recnum,
StructureMembers.Member m)
Get member data of type String as a 1D array. |
byte |
getScalarByte(int recnum,
StructureMembers.Member m)
Get scalar member data of type byte. |
char |
getScalarChar(int recnum,
StructureMembers.Member m)
Get scalar member data of type char. |
double |
getScalarDouble(int recnum,
StructureMembers.Member m)
Get scalar member data of type double. |
float |
getScalarFloat(int recnum,
StructureMembers.Member m)
Get scalar member data of type float. |
int |
getScalarInt(int recnum,
StructureMembers.Member m)
Get scalar member data of type int. |
long |
getScalarLong(int recnum,
StructureMembers.Member m)
Get scalar member data of type long. |
short |
getScalarShort(int recnum,
StructureMembers.Member m)
Get scalar member data of type short. |
java.lang.String |
getScalarString(int recnum,
StructureMembers.Member m)
Get member data of type String or char. |
StructureData |
getScalarStructure(int recnum,
StructureMembers.Member m)
Get member data of type Structure. |
java.lang.Object |
getStorage()
Return backing storage in the StructureMembers |
protected StructureData |
makeStructureData(ArrayStructure as,
int index)
|
void |
setMemberArray(java.lang.String memberName,
Array data)
Set the data array for this member. |
| Methods inherited from class ucar.ma2.ArrayStructure |
convertScalarDouble, copy, createView, getArray, getArrayByte, getArrayChar, getArrayDouble, getArrayFloat, getArrayInt, getArrayLong, getArrayShort, getArrayString, getBoolean, getByte, getChar, getDouble, getElementType, getFloat, getInt, getLong, getObject, getObject, getObject, getScalarObject, getShort, getStructureData, getStructureData, getStructureMembers, getStructureSize, setBoolean, setByte, setChar, setDouble, setFloat, setInt, setLong, setObject, setShort |
| Methods inherited from class ucar.ma2.Array |
arraycopy, copyTo1DJavaArray, copyToNDJavaArray, factory, factory, factory, factory, factoryConstant, flip, get1DJavaArray, getIndex, getIndexIterator, getIndexIteratorFast, getIndexName, getRangeIterator, getRank, getShape, getSize, permute, reduce, reduce, reshape, section, section, section, sectionNoReduce, sectionNoReduce, setIndexName, shapeToString, slice, toString, transpose |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
ArrayStructureMA
public ArrayStructureMA(StructureMembers members,
int[] shape)
- Create a new Array of type StructureData and the given members and shape.
You must set the data Arrays on each of the Members, using setDataObject(). These data Arrays contain the data
for that member Variable, for all the StructureData. Therefore it has rank one greater that the Members. The extra
dimension must be the outermost (slowest varying) dimension. ie, if some member has shape [3,10], the array would have
shape [nrows, 3, 10].
- Parameters:
members - a description of the structure membersshape - the shape of the Array.
setMemberArray
public void setMemberArray(java.lang.String memberName,
Array data)
- Set the data array for this member.
- Parameters:
memberName - name of memberdata - Array for this member.
makeStructureData
protected StructureData makeStructureData(ArrayStructure as,
int index)
- Specified by:
makeStructureData in class ArrayStructure
getStorage
public java.lang.Object getStorage()
- Return backing storage in the StructureMembers
- Specified by:
getStorage in class Array
getScalarDouble
public double getScalarDouble(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get scalar member data of type double.
- Specified by:
getScalarDouble in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type double.
- Returns:
- scalar double value
getJavaArrayDouble
public double[] getJavaArrayDouble(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type double as a 1D array. The member data may be any rank.
- Specified by:
getJavaArrayDouble in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type double.
- Returns:
- double[]
getScalarFloat
public float getScalarFloat(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get scalar member data of type float.
- Specified by:
getScalarFloat in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type float.
- Returns:
- scalar double value
getJavaArrayFloat
public float[] getJavaArrayFloat(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type float as a 1D array.
- Specified by:
getJavaArrayFloat in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type float.
- Returns:
- float[]
getScalarByte
public byte getScalarByte(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get scalar member data of type byte.
- Specified by:
getScalarByte in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type byte.
- Returns:
- scalar double value
getJavaArrayByte
public byte[] getJavaArrayByte(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type byte as a 1D array.
- Specified by:
getJavaArrayByte in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type byte.
- Returns:
- byte[]
getScalarShort
public short getScalarShort(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get scalar member data of type short.
- Specified by:
getScalarShort in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type short.
- Returns:
- scalar double value
getJavaArrayShort
public short[] getJavaArrayShort(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type short as a 1D array.
- Specified by:
getJavaArrayShort in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type float.
- Returns:
- short[]
getScalarInt
public int getScalarInt(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get scalar member data of type int.
- Specified by:
getScalarInt in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type int.
- Returns:
- scalar double value
getJavaArrayInt
public int[] getJavaArrayInt(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type int as a 1D array.
- Specified by:
getJavaArrayInt in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type int.
- Returns:
- int[]
getScalarLong
public long getScalarLong(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get scalar member data of type long.
- Specified by:
getScalarLong in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type long.
- Returns:
- scalar double value
getJavaArrayLong
public long[] getJavaArrayLong(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type long as a 1D array.
- Specified by:
getJavaArrayLong in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type long.
- Returns:
- long[]
getScalarChar
public char getScalarChar(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get scalar member data of type char.
- Specified by:
getScalarChar in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type char.
- Returns:
- scalar double value
getJavaArrayChar
public char[] getJavaArrayChar(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type char as a 1D array.
- Specified by:
getJavaArrayChar in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type char.
- Returns:
- char[]
getScalarString
public java.lang.String getScalarString(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type String or char.
- Specified by:
getScalarString in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type String or char.
- Returns:
- scalar String value
getJavaArrayString
public java.lang.String[] getJavaArrayString(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type String as a 1D array.
- Specified by:
getJavaArrayString in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type String.
- Returns:
- String[]
getScalarStructure
public StructureData getScalarStructure(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type Structure.
- Specified by:
getScalarStructure in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type Structure.
- Returns:
- scalar StructureData
getArrayStructure
public ArrayStructure getArrayStructure(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type array of Structure.
- Specified by:
getArrayStructure in class ArrayStructure
- Parameters:
recnum - get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m - get data from this StructureMembers.Member. Must be of type Structure.
- Returns:
- nested ArrayStructure.