diff --git a/src/mol-io/writer/cif/encoder.ts b/src/mol-io/writer/cif/encoder.ts index 8654d4fc772f3460028f135b29936bfce40e7336..e37380d02f0e6c7daea7eefdb8ebd1046f57c7ff 100644 --- a/src/mol-io/writer/cif/encoder.ts +++ b/src/mol-io/writer/cif/encoder.ts @@ -14,6 +14,7 @@ import Encoder from '../encoder' // TODO: add "repeat encoding"? [[1, 2], [1, 2], [1, 2]] --- Repeat ---> [[1, 2], 3] // TODO: Add "higher level fields"? (i.e. generalization of repeat) // TODO: Add tensor field definition +// TODO: align "data blocks" to 8 byte offsets export const enum FieldType { Str, Int, Float diff --git a/src/mol-math/linear-algebra/_spec/tensor.spec.ts b/src/mol-math/linear-algebra/_spec/tensor.spec.ts index 7a1780d1d12551f07b51719c99c1d25863457bc0..1c5ace38f1fe4a5b8affb8aa6e874e396f9f297c 100644 --- a/src/mol-math/linear-algebra/_spec/tensor.spec.ts +++ b/src/mol-math/linear-algebra/_spec/tensor.spec.ts @@ -74,6 +74,7 @@ describe('tensor', () => { for (let i = 0; i < 3; i++) { for (let j = 0; j < 4; j++) { M.set(data, i, j, o); + expect(M.get(data, i, j)).toBe(o); exp[o] = o; o++; } @@ -91,6 +92,7 @@ describe('tensor', () => { for (let j = 0; j < 4; j++) { for (let i = 0; i < 3; i++) { M.set(data, i, j, o); + expect(M.get(data, i, j)).toBe(o); exp[o] = o; o++; } @@ -109,6 +111,7 @@ describe('tensor', () => { for (let j = 0; j < 4; j++) { for (let k = 0; k < 5; k++) { M.set(data, i, j, k, o); + expect(M.get(data, i, j, k)).toBe(o); exp[o] = o; o++; } @@ -128,6 +131,7 @@ describe('tensor', () => { for (let k = 0; k < 3; k++) { for (let j = 0; j < 3; j++) { M.set(data, i, j, k, o); + expect(M.get(data, i, j, k)).toBe(o); exp[o] = o; o++; } @@ -147,6 +151,7 @@ describe('tensor', () => { for (let i = 0; i < 3; i++) { for (let k = 0; k < 3; k++) { M.set(data, i, j, k, o); + expect(M.get(data, i, j, k)).toBe(o); exp[o] = o; o++; } @@ -165,6 +170,7 @@ describe('tensor', () => { for (let k = 0; k < 3; k++) { for (let i = 0; i < 3; i++) { M.set(data, i, j, k, o); + expect(M.get(data, i, j, k)).toBe(o); exp[o] = o; o++; } @@ -184,6 +190,7 @@ describe('tensor', () => { for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { M.set(data, i, j, k, o); + expect(M.get(data, i, j, k)).toBe(o); exp[o] = o; o++; } @@ -203,6 +210,7 @@ describe('tensor', () => { for (let j = 0; j < 3; j++) { for (let i = 0; i < 3; i++) { M.set(data, i, j, k, o); + expect(M.get(data, i, j, k)).toBe(o); exp[o] = o; o++; } @@ -211,4 +219,48 @@ describe('tensor', () => { expect(data).toEqual(exp); }); + + it('4d jikl', () => { + const M = T.Space([2, 3, 4, 5], [1, 0, 2, 3]); + const data = M.create(); + const exp = new Float64Array(2 * 3 * 4 * 5) + + let o = 0; + for (let j = 0; j < 3; j++) { + for (let i = 0; i < 2; i++) { + for (let k = 0; k < 4; k++) { + for (let l = 0; l < 5; l++) { + M.set(data, i, j, k, l, o); + expect(M.get(data, i, j, k, l)).toBe(o); + exp[o] = o; + o++; + } + } + } + } + + expect(data).toEqual(exp); + }); + + it('4d jilk', () => { + const M = T.Space([2, 3, 4, 5], [1, 0, 3, 2]); + const data = M.create(); + const exp = new Float64Array(2 * 3 * 4 * 5) + + let o = 0; + for (let j = 0; j < 3; j++) { + for (let i = 0; i < 2; i++) { + for (let l = 0; l < 5; l++) { + for (let k = 0; k < 4; k++) { + M.set(data, i, j, k, l, o); + expect(M.get(data, i, j, k, l)).toBe(o); + exp[o] = o; + o++; + } + } + } + } + + expect(data).toEqual(exp); + }); }); \ No newline at end of file