psf.spec.ts 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /**
  2. * Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author Alexander Rose <alexander.rose@weirdbyte.de>
  5. */
  6. import { parsePsf } from '../psf/parser';
  7. const psfString = `PSF CMAP CHEQ
  8. 2 !NTITLE
  9. * BETA HARPIN IN IMPLICIT SOLVENT
  10. * DATE: 11/22/10 16:54: 9 CREATED BY USER: aokur
  11. 42 !NATOM
  12. 1 ALA3 1 ALA CAY 24 -0.270000 12.0110 0 0.00000 -0.301140E-02
  13. 2 ALA3 1 ALA HY1 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  14. 3 ALA3 1 ALA HY2 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  15. 4 ALA3 1 ALA HY3 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  16. 5 ALA3 1 ALA CY 20 0.510000 12.0110 0 0.00000 -0.301140E-02
  17. 6 ALA3 1 ALA OY 70 -0.510000 15.9990 0 0.00000 -0.301140E-02
  18. 7 ALA3 1 ALA N 54 -0.470000 14.0070 0 0.00000 -0.301140E-02
  19. 8 ALA3 1 ALA HN 1 0.310000 1.00800 0 0.00000 -0.301140E-02
  20. 9 ALA3 1 ALA CA 22 0.700000E-01 12.0110 0 0.00000 -0.301140E-02
  21. 10 ALA3 1 ALA HA 6 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  22. 11 ALA3 1 ALA CB 24 -0.270000 12.0110 0 0.00000 -0.301140E-02
  23. 12 ALA3 1 ALA HB1 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  24. 13 ALA3 1 ALA HB2 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  25. 14 ALA3 1 ALA HB3 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  26. 15 ALA3 1 ALA C 20 0.510000 12.0110 0 0.00000 -0.301140E-02
  27. 16 ALA3 1 ALA O 70 -0.510000 15.9990 0 0.00000 -0.301140E-02
  28. 17 ALA3 2 ALA N 54 -0.470000 14.0070 0 0.00000 -0.301140E-02
  29. 18 ALA3 2 ALA HN 1 0.310000 1.00800 0 0.00000 -0.301140E-02
  30. 19 ALA3 2 ALA CA 22 0.700000E-01 12.0110 0 0.00000 -0.301140E-02
  31. 20 ALA3 2 ALA HA 6 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  32. 21 ALA3 2 ALA CB 24 -0.270000 12.0110 0 0.00000 -0.301140E-02
  33. 22 ALA3 2 ALA HB1 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  34. 23 ALA3 2 ALA HB2 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  35. 24 ALA3 2 ALA HB3 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  36. 25 ALA3 2 ALA C 20 0.510000 12.0110 0 0.00000 -0.301140E-02
  37. 26 ALA3 2 ALA O 70 -0.510000 15.9990 0 0.00000 -0.301140E-02
  38. 27 ALA3 3 ALA N 54 -0.470000 14.0070 0 0.00000 -0.301140E-02
  39. 28 ALA3 3 ALA HN 1 0.310000 1.00800 0 0.00000 -0.301140E-02
  40. 29 ALA3 3 ALA CA 22 0.700000E-01 12.0110 0 0.00000 -0.301140E-02
  41. 30 ALA3 3 ALA HA 6 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  42. 31 ALA3 3 ALA CB 24 -0.270000 12.0110 0 0.00000 -0.301140E-02
  43. 32 ALA3 3 ALA HB1 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  44. 33 ALA3 3 ALA HB2 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  45. 34 ALA3 3 ALA HB3 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  46. 35 ALA3 3 ALA C 20 0.510000 12.0110 0 0.00000 -0.301140E-02
  47. 36 ALA3 3 ALA O 70 -0.510000 15.9990 0 0.00000 -0.301140E-02
  48. 37 ALA3 3 ALA NT 54 -0.470000 14.0070 0 0.00000 -0.301140E-02
  49. 38 ALA3 3 ALA HNT 1 0.310000 1.00800 0 0.00000 -0.301140E-02
  50. 39 ALA3 3 ALA CAT 24 -0.110000 12.0110 0 0.00000 -0.301140E-02
  51. 40 ALA3 3 ALA HT1 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  52. 41 ALA3 3 ALA HT2 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  53. 42 ALA3 3 ALA HT3 3 0.900000E-01 1.00800 0 0.00000 -0.301140E-02
  54. 41 !NBOND: bonds
  55. 5 1 5 7 1 2 1 3
  56. 1 4 6 5 11 9 7 8
  57. 7 9 15 9 15 17 9 10
  58. 11 12 11 13 11 14 16 15
  59. 21 19 17 18 17 19 25 19
  60. 25 27 19 20 21 22 21 23
  61. 21 24 26 25 31 29 27 28
  62. 27 29 35 29 29 30 31 32
  63. 31 33 31 34 36 35 35 37
  64. 37 38 37 39 39 40 39 41
  65. 39 42
  66. `
  67. describe('psf reader', () => {
  68. it('basic', async () => {
  69. const parsed = await parsePsf(psfString).run();
  70. if (parsed.isError) {
  71. throw new Error(parsed.message)
  72. }
  73. const psfFile = parsed.result;
  74. const { id, title, atoms, bonds } = psfFile;
  75. expect(id).toBe('PSF CMAP CHEQ')
  76. expect(title).toEqual([
  77. 'BETA HARPIN IN IMPLICIT SOLVENT',
  78. 'DATE: 11/22/10 16:54: 9 CREATED BY USER: aokur'
  79. ])
  80. expect(atoms.atomId.value(0)).toBe(1)
  81. expect(atoms.atomId.value(41)).toBe(42)
  82. expect(atoms.segmentName.value(0)).toBe('ALA3')
  83. expect(atoms.residueId.value(0)).toBe(1)
  84. expect(atoms.residueId.value(41)).toBe(3)
  85. expect(atoms.residueName.value(0)).toBe('ALA')
  86. expect(atoms.atomName.value(0)).toBe('CAY')
  87. expect(atoms.atomName.value(41)).toBe('HT3')
  88. expect(atoms.atomType.value(0)).toBe('24')
  89. expect(atoms.atomType.value(41)).toBe('3')
  90. expect(atoms.charge.value(0)).toBeCloseTo(-0.270000, 0.00001)
  91. expect(atoms.charge.value(41)).toBeCloseTo(0.090000, 0.00001)
  92. expect(atoms.mass.value(0)).toBeCloseTo(12.0110, 0.00001)
  93. expect(atoms.mass.value(41)).toBeCloseTo(1.00800, 0.00001)
  94. expect(bonds.atomIdA.value(0)).toBe(5)
  95. expect(bonds.atomIdB.value(0)).toBe(1)
  96. expect(bonds.atomIdA.value(40)).toBe(39)
  97. expect(bonds.atomIdB.value(40)).toBe(42)
  98. });
  99. });