All Downloads are FREE. Search and download functionalities are using the official Maven repository.

test.edu.umd.hooka.alignment.IndexedFloatArrayTest Maven / Gradle / Ivy

There is a newer version: 2.0.1
Show newest version
package edu.umd.hooka.alignment;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import junit.framework.TestCase;
import edu.umd.hooka.ttables.TTable_monolithic_IFAs;

public class IndexedFloatArrayTest  extends TestCase {

	
	public void testSetArray() {
		int[] indices = {1,4,6,16};
		float[] probs = {0.1f,0.2f,0.3f,0.4f};
		
		TTable_monolithic_IFAs table = new TTable_monolithic_IFAs();
		table.set(7, new IndexedFloatArray(indices, probs, false));
		
		assertTrue(table.get(7,4)==0.2f);
		assertTrue(table.get(7,6)==0.3f);
		assertTrue(table.get(7,1)==0.1f);
		assertTrue(table.get(7,16)==0.4f);
	}
		
	
	public void testReadFields() {
		try {
		File temp = File.createTempFile("fat", null);
		temp.deleteOnExit();
		DataOutputStream dos = new DataOutputStream(
			new FileOutputStream(temp));
		int[] i = {1, 4, 8, 9, 10};
		IndexedFloatArray fa = new IndexedFloatArray(i);
		IndexedFloatArray fa2 = new IndexedFloatArray(10);
		fa.set(1, 0.5f);
		fa.set(10, 1.0f);
		fa.add(8, 0.1f);
		fa.add(8, 0.4f);
		fa2.set(4, 2.0f);
		fa.write(dos);
		fa2.write(dos);
		dos.close();
		DataInputStream dis = new DataInputStream(
				new FileInputStream(temp));
		fa2 = new IndexedFloatArray();
		IndexedFloatArray fa3 = new IndexedFloatArray();
		fa2.readFields(dis);
		fa3.readFields(dis);
		assertEquals(0.5f, fa2.get(1));
		assertEquals(0.5f, fa2.get(8));
		assertEquals(1.0f, fa2.get(10));
		System.err.println(fa2);
		assertEquals(2.0f, fa3.get(4));
		
		} catch (IOException e) {
			fail("Caught " + e);
		}
	}
	
	public void testAdd() {
		IndexedFloatArray acc = new IndexedFloatArray();
		int[] e = {1, 4, 10, 99};
		int[] e2= {1, 2, 3, 4};
		IndexedFloatArray v1 = new IndexedFloatArray(e);
		IndexedFloatArray v2 = new IndexedFloatArray(e2);
		for (int i : e) v1.set(i, 1.0f);
		for (int i : e2) v2.set(i, 1.0f);
		acc.plusEqualsMismatchSize(v1);
		acc.plusEqualsMismatchSize(v2);
		assertEquals(2.0f, acc.get(1));
		System.out.println("TA: " + acc);
		assertEquals(1.0f, acc.get(99));
		assertEquals(2.0f, acc.get(4));
	}
	
	public void testIndexedFloatArray() {
		int[] i = {1, 4, 8, 9, 10};
		IndexedFloatArray fa = new IndexedFloatArray(i);
		fa.set(1, 0.5f);
		fa.set(10, 1.0f);
		fa.add(8, 0.1f);
		fa.add(8, 0.4f);
		assertEquals(0.5f, fa.get(1));
		assertEquals(0.5f, fa.get(8));
		assertEquals(1.0f, fa.get(10));
		try {
			fa.set(2, 1.0f);
			fail("Should throw!");
		} catch (RuntimeException r) {}
		System.err.println(fa);
	}
	
	public void testDense() {
		IndexedFloatArray x = new IndexedFloatArray(5);
		x.set(1, 0.4f);
		x.set(2, 0.5f);
		assertEquals(0.4f, x.get(1));
		assertEquals(0.5f, x.get(2));
		System.err.println(x);
		IndexedFloatArray y = (IndexedFloatArray)x.clone();
		x.plusEquals(y);
		System.err.println(y);
		System.err.println(x);
		assertEquals(0.8f, x.get(1));
		try {
			File temp = File.createTempFile("fat", null);
			temp.deleteOnExit();
			DataOutputStream dos = new DataOutputStream(
					new FileOutputStream(temp));
			x.write(dos);
			dos.close();
			DataInputStream dis = new DataInputStream(
					new FileInputStream(temp));
			IndexedFloatArray fa2 = new IndexedFloatArray();
			fa2.readFields(dis);
			assertEquals(0.8f, fa2.get(1));
			assertEquals(x.size(), fa2.size());
		} catch (IOException e) { fail("Caught " + e); }
	}
	
	public void testPlusEquals() {
		int[] i = {1, 4, 5};
		IndexedFloatArray x = new IndexedFloatArray(i);
		IndexedFloatArray y = new IndexedFloatArray(i);
		x.set(1, 0.2f);
		x.set(4, 0.1f);
		y.set(4, 0.4f);
		y.set(5, 1.0f);
		x.plusEquals(y);
		assertEquals(0.2f, x.get(1));
		assertEquals(0.5f, x.get(4));
		assertEquals(1.0f, x.get(5));
	}

	public void testPlusEqualsMML() {
		int[] i = {1, 14, 15};
		int[] j = {14, 23};
		IndexedFloatArray x = new IndexedFloatArray(i);
		IndexedFloatArray y = new IndexedFloatArray(j);
		x.set(1, 0.2f);
		x.set(14, 0.1f);
		x.set(15, 1.0f);
		y.set(14, 0.4f);
		y.set(23, 0.8f);
		y.plusEqualsMismatchSize(x);
		System.out.println(y);
		assertEquals(0.2f, y.get(1));
		assertEquals(0.5f, y.get(14));
		assertEquals(1.0f, y.get(15));
		assertEquals(0.8f, y.get(23));
		
		IndexedFloatArray z = new IndexedFloatArray(3);
		z.set(0, 1.0f);
		z.set(1, 1.0f);
		z.set(2, 1.0f);
		y.plusEqualsMismatchSize(z);
		assertEquals(1.0f, y.get(0));
		assertEquals(1.2f, y.get(1));
		assertEquals(1.0f, y.get(2));
		assertEquals(0.5f, y.get(14));
		assertEquals(1.0f, y.get(15));
		assertEquals(0.8f, y.get(23));
		z.plusEqualsMismatchSize(y);
		assertEquals(2.0f, z.get(0));
		assertEquals(2.2f, z.get(1));
		assertEquals(2.0f, z.get(2));
		assertEquals(0.5f, z.get(14));
		assertEquals(1.0f, z.get(15));
		assertEquals(0.8f, z.get(23));
	}
	
	public void testInit() {
		float[] v = { 1.0f, 2.0f, 3.0f, 5.0f, 5.0f,
				      1.0f, 2.0f, 3.0f, 0.2f, 5.0f,
				      1.0f, 2.0f, 3.0f, 0.0f, 0.4f};
		IndexedFloatArray a = new IndexedFloatArray(v, v.length);
		System.out.println(a);
	}

	public void testNormalize() {
		int[] i = {1, 4, 5};
		IndexedFloatArray x = new IndexedFloatArray(i);
		x.set(1, 0.1f);
		x.set(4, 0.3f);
		x.set(5, 0.4f);
		x.normalize();
		System.err.println(x);
		assertEquals(0.125f, x.get(1));
		assertEquals(0.375f, x.get(4));
		assertEquals(0.5f, x.get(5));
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy