clustal-js 2.0.6 → 2.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -4,51 +4,51 @@ exports.parseClustalIter = parseClustalIter;
4
4
  exports.parsePairwiseIter = parsePairwiseIter;
5
5
  exports.parse = parse;
6
6
  exports.parsePairwise = parsePairwise;
7
- const pairwise_1 = require("./pairwise");
8
- const util_1 = require("./util");
7
+ var pairwise_ts_1 = require("./pairwise.js");
8
+ var util_ts_1 = require("./util.js");
9
9
  function parseClustalIter(arr) {
10
- const line = (0, util_1.getFirstNonEmptyLine)(arr);
10
+ var line = (0, util_ts_1.getFirstNonEmptyLine)(arr);
11
11
  if (!line) {
12
12
  throw new Error('Empty file received');
13
13
  }
14
- const header = (0, util_1.parseHeader)(line);
15
- const res = (0, util_1.parseBlocks)(arr);
14
+ var header = (0, util_ts_1.parseHeader)(line);
15
+ var res = (0, util_ts_1.parseBlocks)(arr);
16
16
  if (res === undefined) {
17
17
  throw new Error('No blocks parsed');
18
18
  }
19
- const alns = res.seqs.map((n, index) => ({ id: res.ids[index], seq: n }));
20
- const { consensus } = res;
19
+ var alns = res.seqs.map(function (n, index) { return ({ id: res.ids[index], seq: n }); });
20
+ var consensus = res.consensus;
21
21
  if (consensus.length != alns[0].seq.length) {
22
- throw new Error(`Consensus length != sequence length. Con ${consensus.length} seq ${alns[0].seq.length}`);
22
+ throw new Error("Consensus length != sequence length. Con ".concat(consensus.length, " seq ").concat(alns[0].seq.length));
23
23
  }
24
- return { consensus, alns, header };
24
+ return { consensus: consensus, alns: alns, header: header };
25
25
  }
26
26
  function parsePairwiseIter(arr) {
27
- const res = (0, pairwise_1.parsePairwiseBlocks)(arr.split('\n')[Symbol.iterator]());
27
+ var res = (0, pairwise_ts_1.parsePairwiseBlocks)(arr.split('\n')[Symbol.iterator]());
28
28
  if (res === undefined) {
29
29
  throw new Error('No blocks parsed');
30
30
  }
31
- const alns = res.seqs.map((n, index) => ({ id: res.ids[index], seq: n }));
32
- const { consensus } = res;
31
+ var alns = res.seqs.map(function (n, index) { return ({ id: res.ids[index], seq: n }); });
32
+ var consensus = res.consensus;
33
33
  if (consensus.length != alns[0].seq.length) {
34
- throw new Error(`Consensus length != sequence length. Con ${consensus.length} seq ${alns[0].seq.length}`);
34
+ throw new Error("Consensus length != sequence length. Con ".concat(consensus.length, " seq ").concat(alns[0].seq.length));
35
35
  }
36
36
  if (alns.length !== 2) {
37
37
  throw new Error('More than two sequences in pairwise alignment');
38
38
  }
39
39
  return {
40
- consensus,
40
+ consensus: consensus,
41
41
  alns: alns,
42
42
  };
43
43
  }
44
44
  function parse(contents) {
45
- const iter = contents.split('\n')[Symbol.iterator]();
45
+ var iter = contents.split('\n')[Symbol.iterator]();
46
46
  return parseClustalIter(iter);
47
47
  }
48
48
  function parsePairwise(contents) {
49
49
  return parsePairwiseIter(contents
50
50
  .split('\n')
51
- .filter(f => !f.startsWith('#'))
51
+ .filter(function (f) { return !f.startsWith('#'); })
52
52
  .join('\n'));
53
53
  }
54
54
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAGA,4CAqBC;AAMD,8CAoBC;AAED,sBAGC;AAED,sCAOC;AAhED,yCAAgD;AAChD,iCAAuE;AAEvE,SAAgB,gBAAgB,CAAC,GAAqB;IACpD,MAAM,IAAI,GAAG,IAAA,2BAAoB,EAAC,GAAG,CAAC,CAAA;IACtC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACxC,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,kBAAW,EAAC,IAAI,CAAC,CAAA;IAEhC,MAAM,GAAG,GAAG,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACzE,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAA;IACzB,IAAI,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,4CAA4C,SAAS,CAAC,MAAM,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CACzF,CAAA;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;AACpC,CAAC;AAMD,SAAgB,iBAAiB,CAAC,GAAW;IAC3C,MAAM,GAAG,GAAG,IAAA,8BAAmB,EAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACnE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACzE,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAA;IACzB,IAAI,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,4CAA4C,SAAS,CAAC,MAAM,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CACzF,CAAA;IACH,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAClE,CAAC;IACD,OAAO;QACL,SAAS;QACT,IAAI,EAAE,IAAkB;KACzB,CAAA;AACH,CAAC;AAED,SAAgB,KAAK,CAAC,QAAgB;IACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;IACpD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAA;AAC/B,CAAC;AAED,SAAgB,aAAa,CAAC,QAAgB;IAC5C,OAAO,iBAAiB,CACtB,QAAQ;SACL,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SAC/B,IAAI,CAAC,IAAI,CAAC,CACd,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"type": "commonjs"}
@@ -1,4 +1,4 @@
1
- export declare function getSeqBounds(line: string): readonly [number, number];
1
+ export declare function getSeqBounds(line: string, seqIndex: number): readonly [number, number];
2
2
  export declare function parsePairwiseBlock(arr: Iterator<string>): {
3
3
  ids: string[];
4
4
  seqs: string[];
package/dist/pairwise.js CHANGED
@@ -3,50 +3,60 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getSeqBounds = getSeqBounds;
4
4
  exports.parsePairwiseBlock = parsePairwiseBlock;
5
5
  exports.parsePairwiseBlocks = parsePairwiseBlocks;
6
- const util_1 = require("./util");
7
- function getSeqBounds(line) {
8
- const fields = line.split(/\s+/);
9
- const k1 = fields[0].length + fields[1].length;
10
- const temp = line.slice(k1);
11
- const s = k1 + temp.indexOf(fields[2]);
12
- const e = s + fields[2].length;
13
- return [s, e];
6
+ var util_ts_1 = require("./util.js");
7
+ function isSequenceLine(line) {
8
+ var trimmed = line.trim();
9
+ return /^\w+\s+/.test(trimmed);
10
+ }
11
+ function hasPositionNumbers(fields) {
12
+ return fields.length >= 3 && /^\d+$/.test(fields[1]);
13
+ }
14
+ function getSeqBounds(line, seqIndex) {
15
+ var trimmed = line.trim();
16
+ var fields = trimmed.split(/\s+/);
17
+ var seq = fields[seqIndex];
18
+ var seqStart = line.indexOf(seq, line.indexOf(fields[0]) + fields[0].length);
19
+ return [seqStart, seqStart + seq.length];
14
20
  }
15
21
  // Use the first block to get the sequence identifiers
16
22
  function parsePairwiseBlock(arr) {
17
- let line = (0, util_1.getFirstNonEmptyLine)(arr);
18
- const block = [];
19
- let consensusLine = '';
23
+ var line = (0, util_ts_1.getFirstNonEmptyLine)(arr);
24
+ var block = [];
25
+ var consensusLine = '';
20
26
  if (!line) {
21
27
  return undefined;
22
28
  }
23
29
  while (line) {
24
- if (line.startsWith(' ')) {
25
- consensusLine = line;
30
+ if (isSequenceLine(line)) {
31
+ block.push(line);
26
32
  }
27
33
  else {
28
- block.push(line);
34
+ consensusLine = line;
29
35
  }
30
36
  line = arr.next().value;
31
37
  }
32
- const [start, end] = getSeqBounds(block[0]);
33
- const fields = block.map(s => s.split(/\s+/));
34
- const ids = fields.map(s => s[0]);
35
- const seqs = fields.map(s => s[2]);
36
- let consensus = consensusLine.slice(start, end);
38
+ if (block.length === 0) {
39
+ return undefined;
40
+ }
41
+ var fields = block.map(function (s) { return s.trim().split(/\s+/); });
42
+ var seqIndex = hasPositionNumbers(fields[0]) ? 2 : 1;
43
+ var _a = getSeqBounds(block[0], seqIndex), start = _a[0], end = _a[1];
44
+ var ids = fields.map(function (s) { return s[0]; });
45
+ var seqs = fields.map(function (s) { return s[seqIndex]; });
46
+ var consensus = consensusLine.slice(start, end);
37
47
  // handle if the consensus trailing whitespace got trimmed
38
- const remainder = seqs[0].length - consensus.length;
39
- if (remainder) {
48
+ var remainder = seqs[0].length - consensus.length;
49
+ if (remainder > 0) {
40
50
  consensus += ' '.repeat(remainder);
41
51
  }
42
- return { ids, seqs, consensus };
52
+ return { ids: ids, seqs: seqs, consensus: consensus };
43
53
  }
44
54
  function parsePairwiseBlocks(arr) {
45
- let block;
46
- const res = parsePairwiseBlock(arr);
55
+ var block;
56
+ var res = parsePairwiseBlock(arr);
47
57
  if (res !== undefined) {
48
58
  while ((block = parsePairwiseBlock(arr))) {
49
- for (let i = 0; i < block.seqs.length; i++) {
59
+ for (var i = 0; i < block.seqs.length; i++) {
50
60
  res.seqs[i] += block.seqs[i];
51
61
  }
52
62
  res.consensus += block.consensus;
@@ -1 +1 @@
1
- {"version":3,"file":"pairwise.js","sourceRoot":"","sources":["../src/pairwise.ts"],"names":[],"mappings":";;AAEA,oCAOC;AAGD,gDA4BC;AAED,kDAYC;AAtDD,iCAA6C;AAE7C,SAAgB,YAAY,CAAC,IAAY;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAChC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC3B,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC9B,OAAO,CAAC,CAAC,EAAE,CAAC,CAAU,CAAA;AACxB,CAAC;AAED,sDAAsD;AACtD,SAAgB,kBAAkB,CAAC,GAAqB;IACtD,IAAI,IAAI,GAAG,IAAA,2BAAoB,EAAC,GAAG,CAAC,CAAA;IACpC,MAAM,KAAK,GAAG,EAAE,CAAA;IAChB,IAAI,aAAa,GAAG,EAAE,CAAA;IACtB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,aAAa,GAAG,IAAI,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;QACD,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAA;IACzB,CAAC;IACD,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAClC,IAAI,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAE/C,0DAA0D;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;IACnD,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;AACjC,CAAC;AAED,SAAgB,mBAAmB,CAAC,GAAqB;IACvD,IAAI,KAAK,CAAA;IACT,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACnC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC9B,CAAC;YACD,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAA;QAClC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"pairwise.js","sourceRoot":"","sources":["../src/pairwise.ts"],"names":[],"mappings":"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"}
package/dist/util.js CHANGED
@@ -7,37 +7,37 @@ exports.getSeqBounds = getSeqBounds;
7
7
  exports.parseBlock = parseBlock;
8
8
  exports.parseBlocks = parseBlocks;
9
9
  function parseVersion(line) {
10
- const res = /\(?(\d+(\.\d+)+)\)?/.exec(line);
10
+ var res = /\(?(\d+(\.\d+)+)\)?/.exec(line);
11
11
  return res && res.length > 1 ? res[1] : '';
12
12
  }
13
13
  function parseHeader(info) {
14
- const knownHeaders = ['CLUSTAL', 'PROBCONS', 'MUSCLE', 'MSAPROBS', 'Kalign'];
15
- if (!knownHeaders.some(l => info.startsWith(l))) {
16
- console.warn(`${info} is not a known CLUSTAL header: ${knownHeaders.join(',')}, proceeding but could indicate an issue`);
14
+ var knownHeaders = ['CLUSTAL', 'PROBCONS', 'MUSCLE', 'MSAPROBS', 'Kalign'];
15
+ if (!knownHeaders.some(function (l) { return info.startsWith(l); })) {
16
+ console.warn("".concat(info, " is not a known CLUSTAL header: ").concat(knownHeaders.join(','), ", proceeding but could indicate an issue"));
17
17
  }
18
- const version = parseVersion(info);
19
- return { info, version };
18
+ var version = parseVersion(info);
19
+ return { info: info, version: version };
20
20
  }
21
21
  function getFirstNonEmptyLine(arr) {
22
22
  // There should be two blank lines after the header line
23
- let line = arr.next();
23
+ var line = arr.next();
24
24
  while (!line.done && line.value.trim() === '') {
25
25
  line = arr.next();
26
26
  }
27
27
  return line.value;
28
28
  }
29
29
  function getSeqBounds(line) {
30
- const fields = line.split(/\s+/);
31
- const temp = line.slice(fields[0].length);
32
- const s = fields[0].length + temp.indexOf(fields[1]);
33
- const e = s + fields[1].length;
30
+ var fields = line.split(/\s+/);
31
+ var temp = line.slice(fields[0].length);
32
+ var s = fields[0].length + temp.indexOf(fields[1]);
33
+ var e = s + fields[1].length;
34
34
  return [s, e];
35
35
  }
36
36
  // Use the first block to get the sequence identifiers
37
37
  function parseBlock(arr) {
38
- let line = getFirstNonEmptyLine(arr);
39
- const block = [];
40
- let consensusLine = '';
38
+ var line = getFirstNonEmptyLine(arr);
39
+ var block = [];
40
+ var consensusLine = '';
41
41
  if (!line) {
42
42
  return undefined;
43
43
  }
@@ -50,24 +50,24 @@ function parseBlock(arr) {
50
50
  }
51
51
  line = arr.next().value;
52
52
  }
53
- const [start, end] = getSeqBounds(block[0]);
54
- const fields = block.map(s => s.split(/\s+/));
55
- const ids = fields.map(s => s[0]);
56
- const seqs = block.map(s => s.slice(start, end));
57
- let consensus = consensusLine.slice(start, end);
53
+ var _a = getSeqBounds(block[0]), start = _a[0], end = _a[1];
54
+ var fields = block.map(function (s) { return s.split(/\s+/); });
55
+ var ids = fields.map(function (s) { return s[0]; });
56
+ var seqs = block.map(function (s) { return s.slice(start, end); });
57
+ var consensus = consensusLine.slice(start, end);
58
58
  // handle if the consensus trailing whitespace got trimmed
59
- const remainder = seqs[0].length - consensus.length;
59
+ var remainder = seqs[0].length - consensus.length;
60
60
  if (remainder) {
61
61
  consensus += ' '.repeat(remainder);
62
62
  }
63
- return { ids, seqs, consensus };
63
+ return { ids: ids, seqs: seqs, consensus: consensus };
64
64
  }
65
65
  function parseBlocks(arr) {
66
- let block;
67
- const res = parseBlock(arr);
66
+ var block;
67
+ var res = parseBlock(arr);
68
68
  if (res !== undefined) {
69
69
  while ((block = parseBlock(arr))) {
70
- for (let i = 0; i < block.seqs.length; i++) {
70
+ for (var i = 0; i < block.seqs.length; i++) {
71
71
  res.seqs[i] += block.seqs[i];
72
72
  }
73
73
  res.consensus += block.consensus;
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
package/esm/index.js CHANGED
@@ -1,48 +1,54 @@
1
- import { parsePairwiseBlocks } from './pairwise';
2
- import { parseBlocks, parseHeader, getFirstNonEmptyLine } from './util';
3
- export function parseClustalIter(arr) {
4
- const line = getFirstNonEmptyLine(arr);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseClustalIter = parseClustalIter;
4
+ exports.parsePairwiseIter = parsePairwiseIter;
5
+ exports.parse = parse;
6
+ exports.parsePairwise = parsePairwise;
7
+ var pairwise_ts_1 = require("./pairwise.js");
8
+ var util_ts_1 = require("./util.js");
9
+ function parseClustalIter(arr) {
10
+ var line = (0, util_ts_1.getFirstNonEmptyLine)(arr);
5
11
  if (!line) {
6
12
  throw new Error('Empty file received');
7
13
  }
8
- const header = parseHeader(line);
9
- const res = parseBlocks(arr);
14
+ var header = (0, util_ts_1.parseHeader)(line);
15
+ var res = (0, util_ts_1.parseBlocks)(arr);
10
16
  if (res === undefined) {
11
17
  throw new Error('No blocks parsed');
12
18
  }
13
- const alns = res.seqs.map((n, index) => ({ id: res.ids[index], seq: n }));
14
- const { consensus } = res;
19
+ var alns = res.seqs.map(function (n, index) { return ({ id: res.ids[index], seq: n }); });
20
+ var consensus = res.consensus;
15
21
  if (consensus.length != alns[0].seq.length) {
16
- throw new Error(`Consensus length != sequence length. Con ${consensus.length} seq ${alns[0].seq.length}`);
22
+ throw new Error("Consensus length != sequence length. Con ".concat(consensus.length, " seq ").concat(alns[0].seq.length));
17
23
  }
18
- return { consensus, alns, header };
24
+ return { consensus: consensus, alns: alns, header: header };
19
25
  }
20
- export function parsePairwiseIter(arr) {
21
- const res = parsePairwiseBlocks(arr.split('\n')[Symbol.iterator]());
26
+ function parsePairwiseIter(arr) {
27
+ var res = (0, pairwise_ts_1.parsePairwiseBlocks)(arr.split('\n')[Symbol.iterator]());
22
28
  if (res === undefined) {
23
29
  throw new Error('No blocks parsed');
24
30
  }
25
- const alns = res.seqs.map((n, index) => ({ id: res.ids[index], seq: n }));
26
- const { consensus } = res;
31
+ var alns = res.seqs.map(function (n, index) { return ({ id: res.ids[index], seq: n }); });
32
+ var consensus = res.consensus;
27
33
  if (consensus.length != alns[0].seq.length) {
28
- throw new Error(`Consensus length != sequence length. Con ${consensus.length} seq ${alns[0].seq.length}`);
34
+ throw new Error("Consensus length != sequence length. Con ".concat(consensus.length, " seq ").concat(alns[0].seq.length));
29
35
  }
30
36
  if (alns.length !== 2) {
31
37
  throw new Error('More than two sequences in pairwise alignment');
32
38
  }
33
39
  return {
34
- consensus,
40
+ consensus: consensus,
35
41
  alns: alns,
36
42
  };
37
43
  }
38
- export function parse(contents) {
39
- const iter = contents.split('\n')[Symbol.iterator]();
44
+ function parse(contents) {
45
+ var iter = contents.split('\n')[Symbol.iterator]();
40
46
  return parseClustalIter(iter);
41
47
  }
42
- export function parsePairwise(contents) {
48
+ function parsePairwise(contents) {
43
49
  return parsePairwiseIter(contents
44
50
  .split('\n')
45
- .filter(f => !f.startsWith('#'))
51
+ .filter(function (f) { return !f.startsWith('#'); })
46
52
  .join('\n'));
47
53
  }
48
54
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/esm/pairwise.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare function getSeqBounds(line: string): readonly [number, number];
1
+ export declare function getSeqBounds(line: string, seqIndex: number): readonly [number, number];
2
2
  export declare function parsePairwiseBlock(arr: Iterator<string>): {
3
3
  ids: string[];
4
4
  seqs: string[];
package/esm/pairwise.js CHANGED
@@ -1,47 +1,62 @@
1
- import { getFirstNonEmptyLine } from './util';
2
- export function getSeqBounds(line) {
3
- const fields = line.split(/\s+/);
4
- const k1 = fields[0].length + fields[1].length;
5
- const temp = line.slice(k1);
6
- const s = k1 + temp.indexOf(fields[2]);
7
- const e = s + fields[2].length;
8
- return [s, e];
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSeqBounds = getSeqBounds;
4
+ exports.parsePairwiseBlock = parsePairwiseBlock;
5
+ exports.parsePairwiseBlocks = parsePairwiseBlocks;
6
+ var util_ts_1 = require("./util.js");
7
+ function isSequenceLine(line) {
8
+ var trimmed = line.trim();
9
+ return /^\w+\s+/.test(trimmed);
10
+ }
11
+ function hasPositionNumbers(fields) {
12
+ return fields.length >= 3 && /^\d+$/.test(fields[1]);
13
+ }
14
+ function getSeqBounds(line, seqIndex) {
15
+ var trimmed = line.trim();
16
+ var fields = trimmed.split(/\s+/);
17
+ var seq = fields[seqIndex];
18
+ var seqStart = line.indexOf(seq, line.indexOf(fields[0]) + fields[0].length);
19
+ return [seqStart, seqStart + seq.length];
9
20
  }
10
21
  // Use the first block to get the sequence identifiers
11
- export function parsePairwiseBlock(arr) {
12
- let line = getFirstNonEmptyLine(arr);
13
- const block = [];
14
- let consensusLine = '';
22
+ function parsePairwiseBlock(arr) {
23
+ var line = (0, util_ts_1.getFirstNonEmptyLine)(arr);
24
+ var block = [];
25
+ var consensusLine = '';
15
26
  if (!line) {
16
27
  return undefined;
17
28
  }
18
29
  while (line) {
19
- if (line.startsWith(' ')) {
20
- consensusLine = line;
30
+ if (isSequenceLine(line)) {
31
+ block.push(line);
21
32
  }
22
33
  else {
23
- block.push(line);
34
+ consensusLine = line;
24
35
  }
25
36
  line = arr.next().value;
26
37
  }
27
- const [start, end] = getSeqBounds(block[0]);
28
- const fields = block.map(s => s.split(/\s+/));
29
- const ids = fields.map(s => s[0]);
30
- const seqs = fields.map(s => s[2]);
31
- let consensus = consensusLine.slice(start, end);
38
+ if (block.length === 0) {
39
+ return undefined;
40
+ }
41
+ var fields = block.map(function (s) { return s.trim().split(/\s+/); });
42
+ var seqIndex = hasPositionNumbers(fields[0]) ? 2 : 1;
43
+ var _a = getSeqBounds(block[0], seqIndex), start = _a[0], end = _a[1];
44
+ var ids = fields.map(function (s) { return s[0]; });
45
+ var seqs = fields.map(function (s) { return s[seqIndex]; });
46
+ var consensus = consensusLine.slice(start, end);
32
47
  // handle if the consensus trailing whitespace got trimmed
33
- const remainder = seqs[0].length - consensus.length;
34
- if (remainder) {
48
+ var remainder = seqs[0].length - consensus.length;
49
+ if (remainder > 0) {
35
50
  consensus += ' '.repeat(remainder);
36
51
  }
37
- return { ids, seqs, consensus };
52
+ return { ids: ids, seqs: seqs, consensus: consensus };
38
53
  }
39
- export function parsePairwiseBlocks(arr) {
40
- let block;
41
- const res = parsePairwiseBlock(arr);
54
+ function parsePairwiseBlocks(arr) {
55
+ var block;
56
+ var res = parsePairwiseBlock(arr);
42
57
  if (res !== undefined) {
43
58
  while ((block = parsePairwiseBlock(arr))) {
44
- for (let i = 0; i < block.seqs.length; i++) {
59
+ for (var i = 0; i < block.seqs.length; i++) {
45
60
  res.seqs[i] += block.seqs[i];
46
61
  }
47
62
  res.consensus += block.consensus;
@@ -1 +1 @@
1
- {"version":3,"file":"pairwise.js","sourceRoot":"","sources":["../src/pairwise.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pairwise.js","sourceRoot":"","sources":["../src/pairwise.ts"],"names":[],"mappings":";;AAWA,oCAMC;AAGD,gDAkCC;AAED,kDAYC;AApED,qCAAgD;AAEhD,SAAS,cAAc,CAAC,IAAY;IAClC,IAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAC3B,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAgB;IAC1C,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACtD,CAAC;AAED,SAAgB,YAAY,CAAC,IAAY,EAAE,QAAgB;IACzD,IAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAC3B,IAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACnC,IAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC5B,IAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAC9E,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAU,CAAA;AACnD,CAAC;AAED,sDAAsD;AACtD,SAAgB,kBAAkB,CAAC,GAAqB;IACtD,IAAI,IAAI,GAAG,IAAA,8BAAoB,EAAC,GAAG,CAAC,CAAA;IACpC,IAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,aAAa,GAAG,EAAE,CAAA;IACtB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,IAAI,CAAA;QACtB,CAAC;QACD,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAA;IACzB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAArB,CAAqB,CAAC,CAAA;IACpD,IAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAChD,IAAA,KAAe,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAA9C,KAAK,QAAA,EAAE,GAAG,QAAoC,CAAA;IACrD,IAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,CAAC,EAAJ,CAAI,CAAC,CAAA;IACjC,IAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,CAAC,EAAX,CAAW,CAAC,CAAA;IACzC,IAAI,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAE/C,0DAA0D;IAC1D,IAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;IACnD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,EAAE,GAAG,KAAA,EAAE,IAAI,MAAA,EAAE,SAAS,WAAA,EAAE,CAAA;AACjC,CAAC;AAED,SAAgB,mBAAmB,CAAC,GAAqB;IACvD,IAAI,KAAK,CAAA;IACT,IAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACnC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC9B,CAAC;YACD,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAA;QAClC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
package/esm/util.js CHANGED
@@ -1,35 +1,43 @@
1
- export function parseVersion(line) {
2
- const res = /\(?(\d+(\.\d+)+)\)?/.exec(line);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseVersion = parseVersion;
4
+ exports.parseHeader = parseHeader;
5
+ exports.getFirstNonEmptyLine = getFirstNonEmptyLine;
6
+ exports.getSeqBounds = getSeqBounds;
7
+ exports.parseBlock = parseBlock;
8
+ exports.parseBlocks = parseBlocks;
9
+ function parseVersion(line) {
10
+ var res = /\(?(\d+(\.\d+)+)\)?/.exec(line);
3
11
  return res && res.length > 1 ? res[1] : '';
4
12
  }
5
- export function parseHeader(info) {
6
- const knownHeaders = ['CLUSTAL', 'PROBCONS', 'MUSCLE', 'MSAPROBS', 'Kalign'];
7
- if (!knownHeaders.some(l => info.startsWith(l))) {
8
- console.warn(`${info} is not a known CLUSTAL header: ${knownHeaders.join(',')}, proceeding but could indicate an issue`);
13
+ function parseHeader(info) {
14
+ var knownHeaders = ['CLUSTAL', 'PROBCONS', 'MUSCLE', 'MSAPROBS', 'Kalign'];
15
+ if (!knownHeaders.some(function (l) { return info.startsWith(l); })) {
16
+ console.warn("".concat(info, " is not a known CLUSTAL header: ").concat(knownHeaders.join(','), ", proceeding but could indicate an issue"));
9
17
  }
10
- const version = parseVersion(info);
11
- return { info, version };
18
+ var version = parseVersion(info);
19
+ return { info: info, version: version };
12
20
  }
13
- export function getFirstNonEmptyLine(arr) {
21
+ function getFirstNonEmptyLine(arr) {
14
22
  // There should be two blank lines after the header line
15
- let line = arr.next();
23
+ var line = arr.next();
16
24
  while (!line.done && line.value.trim() === '') {
17
25
  line = arr.next();
18
26
  }
19
27
  return line.value;
20
28
  }
21
- export function getSeqBounds(line) {
22
- const fields = line.split(/\s+/);
23
- const temp = line.slice(fields[0].length);
24
- const s = fields[0].length + temp.indexOf(fields[1]);
25
- const e = s + fields[1].length;
29
+ function getSeqBounds(line) {
30
+ var fields = line.split(/\s+/);
31
+ var temp = line.slice(fields[0].length);
32
+ var s = fields[0].length + temp.indexOf(fields[1]);
33
+ var e = s + fields[1].length;
26
34
  return [s, e];
27
35
  }
28
36
  // Use the first block to get the sequence identifiers
29
- export function parseBlock(arr) {
30
- let line = getFirstNonEmptyLine(arr);
31
- const block = [];
32
- let consensusLine = '';
37
+ function parseBlock(arr) {
38
+ var line = getFirstNonEmptyLine(arr);
39
+ var block = [];
40
+ var consensusLine = '';
33
41
  if (!line) {
34
42
  return undefined;
35
43
  }
@@ -42,24 +50,24 @@ export function parseBlock(arr) {
42
50
  }
43
51
  line = arr.next().value;
44
52
  }
45
- const [start, end] = getSeqBounds(block[0]);
46
- const fields = block.map(s => s.split(/\s+/));
47
- const ids = fields.map(s => s[0]);
48
- const seqs = block.map(s => s.slice(start, end));
49
- let consensus = consensusLine.slice(start, end);
53
+ var _a = getSeqBounds(block[0]), start = _a[0], end = _a[1];
54
+ var fields = block.map(function (s) { return s.split(/\s+/); });
55
+ var ids = fields.map(function (s) { return s[0]; });
56
+ var seqs = block.map(function (s) { return s.slice(start, end); });
57
+ var consensus = consensusLine.slice(start, end);
50
58
  // handle if the consensus trailing whitespace got trimmed
51
- const remainder = seqs[0].length - consensus.length;
59
+ var remainder = seqs[0].length - consensus.length;
52
60
  if (remainder) {
53
61
  consensus += ' '.repeat(remainder);
54
62
  }
55
- return { ids, seqs, consensus };
63
+ return { ids: ids, seqs: seqs, consensus: consensus };
56
64
  }
57
- export function parseBlocks(arr) {
58
- let block;
59
- const res = parseBlock(arr);
65
+ function parseBlocks(arr) {
66
+ var block;
67
+ var res = parseBlock(arr);
60
68
  if (res !== undefined) {
61
69
  while ((block = parseBlock(arr))) {
62
- for (let i = 0; i < block.seqs.length; i++) {
70
+ for (var i = 0; i < block.seqs.length; i++) {
63
71
  res.seqs[i] += block.seqs[i];
64
72
  }
65
73
  res.consensus += block.consensus;
package/esm/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,GAAG,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5C,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAC5C,CAAC;AACD,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;IAE5E,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,IAAI,CACV,GAAG,IAAI,mCAAmC,YAAY,CAAC,IAAI,CACzD,GAAG,CACJ,0CAA0C,CAC5C,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAqB;IACxD,wDAAwD;IACxD,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IACrB,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9C,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IACzC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACpD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC9B,OAAO,CAAC,CAAC,EAAE,CAAC,CAAU,CAAA;AACxB,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,UAAU,CAAC,GAAqB;IAC9C,IAAI,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAA;IACpC,MAAM,KAAK,GAAG,EAAE,CAAA;IAChB,IAAI,aAAa,GAAG,EAAE,CAAA;IACtB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,aAAa,GAAG,IAAI,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;QACD,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAA;IACzB,CAAC;IACD,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;IAChD,IAAI,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAE/C,0DAA0D;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;IACnD,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAqB;IAC/C,IAAI,KAAK,CAAA;IACT,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC3B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC9B,CAAC;YACD,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAA;QAClC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,16 @@
1
1
  {
2
2
  "name": "clustal-js",
3
- "version": "2.0.6",
4
- "main": "dist/index.js",
5
- "module": "esm/index.js",
3
+ "version": "2.0.7",
4
+ "type": "module",
5
+ "types": "./dist/index.d.ts",
6
+ "exports": {
7
+ "import": {
8
+ "import": "./esm/index.js"
9
+ },
10
+ "require": {
11
+ "require": "./dist/index.js"
12
+ }
13
+ },
6
14
  "repository": "cmdcolin/clustal-js",
7
15
  "files": [
8
16
  "dist",
@@ -12,25 +20,26 @@
12
20
  "license": "MIT",
13
21
  "devDependencies": {
14
22
  "@types/node": "^22.0.0",
15
- "@typescript-eslint/eslint-plugin": "^8.1.0",
16
- "@typescript-eslint/parser": "^8.1.0",
17
23
  "eslint": "^9.9.0",
18
- "eslint-plugin-unicorn": "^55.0.0",
24
+ "eslint-plugin-import": "^2.32.0",
25
+ "eslint-plugin-unicorn": "^62.0.0",
19
26
  "prettier": "^3.2.5",
20
27
  "rimraf": "^6.0.1",
21
28
  "typescript": "^5.3.3",
22
29
  "typescript-eslint": "^8.1.0",
23
- "vitest": "^2.0.5"
30
+ "vitest": "^4.0.16"
24
31
  },
25
32
  "scripts": {
26
33
  "clean": "rimraf dist esm",
27
- "test": "vitest run",
34
+ "test": "vitest",
28
35
  "lint": "eslint --report-unused-disable-directives --max-warnings 0",
29
- "build": "npm run build:esm && npm run build:es5",
30
- "build:esm": "tsc --target es2018 --outDir esm",
31
- "build:es5": "tsc --target es2015 --module commonjs --outDir dist",
32
- "prebuild": "npm run clean",
33
- "preversion": "npm run lint && npm test && npm run build",
36
+ "format": "prettier --write .",
37
+ "build:esm": "tsc --outDir esm",
38
+ "build:es5": "tsc --module commonjs --outDir dist",
39
+ "build": "yarn build:esm && yarn build:es5",
40
+ "prebuild": "yarn clean",
41
+ "postbuild:es5": "echo '{\"type\": \"commonjs\"}' > dist/package.json",
42
+ "preversion": "yarn lint && yarn test --run && yarn build",
34
43
  "postversion": "git push --follow-tags"
35
44
  }
36
45
  }
package/src/index.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { parsePairwiseBlocks } from './pairwise'
2
- import { parseBlocks, parseHeader, getFirstNonEmptyLine } from './util'
1
+ import { parsePairwiseBlocks } from './pairwise.ts'
2
+ import { parseBlocks, parseHeader, getFirstNonEmptyLine } from './util.ts'
3
3
 
4
4
  export function parseClustalIter(arr: Iterator<string>) {
5
5
  const line = getFirstNonEmptyLine(arr)
package/src/pairwise.ts CHANGED
@@ -1,40 +1,54 @@
1
- import { getFirstNonEmptyLine } from './util'
2
-
3
- export function getSeqBounds(line: string) {
4
- const fields = line.split(/\s+/)
5
- const k1 = fields[0].length + fields[1].length
6
- const temp = line.slice(k1)
7
- const s = k1 + temp.indexOf(fields[2])
8
- const e = s + fields[2].length
9
- return [s, e] as const
1
+ import { getFirstNonEmptyLine } from './util.ts'
2
+
3
+ function isSequenceLine(line: string) {
4
+ const trimmed = line.trim()
5
+ return /^\w+\s+/.test(trimmed)
6
+ }
7
+
8
+ function hasPositionNumbers(fields: string[]) {
9
+ return fields.length >= 3 && /^\d+$/.test(fields[1])
10
+ }
11
+
12
+ export function getSeqBounds(line: string, seqIndex: number) {
13
+ const trimmed = line.trim()
14
+ const fields = trimmed.split(/\s+/)
15
+ const seq = fields[seqIndex]
16
+ const seqStart = line.indexOf(seq, line.indexOf(fields[0]) + fields[0].length)
17
+ return [seqStart, seqStart + seq.length] as const
10
18
  }
11
19
 
12
20
  // Use the first block to get the sequence identifiers
13
21
  export function parsePairwiseBlock(arr: Iterator<string>) {
14
22
  let line = getFirstNonEmptyLine(arr)
15
- const block = []
23
+ const block: string[] = []
16
24
  let consensusLine = ''
17
25
  if (!line) {
18
26
  return undefined
19
27
  }
20
28
 
21
29
  while (line) {
22
- if (line.startsWith(' ')) {
23
- consensusLine = line
24
- } else {
30
+ if (isSequenceLine(line)) {
25
31
  block.push(line)
32
+ } else {
33
+ consensusLine = line
26
34
  }
27
35
  line = arr.next().value
28
36
  }
29
- const [start, end] = getSeqBounds(block[0])
30
- const fields = block.map(s => s.split(/\s+/))
37
+
38
+ if (block.length === 0) {
39
+ return undefined
40
+ }
41
+
42
+ const fields = block.map(s => s.trim().split(/\s+/))
43
+ const seqIndex = hasPositionNumbers(fields[0]) ? 2 : 1
44
+ const [start, end] = getSeqBounds(block[0], seqIndex)
31
45
  const ids = fields.map(s => s[0])
32
- const seqs = fields.map(s => s[2])
46
+ const seqs = fields.map(s => s[seqIndex])
33
47
  let consensus = consensusLine.slice(start, end)
34
48
 
35
49
  // handle if the consensus trailing whitespace got trimmed
36
50
  const remainder = seqs[0].length - consensus.length
37
- if (remainder) {
51
+ if (remainder > 0) {
38
52
  consensus += ' '.repeat(remainder)
39
53
  }
40
54
  return { ids, seqs, consensus }