/** * Generates a simple MultipleAlignment: 3 structures with the same Atoms but incorreclty aligned * (offset of 1 position) without gaps. * * @return MultipleAlignment simple MSTA * @throws StructureException */ private MultipleAlignment simpleMSTA() throws StructureException { // Generate three identical Atom arrays List<Atom[]> atomArrays = new ArrayList<Atom[]>(52); for (int i = 0; i < 3; i++) atomArrays.add(makeDummyCA(52)); // Generate the incorrect alignment (0-1-2,1-2-3,etc) List<List<Integer>> alnRes = new ArrayList<List<Integer>>(3); for (int str = 0; str < 3; str++) { List<Integer> chain = new ArrayList<Integer>(50); for (int res = 0; res < 50; res++) chain.add(res + str); alnRes.add(chain); } // MultipleAlignment generation MultipleAlignment msa = new MultipleAlignmentImpl(); msa.getEnsemble().setAtomArrays(atomArrays); BlockSet bs = new BlockSetImpl(msa); Block b = new BlockImpl(bs); b.setAlignRes(alnRes); // We want the identity transfromations to maintain the missalignment Matrix4d ident = new Matrix4d(); ident.setIdentity(); msa.setTransformations(Arrays.asList(ident, ident, ident)); return msa; }
/** * Generates a simple MultipleAlignment: 3 structures with the same Atoms but incorreclty aligned * with gaps. * * @return MultipleAlignment gapped MSTA * @throws StructureException */ private MultipleAlignment gappedMSTA() throws StructureException { // Generate three identical Atom arrays List<Atom[]> atomArrays = new ArrayList<Atom[]>(30); for (int i = 0; i < 3; i++) atomArrays.add(makeDummyCA(30)); // Generate alignment with nulls and some missalignments List<List<Integer>> alnRes = new ArrayList<List<Integer>>(3); List<Integer> chain1 = Arrays.asList(1, 2, 3, 5, 8, 10, 12, 15, 17, 19, 22, null, 24, 27); List<Integer> chain2 = Arrays.asList(1, null, 3, 6, 9, 11, 12, 15, null, 18, 22, 24, 26, 28); List<Integer> chain3 = Arrays.asList(1, 2, 4, 7, 9, 10, null, 15, null, 17, 22, 24, 26, 28); alnRes.add(chain1); alnRes.add(chain2); alnRes.add(chain3); // MultipleAlignment generation MultipleAlignment msa = new MultipleAlignmentImpl(); msa.getEnsemble().setAtomArrays(atomArrays); BlockSet bs = new BlockSetImpl(msa); Block b = new BlockImpl(bs); b.setAlignRes(alnRes); // We want the identity transfromations to mantain the missalignments Matrix4d ident = new Matrix4d(); ident.setIdentity(); msa.setTransformations(Arrays.asList(ident, ident, ident)); return msa; }
/** * Generates an identity MultipleAlignment: 3 structures with the same Atoms and perfectly * aligned, so that TM-score = 1 and RMSD = 0. * * @return MultipleAlignment identity * @throws StructureException */ private MultipleAlignment identityMSTA() throws StructureException { // Generate the identical Atom arrays List<Atom[]> atomArrays = new ArrayList<Atom[]>(20); for (int i = 0; i < 3; i++) atomArrays.add(makeDummyCA(20)); // Generate the identity alignment (1-1-1,2-2-2,etc) List<List<Integer>> alnRes = new ArrayList<List<Integer>>(3); for (int str = 0; str < 3; str++) { List<Integer> chain = new ArrayList<Integer>(20); for (int res = 0; res < 20; res++) chain.add(res); alnRes.add(chain); } // MultipleAlignment generation MultipleAlignment msa = new MultipleAlignmentImpl(); msa.getEnsemble().setAtomArrays(atomArrays); BlockSet bs = new BlockSetImpl(msa); Block b = new BlockImpl(bs); b.setAlignRes(alnRes); // Superimpose the alignment (which should give the identity matrices) ReferenceSuperimposer imposer = new ReferenceSuperimposer(); imposer.superimpose(msa); return msa; }