schema.ts 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /**
  2. * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author Alexander Rose <alexander.rose@weirdbyte.de>
  5. * @author David Sehnal <david.sehnal@gmail.com>
  6. */
  7. export interface Ccp4Header {
  8. /** number of columns (fastest changing) */
  9. NC: number
  10. /** number of rows */
  11. NR: number
  12. /** number of sections (slowest changing) */
  13. NS: number
  14. /**
  15. * 0 image : signed 8-bit bytes range -128 to 127
  16. * 1 image : 16-bit halfwords
  17. * 2 image : 32-bit reals
  18. * 3 transform : complex 16-bit integers
  19. * 4 transform : complex 32-bit reals
  20. * 6 image : unsigned 16-bit range 0 to 65535
  21. * 16 image: unsigned char * 3 (for rgb data, non-standard)
  22. *
  23. * Note: Mode 2 is the normal mode used in the CCP4 programs.
  24. * This parser only supports modes 0 and 2
  25. */
  26. MODE: number
  27. /** first column */
  28. NCSTART: number
  29. /** first row */
  30. NRSTART: number
  31. /** first section */
  32. NSSTART: number
  33. /** intervals along x */
  34. NX: number
  35. /** intervals along y */
  36. NY: number
  37. /** intervals along z */
  38. NZ: number
  39. /** x axis cell length (Angstroms in CCP4) */
  40. xLength: number
  41. /** y axis cell length (Angstroms in CCP4) */
  42. yLength: number
  43. /** z axis cell length (Angstroms in CCP4) */
  44. zLength: number
  45. /** alpha cell angle (Degrees) */
  46. alpha: number
  47. /** beta cell angle (Degrees) */
  48. beta: number
  49. /** gamma cell angle (Degrees) */
  50. gamma: number
  51. /** axis corresponds to columns (1,2,3 for X,Y,Z) */
  52. MAPC: number
  53. /** axis corresponds to rows (1,2,3 for X,Y,Z) */
  54. MAPR: number
  55. /** axis corresponds to sections (1,2,3 for X,Y,Z) */
  56. MAPS: number
  57. /** minimum density value */
  58. AMIN: number
  59. /** maximum density value */
  60. AMAX: number
  61. /** mean/average density value */
  62. AMEAN: number
  63. /** space group number */
  64. ISPG: number
  65. /** number of bytes used for storing symmetry operators */
  66. NSYMBT: number
  67. /** flag for skew transformation, =0 none, =1 if foll */
  68. LSKFLG: number
  69. /**
  70. * Skew matrix S (in order S11, S12, S13, S21 etc) if LSKFLG .ne. 0
  71. * May be used in CCP4 but not in MRC
  72. */
  73. SKWMAT: number[]
  74. /**
  75. * Skew translation t if LSKFLG != 0
  76. * Skew transformation is from standard orthogonal
  77. * coordinate frame (as used for atoms) to orthogonal
  78. * map frame, as Xo(map) = S * (Xo(atoms) - t)
  79. *
  80. * May be used in CCP4 but not in MRC
  81. */
  82. SKWTRN: number[]
  83. /** see https://github.com/uglymol/uglymol/blob/master/tools/mapmode2to0#L69 */
  84. userFlag1: number,
  85. userFlag2: number,
  86. /** x axis origin transformation (not used in CCP4) */
  87. originX: number
  88. /** y axis origin transformation (not used in CCP4) */
  89. originY: number
  90. /** z axis origin transformation (not used in CCP4) */
  91. originZ: number
  92. /** Character string 'MAP ' to identify file type */
  93. MAP: string
  94. /**
  95. * Machine stamp indicating machine type which wrote file,
  96. * 17 and 17 for big-endian or 68 and 65 for little-endian.
  97. */
  98. MACHST: number[]
  99. /** rms deviation of map from mean density */
  100. ARMS: number
  101. }
  102. /**
  103. * MRC
  104. * http://ami.scripps.edu/software/mrctools/mrc_specification.php
  105. * http://www2.mrc-lmb.cam.ac.uk/research/locally-developed-software/image-processing-software/#image
  106. * http://bio3d.colorado.edu/imod/doc/mrc_format.txt
  107. *
  108. * CCP4 (MAP)
  109. * http://www.ccp4.ac.uk/html/maplib.html
  110. *
  111. * MRC format does not use the skew transformation header records (words 25-37)
  112. * CCP4 format does not use the ORIGIN header records (words 50-52)
  113. */
  114. export interface Ccp4File {
  115. header: Ccp4Header
  116. values: Float32Array | Int16Array | Int8Array
  117. }