package com.compomics.util.test.general;
import com.compomics.util.experiment.identification.ptm.PtmSiteMapping;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import junit.framework.Assert;
import junit.framework.TestCase;
/**
* This class tests the general methods of the util class.
*
* @author Marc Vaudel
*/
public class PtmsiteMappingTest extends TestCase {
/**
* Tests the results of the integer alignment method.
*
* input
* serie1 = {0, 1, 13, 25, 15, 6, 99}
* serie2 = {100, 2, 12, 14, 18, 30, 115, 1000}
*
* shall return
* result = {0->null, 1->2, 6->null, 13->12, 15->14, 25->30, 99->100}
*
* input
* serie1 = {5}
* serie2 = {0, 1, 2, 3, 4, 7, 8, 9, 10}
*
* shall return
* result = {5->4}
*
* input
* serie1 = {0, 1, 2, 3, 4, 7, 8, 9, 10}
* serie2 = {5}
*
* shall return
* result = {0->null, 1->null, 2->null, 3->null, 4->5, 7->null, 8->null, 9->null, 10->null}
*/
public void testAlign() {
Integer[] array1 = {0, 1, 13, 25, 15, 6, 99};
Integer[] array2 = {100, 2, 12, 14, 18, 30, 115, 1000};
ArrayList<Integer> serie1 = new ArrayList<Integer>(Arrays.asList(array1));
ArrayList<Integer> serie2 = new ArrayList<Integer>(Arrays.asList(array2));
HashMap<Integer, Integer> result = PtmSiteMapping.align(serie1, serie2);
Assert.assertTrue(result.size() == serie1.size());
Assert.assertTrue(result.containsKey(0));
Assert.assertTrue(result.get(0) == null);
Assert.assertTrue(result.containsKey(1));
Assert.assertTrue(result.get(1) == 2);
Assert.assertTrue(result.containsKey(6));
Assert.assertTrue(result.get(6) == null);
Assert.assertTrue(result.containsKey(13));
Assert.assertTrue(result.get(13) == 12);
Assert.assertTrue(result.containsKey(15));
Assert.assertTrue(result.get(15) == 14);
Assert.assertTrue(result.containsKey(25));
Assert.assertTrue(result.get(25) == 30);
Assert.assertTrue(result.containsKey(99));
Assert.assertTrue(result.get(99) == 100);
Integer[] array3 = {5};
Integer[] array4 = {0, 1, 2, 3, 4, 7, 8, 9, 10};
ArrayList<Integer> serie3 = new ArrayList<Integer>(Arrays.asList(array3));
ArrayList<Integer> serie4 = new ArrayList<Integer>(Arrays.asList(array4));
result = PtmSiteMapping.align(serie3, serie4);
Assert.assertTrue(result.size() == serie3.size());
Assert.assertTrue(result.containsKey(5));
Assert.assertTrue(result.get(5) == 4);
result = PtmSiteMapping.align(serie4, serie3);
Assert.assertTrue(result.size() == serie4.size());
Assert.assertTrue(result.containsKey(0));
Assert.assertTrue(result.get(0) == null);
Assert.assertTrue(result.containsKey(1));
Assert.assertTrue(result.get(1) == null);
Assert.assertTrue(result.containsKey(2));
Assert.assertTrue(result.get(2) == null);
Assert.assertTrue(result.containsKey(3));
Assert.assertTrue(result.get(3) == null);
Assert.assertTrue(result.containsKey(4));
Assert.assertTrue(result.get(4) == 5);
Assert.assertTrue(result.containsKey(7));
Assert.assertTrue(result.get(7) == null);
Assert.assertTrue(result.containsKey(8));
Assert.assertTrue(result.get(8) == null);
Assert.assertTrue(result.containsKey(9));
Assert.assertTrue(result.get(9) == null);
Assert.assertTrue(result.containsKey(10));
Assert.assertTrue(result.get(10) == null);
}
/**
* Tests the results of the integer full alignment method.
*
* input
* serie1 = {0, 1, 13, 25, 15, 6, 99}
* serie2 = {100, 2, 12, 14, 18, 30, 115, 1000}
*
* shall return
* result = {0-> 115, 1->2, 6-> 18, 13->12, 15->14, 25->30, 99->100}
*
* input
* serie1 = {5}
* serie2 = {0, 1, 2, 3, 4, 7, 8, 9, 10}
*
* shall return
* result = {5->4}
*
* input
* serie1 = {0, 1, 2, 3, 4, 7, 8, 9, 10}
* serie2 = {5}
*
* shall return
* result = {0->null, 1->null, 2->null, 3->null, 4->5, 7->null, 8->null, 9->null, 10->null}
*/
public void testAlignAll() {
Integer[] array1 = {0, 1, 13, 25, 15, 6, 99};
Integer[] array2 = {100, 2, 12, 14, 18, 30, 115, 1000};
ArrayList<Integer> serie1 = new ArrayList<Integer>(Arrays.asList(array1));
ArrayList<Integer> serie2 = new ArrayList<Integer>(Arrays.asList(array2));
HashMap<Integer, Integer> result = PtmSiteMapping.alignAll(serie1, serie2);
Assert.assertTrue(result.size() == serie1.size());
Assert.assertTrue(result.containsKey(0));
Assert.assertTrue(result.get(0) == 115);
Assert.assertTrue(result.containsKey(1));
Assert.assertTrue(result.get(1) == 2);
Assert.assertTrue(result.containsKey(6));
Assert.assertTrue(result.get(6) == 18);
Assert.assertTrue(result.containsKey(13));
Assert.assertTrue(result.get(13) == 12);
Assert.assertTrue(result.containsKey(15));
Assert.assertTrue(result.get(15) == 14);
Assert.assertTrue(result.containsKey(25));
Assert.assertTrue(result.get(25) == 30);
Assert.assertTrue(result.containsKey(99));
Assert.assertTrue(result.get(99) == 100);
Integer[] array3 = {5};
Integer[] array4 = {0, 1, 2, 3, 4, 7, 8, 9, 10};
ArrayList<Integer> serie3 = new ArrayList<Integer>(Arrays.asList(array3));
ArrayList<Integer> serie4 = new ArrayList<Integer>(Arrays.asList(array4));
result = PtmSiteMapping.align(serie3, serie4);
Assert.assertTrue(result.size() == serie3.size());
Assert.assertTrue(result.containsKey(5));
Assert.assertTrue(result.get(5) == 4);
result = PtmSiteMapping.align(serie4, serie3);
Assert.assertTrue(result.size() == serie4.size());
Assert.assertTrue(result.containsKey(0));
Assert.assertTrue(result.get(0) == null);
Assert.assertTrue(result.containsKey(1));
Assert.assertTrue(result.get(1) == null);
Assert.assertTrue(result.containsKey(2));
Assert.assertTrue(result.get(2) == null);
Assert.assertTrue(result.containsKey(3));
Assert.assertTrue(result.get(3) == null);
Assert.assertTrue(result.containsKey(4));
Assert.assertTrue(result.get(4) == 5);
Assert.assertTrue(result.containsKey(7));
Assert.assertTrue(result.get(7) == null);
Assert.assertTrue(result.containsKey(8));
Assert.assertTrue(result.get(8) == null);
Assert.assertTrue(result.containsKey(9));
Assert.assertTrue(result.get(9) == null);
Assert.assertTrue(result.containsKey(10));
Assert.assertTrue(result.get(10) == null);
}
/**
* Tests the results of the integer full alignment with constraints method.
*
* input
* {
* 0 -> {100, 2, 12, 14, 18, 30, 115, 1000},
* 1 -> {12},
* 2 -> {3, 12, 14},
* 8 -> {12},
* 13 -> {3, 12, 14},
* 25 -> {100, 2, 12, 14, 18, 30, 115, 1000},
* 15 -> {100, 2, 12, 14, 18, 30, 115, 1000},
* 6 -> {100, 2, 12, 14, 18, 30, 115, 1000},
* 99 -> {3} }
* }
*
* shall return
* {1 -> null, 8 -> 12, 99 -> 3, 13 -> 14, 2 -> null, 0 -> 2, 6 -> 100, 15 -> 18, 25 -> 30}
*
* input
* {5 -> {0, 1, 2, 3, 4, 7, 8, 9, 10}}
*
* shall return
* result = {5->4}
*
* input
* {0 -> {5}, 1 -> {5}, 2 -> {5}, 3 -> {5}, 4 -> {5}, 7 -> {5}, 8 -> {5}, 9 -> {5}, 10 -> {5}}
*
* shall return
* result = {0->null, 1->null, 2->null, 3->null, 4->5, 7->null, 8->null, 9->null, 10->null}
*/
public void testAlignMap() {
HashMap<Integer, ArrayList<Integer>> input = new HashMap<Integer, ArrayList<Integer>>();
input.put(0, new ArrayList<Integer>());
input.get(0).add(100);
input.get(0).add(2);
input.get(0).add(12);
input.get(0).add(14);
input.get(0).add(18);
input.get(0).add(30);
input.get(0).add(115);
input.get(0).add(1000);
input.put(1, new ArrayList<Integer>());
input.get(1).add(12);
input.put(2, new ArrayList<Integer>());
input.get(2).add(3);
input.get(2).add(12);
input.get(2).add(14);
input.put(8, new ArrayList<Integer>());
input.get(8).add(12);
input.put(13, new ArrayList<Integer>());
input.get(13).add(3);
input.get(13).add(12);
input.get(13).add(14);
input.put(25, new ArrayList<Integer>());
input.get(25).add(100);
input.get(25).add(2);
input.get(25).add(12);
input.get(25).add(14);
input.get(25).add(18);
input.get(25).add(30);
input.get(25).add(115);
input.get(25).add(1000);
input.put(15, new ArrayList<Integer>());
input.get(15).add(100);
input.get(15).add(2);
input.get(15).add(12);
input.get(15).add(14);
input.get(15).add(18);
input.get(15).add(30);
input.get(15).add(115);
input.get(15).add(1000);
input.put(6, new ArrayList<Integer>());
input.get(6).add(100);
input.get(6).add(2);
input.get(6).add(12);
input.get(6).add(14);
input.get(6).add(18);
input.get(6).add(30);
input.get(6).add(115);
input.get(6).add(1000);
input.put(99, new ArrayList<Integer>());
input.get(99).add(3);
HashMap<Integer, Integer> result = PtmSiteMapping.alignAll(input);
Assert.assertTrue(result.size() == 9);
Assert.assertTrue(result.containsKey(1));
Assert.assertTrue(result.get(1) == null);
Assert.assertTrue(result.containsKey(8));
Assert.assertTrue(result.get(8) == 12);
Assert.assertTrue(result.containsKey(99));
Assert.assertTrue(result.get(99) == 3);
Assert.assertTrue(result.containsKey(2));
Assert.assertTrue(result.get(2) == null);
Assert.assertTrue(result.containsKey(13));
Assert.assertTrue(result.get(13) == 14);
Assert.assertTrue(result.containsKey(0));
Assert.assertTrue(result.get(0) == 2);
Assert.assertTrue(result.containsKey(6));
Assert.assertTrue(result.get(6) == 100);
Assert.assertTrue(result.containsKey(15));
Assert.assertTrue(result.get(15) == 18);
Assert.assertTrue(result.containsKey(25));
Assert.assertTrue(result.get(25) == 30);
input = new HashMap<Integer, ArrayList<Integer>>();
input.put(5, new ArrayList<Integer>());
input.get(5).add(0);
input.get(5).add(1);
input.get(5).add(2);
input.get(5).add(3);
input.get(5).add(4);
input.get(5).add(7);
input.get(5).add(8);
input.get(5).add(9);
input.get(5).add(10);
result = PtmSiteMapping.alignAll(input);
Assert.assertTrue(result.size() == 1);
Assert.assertTrue(result.containsKey(5));
Assert.assertTrue(result.get(5) == 4);
input = new HashMap<Integer, ArrayList<Integer>>();
input.put(0, new ArrayList<Integer>());
input.get(0).add(5);
input.put(1, new ArrayList<Integer>());
input.get(1).add(5);
input.put(2, new ArrayList<Integer>());
input.get(2).add(5);
input.put(3, new ArrayList<Integer>());
input.get(3).add(5);
input.put(4, new ArrayList<Integer>());
input.get(4).add(5);
input.put(7, new ArrayList<Integer>());
input.get(7).add(5);
input.put(8, new ArrayList<Integer>());
input.get(8).add(5);
input.put(9, new ArrayList<Integer>());
input.get(9).add(5);
input.put(10, new ArrayList<Integer>());
input.get(10).add(5);
result = PtmSiteMapping.alignAll(input);
Assert.assertTrue(result.size() == 9);
Assert.assertTrue(result.containsKey(0));
Assert.assertTrue(result.get(0) == null);
Assert.assertTrue(result.containsKey(1));
Assert.assertTrue(result.get(1) == null);
Assert.assertTrue(result.containsKey(2));
Assert.assertTrue(result.get(2) == null);
Assert.assertTrue(result.containsKey(3));
Assert.assertTrue(result.get(3) == null);
Assert.assertTrue(result.containsKey(4));
Assert.assertTrue(result.get(4) == 5);
Assert.assertTrue(result.containsKey(7));
Assert.assertTrue(result.get(7) == null);
Assert.assertTrue(result.containsKey(8));
Assert.assertTrue(result.get(8) == null);
Assert.assertTrue(result.containsKey(9));
Assert.assertTrue(result.get(9) == null);
Assert.assertTrue(result.containsKey(10));
Assert.assertTrue(result.get(10) == null);
}
}