+ if ( !isEqual( 0.75, MsaMethods.calculateIdentityRatio( msa, 10 ) ) ) {
+ return false;
+ }
+ if ( !isEqual( 0.25, MsaMethods.calculateIdentityRatio( msa, 11 ) ) ) {
+ return false;
+ }
+ if ( !isEqual( 0.25, MsaMethods.calculateIdentityRatio( msa, 12 ) ) ) {
+ return false;
+ }
+ }
+ catch ( final Exception e ) {
+ e.printStackTrace( System.out );
+ return false;
+ }
+ return true;
+ }
+
+ private static boolean testMsaEntropy() {
+ try {
+ final MolecularSequence s0 = BasicSequence.createAaSequence( "a", "AAAAAAA" );
+ final MolecularSequence s1 = BasicSequence.createAaSequence( "b", "AAAIACC" );
+ final MolecularSequence s2 = BasicSequence.createAaSequence( "c", "AAIIIIF" );
+ final MolecularSequence s3 = BasicSequence.createAaSequence( "d", "AIIIVVW" );
+ final List<MolecularSequence> l = new ArrayList<MolecularSequence>();
+ l.add( s0 );
+ l.add( s1 );
+ l.add( s2 );
+ l.add( s3 );
+ final Msa msa = BasicMsa.createInstance( l );
+ //TODO need to DO the tests!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ //FIXME
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 20, msa, 0 ) );
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 20, msa, 1 ) );
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 20, msa, 2 ) );
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 20, msa, 3 ) );
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 20, msa, 4 ) );
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 20, msa, 5 ) );
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 20, msa, 6 ) );
+ // System.out.println();
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 6, msa, 0 ) );
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 6, msa, 1 ) );
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 6, msa, 2 ) );
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 6, msa, 3 ) );
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 6, msa, 4 ) );
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 6, msa, 5 ) );
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 6, msa, 6 ) );
+ final List<MolecularSequence> l2 = new ArrayList<MolecularSequence>();
+ l2.add( BasicSequence.createAaSequence( "1", "AAAAAAA" ) );
+ l2.add( BasicSequence.createAaSequence( "2", "AAAIACC" ) );
+ l2.add( BasicSequence.createAaSequence( "3", "AAIIIIF" ) );
+ l2.add( BasicSequence.createAaSequence( "4", "AIIIVVW" ) );
+ l2.add( BasicSequence.createAaSequence( "5", "AAAAAAA" ) );
+ l2.add( BasicSequence.createAaSequence( "6", "AAAIACC" ) );
+ l2.add( BasicSequence.createAaSequence( "7", "AAIIIIF" ) );
+ l2.add( BasicSequence.createAaSequence( "8", "AIIIVVW" ) );
+ l2.add( BasicSequence.createAaSequence( "9", "AAAAAAA" ) );
+ l2.add( BasicSequence.createAaSequence( "10", "AAAIACC" ) );
+ l2.add( BasicSequence.createAaSequence( "11", "AAIIIIF" ) );
+ l2.add( BasicSequence.createAaSequence( "12", "AIIIVVW" ) );
+ l2.add( BasicSequence.createAaSequence( "13", "AAIIIIF" ) );
+ l2.add( BasicSequence.createAaSequence( "14", "AIIIVVW" ) );
+ l2.add( BasicSequence.createAaSequence( "15", "AAAAAAA" ) );
+ l2.add( BasicSequence.createAaSequence( "16", "AAAIACC" ) );
+ l2.add( BasicSequence.createAaSequence( "17", "AAIIIIF" ) );
+ l2.add( BasicSequence.createAaSequence( "18", "AIIIVVW" ) );
+ l2.add( BasicSequence.createAaSequence( "19", "AAAAAAA" ) );
+ l2.add( BasicSequence.createAaSequence( "20", "AAAIACC" ) );
+ l2.add( BasicSequence.createAaSequence( "21", "AAIIIIF" ) );
+ l2.add( BasicSequence.createAaSequence( "22", "AIIIVVW" ) );
+ final Msa msa2 = BasicMsa.createInstance( l2 );
+ // System.out.println();
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 20, msa2, 0 ) );
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 20, msa2, 1 ) );
+ // System.out.println( MsaMethods.calcNormalizedShannonsEntropy( 20, msa2, 2 ) );
+ }
+ catch ( final Exception e ) {
+ e.printStackTrace( System.out );
+ return false;
+ }
+ return true;
+ }
+
+ private static boolean testDeleteableMsa() {
+ try {
+ final MolecularSequence s0 = BasicSequence.createAaSequence( "a", "AAAA" );
+ final MolecularSequence s1 = BasicSequence.createAaSequence( "b", "BAAA" );
+ final MolecularSequence s2 = BasicSequence.createAaSequence( "c", "CAAA" );
+ final MolecularSequence s3 = BasicSequence.createAaSequence( "d", "DAAA" );
+ final MolecularSequence s4 = BasicSequence.createAaSequence( "e", "EAAA" );
+ final MolecularSequence s5 = BasicSequence.createAaSequence( "f", "FAAA" );
+ final List<MolecularSequence> l0 = new ArrayList<MolecularSequence>();
+ l0.add( s0 );
+ l0.add( s1 );
+ l0.add( s2 );
+ l0.add( s3 );
+ l0.add( s4 );
+ l0.add( s5 );
+ final DeleteableMsa dmsa0 = DeleteableMsa.createInstance( l0 );
+ dmsa0.deleteRow( "b", false );
+ if ( !dmsa0.getIdentifier( 1 ).equals( "c" ) ) {
+ return false;
+ }
+ dmsa0.deleteRow( "e", false );
+ dmsa0.deleteRow( "a", false );
+ dmsa0.deleteRow( "f", false );
+ if ( dmsa0.getLength() != 4 ) {
+ return false;
+ }
+ if ( dmsa0.getNumberOfSequences() != 2 ) {
+ return false;
+ }
+ if ( !dmsa0.getIdentifier( 0 ).equals( "c" ) ) {
+ return false;
+ }
+ if ( !dmsa0.getIdentifier( 1 ).equals( "d" ) ) {
+ return false;
+ }
+ if ( dmsa0.getResidueAt( 0, 0 ) != 'C' ) {
+ return false;
+ }
+ if ( !dmsa0.getSequenceAsString( 0 ).toString().equals( "CAAA" ) ) {
+ return false;
+ }
+ if ( dmsa0.getColumnAt( 0 ).size() != 2 ) {
+ return false;
+ }
+ dmsa0.deleteRow( "c", false );
+ dmsa0.deleteRow( "d", false );
+ if ( dmsa0.getNumberOfSequences() != 0 ) {
+ return false;
+ }
+ //
+ final MolecularSequence s_0 = BasicSequence.createAaSequence( "a", "--A---B-C--X----" );
+ final MolecularSequence s_1 = BasicSequence.createAaSequence( "b", "--B-----C-------" );
+ final MolecularSequence s_2 = BasicSequence.createAaSequence( "c", "--C--AB-C------Z" );
+ final MolecularSequence s_3 = BasicSequence.createAaSequence( "d", "--D--AA-C-------" );
+ final MolecularSequence s_4 = BasicSequence.createAaSequence( "e", "--E--AA-C-------" );
+ final MolecularSequence s_5 = BasicSequence.createAaSequence( "f", "--F--AB-CD--Y---" );
+ final List<MolecularSequence> l1 = new ArrayList<MolecularSequence>();
+ l1.add( s_0 );
+ l1.add( s_1 );
+ l1.add( s_2 );
+ l1.add( s_3 );
+ l1.add( s_4 );
+ l1.add( s_5 );
+ final DeleteableMsa dmsa1 = DeleteableMsa.createInstance( l1 );
+ dmsa1.deleteGapOnlyColumns();
+ dmsa1.deleteRow( "a", false );
+ dmsa1.deleteRow( "f", false );
+ dmsa1.deleteRow( "d", false );
+ dmsa1.deleteGapOnlyColumns();
+ if ( !dmsa1.getSequenceAsString( 0 ).toString().equals( "B--C-" ) ) {
+ return false;
+ }
+ if ( !dmsa1.getSequenceAsString( 1 ).toString().equals( "CABCZ" ) ) {
+ return false;
+ }
+ if ( !dmsa1.getSequenceAsString( 2 ).toString().equals( "EAAC-" ) ) {
+ return false;
+ }
+ dmsa1.deleteRow( "c", false );
+ dmsa1.deleteGapOnlyColumns();
+ final Writer w0 = new StringWriter();
+ dmsa1.write( w0, MSA_FORMAT.FASTA );
+ final Writer w1 = new StringWriter();
+ dmsa1.write( w1, MSA_FORMAT.PHYLIP );
+ if ( !dmsa1.getSequenceAsString( 0 ).toString().equals( "B--C" ) ) {
+ return false;
+ }
+ if ( !dmsa1.getSequenceAsString( 1 ).toString().equals( "EAAC" ) ) {
+ return false;
+ }
+ final MolecularSequence s__0 = BasicSequence.createAaSequence( "a", "A------" );
+ final MolecularSequence s__1 = BasicSequence.createAaSequence( "b", "BB-----" );
+ final MolecularSequence s__2 = BasicSequence.createAaSequence( "c", "CCC----" );
+ final MolecularSequence s__3 = BasicSequence.createAaSequence( "d", "DDDD---" );
+ final MolecularSequence s__4 = BasicSequence.createAaSequence( "e", "EEEEE--" );
+ final MolecularSequence s__5 = BasicSequence.createAaSequence( "f", "FFFFFF-" );
+ final List<MolecularSequence> l2 = new ArrayList<MolecularSequence>();
+ l2.add( s__0 );
+ l2.add( s__1 );
+ l2.add( s__2 );
+ l2.add( s__3 );
+ l2.add( s__4 );
+ l2.add( s__5 );
+ final DeleteableMsa dmsa2 = DeleteableMsa.createInstance( l2 );
+ dmsa2.deleteGapColumns( 0.5 );
+ if ( !dmsa2.getSequenceAsString( 0 ).toString().equals( "A---" ) ) {
+ return false;
+ }
+ if ( !dmsa2.getSequenceAsString( 1 ).toString().equals( "BB--" ) ) {
+ return false;
+ }
+ if ( !dmsa2.getSequenceAsString( 2 ).toString().equals( "CCC-" ) ) {
+ return false;
+ }
+ dmsa2.deleteGapColumns( 0.2 );
+ if ( !dmsa2.getSequenceAsString( 0 ).toString().equals( "A-" ) ) {
+ return false;
+ }
+ if ( !dmsa2.getSequenceAsString( 1 ).toString().equals( "BB" ) ) {
+ return false;
+ }
+ if ( !dmsa2.getSequenceAsString( 2 ).toString().equals( "CC" ) ) {
+ return false;
+ }
+ dmsa2.deleteGapColumns( 0 );
+ dmsa2.deleteRow( "a", false );
+ dmsa2.deleteRow( "b", false );
+ dmsa2.deleteRow( "f", false );
+ dmsa2.deleteRow( "e", false );
+ dmsa2.setIdentifier( 0, "new_c" );
+ dmsa2.setIdentifier( 1, "new_d" );
+ dmsa2.setResidueAt( 0, 0, 'x' );
+ final MolecularSequence s = dmsa2.deleteRow( "new_d", true );
+ if ( !s.getMolecularSequenceAsString().equals( "D" ) ) {
+ return false;
+ }
+ final Writer w = new StringWriter();
+ dmsa2.write( w, MSA_FORMAT.PHYLIP );
+ final String phylip = w.toString();
+ if ( !phylip.equals( "1 1" + ForesterUtil.LINE_SEPARATOR + "new_c x" + ForesterUtil.LINE_SEPARATOR ) ) {
+ System.out.println( phylip );
+ return false;
+ }
+ final Writer w2 = new StringWriter();
+ dmsa2.write( w2, MSA_FORMAT.FASTA );
+ final String fasta = w2.toString();
+ if ( !fasta.equals( ">new_c" + ForesterUtil.LINE_SEPARATOR + "x" + ForesterUtil.LINE_SEPARATOR ) ) {
+ System.out.println( fasta );
+ return false;
+ }