public void ReadFinalPump() { using (var reader = new PDBReader(ResourceLoader.GetAsStream(GetType(), "finalPump96.09.06.pdb"))) { var chemFile = reader.Read(builder.NewChemFile()); } }
public void TestProtein() { var filename = "NCDK.Data.PDB.Test-1crn.pdb"; var ins = ResourceLoader.GetAsStream(filename); var reader = new PDBReader(ins); Assert.IsNotNull(reader); var chemFile = (IChemFile)reader.Read(builder.NewChemFile()); Assert.IsNotNull(chemFile); Assert.AreEqual(1, chemFile.Count); var seq = chemFile[0]; Assert.IsNotNull(seq); Assert.AreEqual(1, seq.Count); var model = seq[0]; Assert.IsNotNull(model); Assert.AreEqual(1, model.MoleculeSet.Count()); var container = model.MoleculeSet[0]; Assert.IsTrue(container is IBioPolymer); var mol = (IBioPolymer)container; Assert.IsNotNull(mol); Assert.AreEqual(327, mol.Atoms.Count); Assert.AreEqual(46, mol.GetMonomerMap().Count()); Assert.IsNotNull(mol.GetMonomer("THRA1", "A")); Assert.AreEqual(7, mol.GetMonomer("THRA1", "A").Atoms.Count); Assert.IsNotNull(mol.GetMonomer("ILEA7", "A")); Assert.AreEqual(8, mol.GetMonomer("ILEA7", "A").Atoms.Count); var nAtom = mol.Atoms[94]; Assert.IsNotNull(nAtom); Assert.IsTrue(nAtom is IPDBAtom); var atom = (IPDBAtom)nAtom; Assert.AreEqual("C", atom.Symbol); Assert.AreEqual(95, atom.Serial.Value); Assert.AreEqual("CZ", atom.Name); Assert.AreEqual("PHE", atom.ResName); Assert.AreEqual("13", atom.ResSeq); Assert.AreEqual(1.0, atom.Occupancy.Value, 0.001); Assert.AreEqual(6.84, atom.TempFactor.Value, 0.001); }
public void MolfactoryRoundtripTest() { IAtomContainer original = TestMoleculeFactory.MakePyrrole(); SetCoordinatesToZero(original); StringWriter stringWriter = new StringWriter(); PDBWriter writer = new PDBWriter(stringWriter); writer.WriteMolecule(original); writer.Close(); string output = stringWriter.ToString(); PDBReader reader = new PDBReader(new StringReader(output)); var chemFile = reader.Read(builder.NewChemFile()); reader.Close(); IAtomContainer reconstructed = chemFile[0][0].MoleculeSet[0]; Assert.AreEqual(original.Atoms.Count, reconstructed.Atoms.Count); Assert.AreEqual(original.Bonds.Count, reconstructed.Bonds.Count); }
public void TestRoundTrip_fractionalCoordinates() { StringWriter sWriter = new StringWriter(); PDBWriter writer = new PDBWriter(sWriter); Crystal crystal = new Crystal(); crystal.A = new Vector3(0, 1, 0); crystal.B = new Vector3(1, 0, 0); crystal.C = new Vector3(0, 0, 2); IAtom atom = new Atom("C"); atom.FractionalPoint3D = new Vector3(0.1, 0.1, 0.3); crystal.Atoms.Add(atom); writer.Write(crystal); writer.Close(); string output = sWriter.ToString(); Assert.IsNotNull(output); Assert.IsTrue(output.Length > 0); PDBReader reader = new PDBReader(new StringReader("")); var chemFile = reader.Read(builder.NewChemFile()); reader.Close(); Assert.IsNotNull(chemFile); Assert.AreEqual(1, chemFile.Count); IChemSequence sequence = chemFile[0]; Assert.AreEqual(1, sequence.Count); IChemModel chemModel = sequence[0]; Assert.IsNotNull(chemModel); // can't do further testing as the PDBReader does not read // Crystal structures :( }
public void TestConnectRecords() { string data = "SEQRES 111111111111111111111111111111111111111111111111111111111111111 \n" + "ATOM 1 N SER A 326 103.777 74.304 20.170 1.00 21.58 N\n" + "ATOM 2 CA SER A 326 102.613 74.991 20.586 1.00 18.59 C\n" + "ATOM 3 C SER A 326 101.631 74.211 21.431 1.00 17.75 C\n" + "ATOM 4 O SER A 326 101.653 74.549 22.634 1.00 18.51 O\n" + "CONECT 1 4\n" + "CONECT 4 1\n" + "END \n"; IChemFile obj; using (var reader = new PDBReader(new StringReader(data))) { reader.IOSettings["UseRebondTool"].Setting = "false"; // UseRebondTool reader.IOSettings["ReadConnectSection"].Setting = "true"; // ReadConnectSection obj = builder.NewChemFile(); reader.Read(obj); } Assert.IsNotNull(obj); var bondCount = obj[0][0].MoleculeSet[0].Bonds.Count; Assert.AreEqual(1, bondCount); }
public void Test1D66() { var filename = "NCDK.Data.PDB.1D66.pdb"; var ins = ResourceLoader.GetAsStream(filename); var reader = new PDBReader(ins); Assert.IsNotNull(reader); var chemFile = (IChemFile)reader.Read(builder.NewChemFile()); Assert.IsNotNull(chemFile); Assert.AreEqual(1, chemFile.Count); var seq = chemFile[0]; Assert.IsNotNull(seq); Assert.AreEqual(1, seq.Count); var model = seq[0]; Assert.IsNotNull(model); Assert.AreEqual(1, model.MoleculeSet.Count()); var container = model.MoleculeSet[0]; Assert.IsTrue(container is IBioPolymer); var polymer = (IBioPolymer)container; Assert.IsTrue(polymer is IPDBPolymer); var pdb = (IPDBPolymer)polymer; Assert.AreEqual(4, pdb.GetStrandMap().Count); Assert.IsTrue(polymer.GetStrandNames().Contains("D")); Assert.IsTrue(polymer.GetStrand("D") is IPDBStrand, "Strand D is not a PDBStrand"); Assert.IsTrue(polymer.GetStrandNames().Contains("E")); Assert.IsTrue(polymer.GetStrand("E") is IPDBStrand, "Strand E is not a PDBStrand"); Assert.IsTrue(polymer.GetStrandNames().Contains("A")); Assert.IsTrue(polymer.GetStrand("A") is IPDBStrand, "Strand A is not a PDBStrand"); Assert.IsTrue(polymer.GetStrandNames().Contains("B")); Assert.IsTrue(polymer.GetStrand("B") is IPDBStrand, "Strand B is not a PDBStrand"); //Check to pick up all 4 strands Assert.AreEqual(polymer.GetStrandMap().Count, 4); //The following check is to see that the first monomers in a strand //can be accessed consecutively //i.e. their resSeq numbering follows that in the File //Strand A var strandA = (IPDBStrand)polymer.GetStrand("A"); var lst = strandA.GetMonomerNamesInSequentialOrder(); //Should be 57 monomers in strand A Assert.AreEqual(57, lst.Count); var lstIter = lst.GetEnumerator(); lstIter.MoveNext(); var monomer1 = lstIter.Current; var mono1 = strandA.GetMonomer(monomer1); Assert.IsNotNull(mono1); Assert.IsNotNull(mono1.MonomerName); Assert.IsTrue(mono1 is IPDBMonomer, "Monomer is not a PDBMonomer"); var pdbMonomer = (IPDBMonomer)mono1; Assert.AreEqual("A", pdbMonomer.ChainID); Assert.AreEqual("8", pdbMonomer.ResSeq); lstIter.MoveNext(); monomer1 = lstIter.Current; mono1 = strandA.GetMonomer(monomer1); pdbMonomer = (IPDBMonomer)mono1; Assert.AreEqual("A", pdbMonomer.ChainID); Assert.AreEqual("9", pdbMonomer.ResSeq); lstIter.MoveNext(); monomer1 = lstIter.Current; mono1 = strandA.GetMonomer(monomer1); pdbMonomer = (IPDBMonomer)mono1; Assert.AreEqual("A", pdbMonomer.ChainID); Assert.AreEqual("10", pdbMonomer.ResSeq); //Strand B var strandB = (IPDBStrand)polymer.GetStrand("B"); lst = strandB.GetMonomerNamesInSequentialOrder(); //Should be 57 monomers in strand B Assert.AreEqual(57, lst.Count); lstIter = lst.GetEnumerator(); lstIter.MoveNext(); monomer1 = lstIter.Current; mono1 = strandB.GetMonomer(monomer1); Assert.IsNotNull(mono1); Assert.IsNotNull(mono1.MonomerName); Assert.IsTrue(mono1 is IPDBMonomer, "Monomer is not a PDBMonomer"); pdbMonomer = (IPDBMonomer)mono1; Assert.AreEqual("B", pdbMonomer.ChainID); Assert.AreEqual("8", pdbMonomer.ResSeq); lstIter.MoveNext(); monomer1 = lstIter.Current; mono1 = strandB.GetMonomer(monomer1); pdbMonomer = (IPDBMonomer)mono1; Assert.AreEqual("B", pdbMonomer.ChainID); Assert.AreEqual("9", pdbMonomer.ResSeq); lstIter.MoveNext(); monomer1 = lstIter.Current; mono1 = strandB.GetMonomer(monomer1); pdbMonomer = (IPDBMonomer)mono1; Assert.AreEqual("B", pdbMonomer.ChainID); Assert.AreEqual("10", pdbMonomer.ResSeq); //Strand E var strandE = (IPDBStrand)polymer.GetStrand("E"); lst = strandE.GetMonomerNamesInSequentialOrder(); //Should be 19 monomers in strand E Assert.AreEqual(19, lst.Count); lstIter = lst.GetEnumerator(); lstIter.MoveNext(); monomer1 = lstIter.Current; mono1 = strandE.GetMonomer(monomer1); Assert.IsNotNull(mono1); Assert.IsNotNull(mono1.MonomerName); Assert.IsTrue(mono1 is IPDBMonomer, "Monomer is not a PDBMonomer"); pdbMonomer = (IPDBMonomer)mono1; Assert.AreEqual("E", pdbMonomer.ChainID); Assert.AreEqual("20", pdbMonomer.ResSeq); lstIter.MoveNext(); monomer1 = lstIter.Current; mono1 = strandE.GetMonomer(monomer1); pdbMonomer = (IPDBMonomer)mono1; Assert.AreEqual("E", pdbMonomer.ChainID); Assert.AreEqual("21", pdbMonomer.ResSeq); lstIter.MoveNext(); monomer1 = lstIter.Current; mono1 = strandE.GetMonomer(monomer1); pdbMonomer = (IPDBMonomer)mono1; Assert.AreEqual("E", pdbMonomer.ChainID); Assert.AreEqual("22", pdbMonomer.ResSeq); //Chain D should be 1,2,3...19 var strandD = (IPDBStrand)polymer.GetStrand("D"); lst = strandD.GetMonomerNamesInSequentialOrder(); //Should be 19 monomers in strand D Assert.AreEqual(19, lst.Count); lstIter = lst.GetEnumerator(); lstIter.MoveNext(); monomer1 = lstIter.Current; mono1 = strandD.GetMonomer(monomer1); Assert.IsNotNull(mono1); Assert.IsNotNull(mono1.MonomerName); Assert.IsTrue(mono1 is IPDBMonomer, "Monomer is not a PDBMonomer"); pdbMonomer = (IPDBMonomer)mono1; Assert.AreEqual("D", pdbMonomer.ChainID); Assert.AreEqual("1", pdbMonomer.ResSeq); lstIter.MoveNext(); monomer1 = lstIter.Current; mono1 = strandD.GetMonomer(monomer1); pdbMonomer = (IPDBMonomer)mono1; Assert.AreEqual("D", pdbMonomer.ChainID); Assert.AreEqual("2", pdbMonomer.ResSeq); lstIter.MoveNext(); monomer1 = lstIter.Current; mono1 = strandD.GetMonomer(monomer1); pdbMonomer = (IPDBMonomer)mono1; Assert.AreEqual("D", pdbMonomer.ChainID); Assert.AreEqual("3", pdbMonomer.ResSeq); // PDB Structures validation //Should have 6 helices Assert.AreEqual(6, pdb.GetStructures().Count()); }
public void Test114D() { var filename = "NCDK.Data.PDB.114D.pdb"; var ins = ResourceLoader.GetAsStream(filename); var reader = new PDBReader(ins); Assert.IsNotNull(reader); var chemFile = (IChemFile)reader.Read(builder.NewChemFile()); Assert.IsNotNull(chemFile); Assert.AreEqual(1, chemFile.Count); var seq = chemFile[0]; Assert.IsNotNull(seq); Assert.AreEqual(1, seq.Count); var model = seq[0]; Assert.IsNotNull(model); Assert.AreEqual(1, model.MoleculeSet.Count()); var container = model.MoleculeSet[0]; Assert.IsTrue(container is IBioPolymer); var polymer = (IBioPolymer)container; Assert.IsTrue(polymer.GetStrand("A") is IPDBStrand, "Strand A is not a PDBStrand"); var strandA = (IPDBStrand)polymer.GetStrand("A"); var lst = strandA.GetMonomerNamesInSequentialOrder().GetEnumerator(); lst.MoveNext(); var monomer1 = lst.Current; var mono1 = strandA.GetMonomer(monomer1); Assert.IsNotNull(mono1); Assert.IsNotNull(mono1.MonomerName); Assert.IsTrue(mono1 is IPDBMonomer, "Monomer is not a PDBMonomer"); var pdbMonomer = (IPDBMonomer)mono1; Assert.AreEqual(pdbMonomer.ResSeq, "1"); lst.MoveNext(); var monomer2 = lst.Current; var mono2 = strandA.GetMonomer(monomer2); Assert.IsTrue(mono2 is IPDBMonomer, "Monomer is not a PDBMonomer"); var pdbMonomer2 = (IPDBMonomer)mono2; Assert.AreEqual(pdbMonomer2.ResSeq, "2"); // chemical validation Assert.AreEqual(552, ChemFileManipulator.GetAtomCount(chemFile)); Assert.AreEqual(2, polymer.GetStrandMap().Count()); Assert.AreEqual(24, polymer.GetMonomerMap().Count()); Assert.IsTrue(polymer.GetStrandNames().Contains("A")); Assert.IsTrue(polymer.GetStrandNames().Contains("B")); Assert.IsFalse(polymer.GetStrandNames().Contains("C")); Assert.AreEqual(24, polymer.GetMonomerMap().Count()); Assert.IsTrue(polymer is IPDBPolymer); var pdb = (IPDBPolymer)polymer; // PDB validation Assert.AreEqual(0, pdb.GetStructures().Count()); }
public void TestPDBFileCoffein() { var filename = "NCDK.Data.PDB.coffeine.pdb"; var ins = ResourceLoader.GetAsStream(filename); var oReader = new PDBReader(ins); Assert.IsNotNull(oReader); var oChemFile = (IChemFile)oReader.Read(builder.NewChemFile()); Assert.IsNotNull(oChemFile); Assert.AreEqual(oChemFile.Count, 1); var oSeq = oChemFile[0]; Assert.IsNotNull(oSeq); Assert.AreEqual(oSeq.Count, 1); var oModel = oSeq[0]; Assert.IsNotNull(oModel); Assert.AreEqual(1, oModel.MoleculeSet.Count); var container = oModel.MoleculeSet[0]; Assert.IsFalse(container is IBioPolymer); Assert.IsTrue(container is IAtomContainer); var oMol = (IAtomContainer)container; Assert.IsNotNull(oMol); Assert.AreEqual(oMol.Atoms.Count, 14); var nAtom = oMol.Atoms[0]; Assert.IsNotNull(nAtom); Assert.IsTrue(nAtom is IPDBAtom); var oAtom = (IPDBAtom)nAtom; Assert.AreEqual("C", oAtom.Symbol); Assert.AreEqual(1, oAtom.Serial.Value); Assert.AreEqual("C1", oAtom.Name); Assert.AreEqual("MOL", oAtom.ResName); Assert.AreEqual("1", oAtom.ResSeq); Assert.AreEqual(1.0, oAtom.Occupancy.Value, 0); Assert.AreEqual(0.0, oAtom.TempFactor.Value, 0); nAtom = oMol.Atoms[3]; Assert.IsNotNull(nAtom); Assert.IsTrue(nAtom is IPDBAtom); oAtom = (IPDBAtom)nAtom; Assert.AreEqual("O", oAtom.Symbol); Assert.AreEqual(4, oAtom.Serial.Value); Assert.AreEqual("O4", oAtom.Name); Assert.AreEqual("MOL", oAtom.ResName); Assert.AreEqual("1", oAtom.ResSeq); Assert.AreEqual(1.0, oAtom.Occupancy.Value, 0); Assert.AreEqual(0.0, oAtom.TempFactor.Value, 0); nAtom = oMol.Atoms[oMol.Atoms.Count - 1]; Assert.IsNotNull(nAtom); Assert.IsTrue(nAtom is IPDBAtom); oAtom = (IPDBAtom)nAtom; Assert.AreEqual("N", oAtom.Symbol); Assert.AreEqual(14, oAtom.Serial.Value); Assert.AreEqual("N14", oAtom.Name); Assert.AreEqual("MOL", oAtom.ResName); Assert.AreEqual("1", oAtom.ResSeq); Assert.AreEqual(1.0, oAtom.Occupancy.Value, 0); Assert.AreEqual(0.0, oAtom.TempFactor.Value, 0); }