Dear all:
i am having some runtime errors trying to run my program below: i get an
error like
Exception in thread "main" visad.SetException: SampledSet.init_samples:
sample dimension 1 doesn't match expected length 2
what i am trying to do is to create a flat plane and put spikes on it by
reading the data from a file.
i will be glad if this anomaly can be corrected, i have started compiling a
list of all possible visad errors like the above and their solutions, i will
post it when it gets enough.
see code below:
thanks in advance
Isaac
sample data
A2HS_HUMAN 39300 5.43 .16666666666666669
A2HS_HUMAN 39300 5.43 .6862056629875621
**//code
import javax.swing.*;
import visad.*;
import java.io.*;
import java.util.Vector;
import visad.java3d.DisplayImplJ3D;
import visad.data.text.TextAdapter;
import java.util.StringTokenizer;
public class Gridd
{
private static FlatField vals_ff;
private static Set domain_set;
private static DataReferenceImpl data_ref;
public static void main(String[] args) throws Exception
{
Vector nice = new Vector();
BufferedReader fi = new BufferedReader(new FileReader("tryE.txt"));
for(String p=fi.readLine();p!=null;p=fi.readLine())
{
StringTokenizer tokenizer = new StringTokenizer (p);
if (tokenizer.hasMoreTokens())
{
String name = tokenizer.nextToken();
float A =Float.parseFloat( tokenizer.nextToken());
float B= Float.parseFloat(tokenizer.nextToken());
float rat= Float.parseFloat(tokenizer.nextToken());
nice.add(new prodat(name,A,B,rat));
}
}
// range types for data
RealType ratio = RealType.getRealType("ratio");
RealType mass = RealType.getRealType("mass");
RealType pi = RealType.getRealType("pi");
RealTupleType tuple = new RealTupleType(mass,pi);
FunctionType type = new FunctionType(
new RealTupleType(mass, pi), ratio);
nice.trimToSize();
float[][] protein =new float[1][nice.size()*nice.size()];
float[][] range =new float[1][nice.size()];
for(int z=0;z<protein.length;z++)
{
prodat prox=(prodat)nice.get(z);
range[0][z]=prox.getProp();
}
//float[][] t_x = protein.floatTofloat(((FlatF)
Irregular2DSet set = new Irregular2DSet(tuple,protein);
vals_ff=new FlatField(type,set);
vals_ff.setSamples(protein,false);
// try to create a plain grid and put ratio as spikes on the grid
for(int i=0;i<protein.length;i++)
{
for(int j=0;j<protein.length;j++)
{
int ndx = (int)(i* protein[0][j] + j);
if (i % protein.length == 0 && j % protein.length == 0 )
{
//float spike=Math.round(range[0][j]);
float spike=range[0][j];
//protein[0][ndx]= spike;
if(spike >0.5)
{
protein[0][ndx]= spike;
}
else protein[0][ndx] =-1*spike;
}
}
}
// construct data reference
DataReferenceImpl ref = new DataReferenceImpl("ref");
ref.setData(vals_ff);
// construct display
DisplayImplJ3D display = new DisplayImplJ3D("display");
display.addMap(new ScalarMap(ratio, Display.ZAxis));
display.addMap(new ScalarMap(mass, Display.XAxis));
display.addMap(new ScalarMap(pi, Display.YAxis));
display.addMap(new ScalarMap(ratio,Display.RGB));
//display.setBackgroundColor(3.0f,1.0f,1.0f);
display.addReference(ref);
// configure display
GraphicsModeControl gmc = display.getGraphicsModeControl();
gmc.setPointSize(5.0f);
gmc.setScaleEnable(true);
//gmc.setBackgroundColor(3.0f,1.0f,1.0f);
// display onscreen
JFrame frame = new JFrame("Isaac, visad graphics");
frame.getContentPane().add(display.getComponent());
frame.pack();
frame.show();
}
}