@datagrok/bio 2.0.33 → 2.1.1

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/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "name": "Leonid Stolbov",
6
6
  "email": "lstolbov@datagrok.ai"
7
7
  },
8
- "version": "2.0.33",
8
+ "version": "2.1.1",
9
9
  "description": "Bio is a [package](https://datagrok.ai/help/develop/develop#packages) for the [Datagrok](https://datagrok.ai) platform",
10
10
  "repository": {
11
11
  "type": "git",
@@ -14,7 +14,7 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "@biowasm/aioli": "^3.1.0",
17
- "@datagrok-libraries/bio": "^5.8.0",
17
+ "@datagrok-libraries/bio": "^5.9.13",
18
18
  "@datagrok-libraries/chem-meta": "1.0.1",
19
19
  "@datagrok-libraries/ml": "^6.2.2",
20
20
  "@datagrok-libraries/utils": "^1.14.1",
package/src/package.ts CHANGED
@@ -2,7 +2,6 @@
2
2
  import * as grok from 'datagrok-api/grok';
3
3
  import * as ui from 'datagrok-api/ui';
4
4
  import * as DG from 'datagrok-api/dg';
5
- import * as bio from '@datagrok-libraries/bio';
6
5
 
7
6
  export const _package = new DG.Package();
8
7
 
@@ -13,7 +12,7 @@ import {SequenceAlignment, Aligned} from './seq_align';
13
12
  import {getEmbeddingColsNames, sequenceSpace, sequenceSpaceByFingerprints} from './analysis/sequence-space';
14
13
  import {getActivityCliffs} from '@datagrok-libraries/ml/src/viewers/activity-cliffs';
15
14
  import {createLinesGrid, createPropPanelElement, createTooltipElement, getChemSimilaritiesMarix, getSimilaritiesMarix} from './analysis/sequence-activity-cliffs';
16
- import {createJsonMonomerLibFromSdf, encodeMonomers, getMolfilesFromSeq} from '@datagrok-libraries/bio/src/utils/monomer-utils';
15
+ import {createJsonMonomerLibFromSdf, encodeMonomers, getMolfilesFromSeq} from '@datagrok-libraries/bio/src/monomer-works/monomer-utils';
17
16
  import {HELM_CORE_LIB_FILENAME} from '@datagrok-libraries/bio/src/utils/const';
18
17
  import {getMacroMol} from './utils/atomic-works';
19
18
  import {MacromoleculeSequenceCellRenderer} from './utils/cell-renderer';
@@ -21,7 +20,7 @@ import {convert} from './utils/convert';
21
20
  import {getMacroMolColumnPropertyPanel, representationsWidget} from './widgets/representations';
22
21
  import {MonomerFreqs, TAGS} from '@datagrok-libraries/bio/src/utils/macromolecule';
23
22
  import {ALPHABET, NOTATION} from '@datagrok-libraries/bio/src/utils/macromolecule'
24
- import {_toAtomicLevel} from '@datagrok-libraries/bio/src/utils/to-atomic-level';
23
+ import {_toAtomicLevel} from '@datagrok-libraries/bio/src/monomer-works/to-atomic-level';
25
24
  import {FastaFileHandler} from '@datagrok-libraries/bio/src/utils/fasta-handler';
26
25
  import {removeEmptyStringRows} from '@datagrok-libraries/utils/src/dataframe-utils';
27
26
  import {
@@ -39,80 +38,17 @@ import {saveAsFastaUI} from './utils/save-as-fasta';
39
38
  import {BioSubstructureFilter} from './widgets/bio-substructure-filter';
40
39
  import { getMonomericMols } from './calculations/monomerLevelMols';
41
40
  import { delay } from '@datagrok-libraries/utils/src/test';
42
- import {Observable, Subject} from 'rxjs';
41
+ import {from, Observable, Subject} from 'rxjs';
42
+ import {Monomer, IMonomerLib, MonomerWorks, MonomerLib, readLibrary,
43
+ SeqPalette, UnitsHandler, WebLogoViewer, getStats, splitterAsHelm} from '@datagrok-libraries/bio';
43
44
 
44
45
  const STORAGE_NAME = 'Libraries';
45
- const LIB_PATH = 'libraries/';
46
- const expectedMonomerData = ['symbol', 'name', 'molfile', 'rgroups', 'polymerType', 'monomerType'];
46
+ const LIB_PATH = 'System:AppData/Bio/libraries';
47
47
 
48
48
  let monomerLib: IMonomerLib | null = null;
49
49
  export let hydrophobPalette: SeqPaletteCustom | null = null;
50
50
 
51
- class MonomerLib implements IMonomerLib {
52
- private _monomers: { [type: string]: { [name: string]: Monomer } } = {};
53
- private _onChanged = new Subject<any>();
54
-
55
- getMonomer(monomerType: string, monomerName: string): Monomer | null {
56
- if (monomerType in this._monomers! && monomerName in this._monomers![monomerType])
57
- return this._monomers![monomerType][monomerName];
58
- else
59
- return null;
60
- }
61
-
62
- getTypes(): string[] {
63
- return Object.keys(this._monomers);
64
- }
65
-
66
- getMonomersByType(type: string): {[symbol: string]: string} {
67
- let res: {[symbol: string]: string} = {};
68
-
69
- Object.keys(this._monomers[type]).forEach(monomerSymbol => {
70
- res[monomerSymbol] = this._monomers[type][monomerSymbol].molfile;
71
- });
72
-
73
- return res;
74
- }
75
-
76
- get onChanged(): Observable<any> {
77
- return this._onChanged;
78
- }
79
-
80
- public update(monomers: { [type: string]: { [name: string]: Monomer } }): void {
81
- Object.keys(monomers).forEach(type => {
82
- //could possibly rewrite -> TODO: check duplicated monomer symbol
83
-
84
- if (!this.getTypes().includes(type))
85
- this._monomers![type] = {};
86
-
87
- Object.keys(monomers[type]).forEach(monomerName =>{
88
- this._monomers[type][monomerName] = monomers[type][monomerName];
89
- })
90
- });
91
-
92
- this._onChanged.next();
93
- }
94
- }
95
-
96
- export type Monomer = {
97
- symbol: string,
98
- name: string,
99
- molfile: string,
100
- rgroups: {capGroupSmiles: string, alternateId: string, capGroupName: string, label: string }[],
101
- polymerType: string,
102
- monomerType: string,
103
- data: {[property: string]: string}
104
- }
105
-
106
- //expected types: HELM_AA, HELM_BASE, HELM_CHEM, HELM_LINKER, HELM_SUGAR
107
- export interface IMonomerLib {
108
- getMonomer(monomerType: string, monomerName: string): Monomer | null;
109
- getMonomersByType(type: string): {[symbol: string]: string} | null;
110
- getTypes(): string[];
111
- update(monomers: { [type: string]: { [name: string]: Monomer } }): void;
112
- get onChanged(): Observable<any>;
113
- }
114
-
115
- export class SeqPaletteCustom implements bio.SeqPalette {
51
+ export class SeqPaletteCustom implements SeqPalette {
116
52
  private readonly _palette: { [m: string]: string };
117
53
  constructor(palette: { [m: string]: string }) {
118
54
  this._palette = palette;
@@ -131,7 +67,7 @@ export async function initBio() {
131
67
  const module = await grok.functions.call('Chem:getRdKitModule');
132
68
 
133
69
 
134
- const series = monomerLib!.getMonomersByType('PEPTIDE')!;
70
+ const series = monomerLib!.getMonomerMolsByType('PEPTIDE')!;
135
71
  Object.keys(series).forEach(symbol => {
136
72
  monomers.push(symbol);
137
73
  const block = series[symbol].replaceAll('#R', 'O ');
@@ -154,69 +90,40 @@ export async function initBio() {
154
90
 
155
91
  async function loadLibraries() {
156
92
  let uploadedLibraries: string[] = Object.values(await grok.dapi.userDataStorage.get(STORAGE_NAME, true));
157
- for (let i = 0; i < 1; ++i)
93
+ for (let i = 0; i < uploadedLibraries.length; ++i)
158
94
  await monomerManager(uploadedLibraries[i]);
159
95
  }
160
96
 
161
97
  //name: monomerManager
162
98
  //input: string value
163
99
  export async function monomerManager(value: string) {
164
- let data: any[] = [];
165
- let file;
166
- let dfSdf;
167
- if (value.endsWith('.sdf')) {
168
- const funcList: DG.Func[] = DG.Func.find({package: 'Chem', name: 'importSdf'});
169
- console.debug(`Helm: initHelm() funcList.length = ${funcList.length}`);
170
- if (funcList.length === 1) {
171
- file = await _package.files.readAsBytes(`${LIB_PATH}${value}`);
172
- dfSdf = await grok.functions.call('Chem:importSdf', {bytes: file});
173
- data = createJsonMonomerLibFromSdf(dfSdf[0]);
174
- } else {
175
- grok.shell.warning('Chem package is not installed');
176
- }
177
- } else {
178
- const file = await _package.files.readAsText(`${LIB_PATH}${value}`);
179
- data = JSON.parse(file);
180
- }
181
-
182
100
  if (monomerLib == null)
183
- monomerLib = new MonomerLib();
184
-
185
- let monomers: { [type: string]: { [name: string]: Monomer } } = {};
186
- const types: string[] = [];
187
- //group monomers by their type
188
- data.forEach(monomer => {
189
- let monomerAdd: Monomer = {
190
- 'symbol': monomer['symbol'],
191
- 'name': monomer['name'],
192
- 'molfile': monomer['molfile'],
193
- 'rgroups': monomer['rgroups'],
194
- 'polymerType': monomer['polymerType'],
195
- 'monomerType': monomer['monomerType'],
196
- 'data': {}
197
- };
198
-
199
- Object.keys(monomer).forEach(prop => {
200
- if (!expectedMonomerData.includes(prop))
201
- monomerAdd.data[prop] = monomer[prop];
202
- });
203
-
204
- if (!types.includes(monomer['polymerType'])) {
205
- monomers[monomer['polymerType']] = {};
206
- types.push(monomer['polymerType']);
207
- }
101
+ monomerLib = await readLibrary(LIB_PATH, value);
102
+ else {
103
+ monomerLib!.update(await readLibrary(LIB_PATH, value));
104
+ }
105
+ }
208
106
 
209
- monomers[monomer['polymerType']][monomer['symbol']] = monomerAdd;
210
- });
107
+ //name: getBioLib
108
+ //output: object monomerLib
109
+ export function getBioLib(): IMonomerLib | null {
110
+ return monomerLib;
111
+ }
211
112
 
212
- monomerLib!.update(monomers);
113
+ //name: manageFiles
114
+ export async function manageFiles() {
115
+ const a = ui.dialog({title: 'Manage files'})
116
+ //@ts-ignore
117
+ .add(ui.fileBrowser({path: 'System:AppData/Bio/libraries'}).root)
118
+ .addButton('OK', () => a.close())
119
+ .show();
213
120
  }
214
121
 
215
122
  //name: Manage Libraries
216
123
  //tags: panel, widgets
217
- //input: column helmColumn {semType: Macromolecule}
124
+ //input: column seqColumn {semType: Macromolecule}
218
125
  //output: widget result
219
- export async function libraryPanel(helmColumn: DG.Column): Promise<DG.Widget> {
126
+ export async function libraryPanel(seqColumn: DG.Column): Promise<DG.Widget> {
220
127
  //@ts-ignore
221
128
  let filesButton: HTMLButtonElement = ui.button('Manage', manageFiles);
222
129
  let divInputs: HTMLDivElement = ui.div();
@@ -227,7 +134,6 @@ export async function libraryPanel(helmColumn: DG.Column): Promise<DG.Widget> {
227
134
  divInputs.append(ui.boolInput(libraryName, true, async() => {
228
135
  grok.dapi.userDataStorage.remove(STORAGE_NAME, libraryName, true);
229
136
  await loadLibraries();
230
- grok.shell.tv.grid.invalidate();
231
137
  }).root);
232
138
  }
233
139
  let unusedLibraries: string[] = librariesList.filter(x => !uploadedLibraries.includes(x));
@@ -295,7 +201,7 @@ export function checkInputColumn(
295
201
  let res: boolean = true;
296
202
  let msg: string = '';
297
203
 
298
- const uh = new bio.UnitsHandler(col);
204
+ const uh = new UnitsHandler(col);
299
205
  if (col.semType !== DG.SEMTYPE.MACROMOLECULE) {
300
206
  grok.shell.warning(name + ' analysis is allowed for Macromolecules semantic type');
301
207
  res = false;
@@ -345,7 +251,7 @@ export function sequenceAlignment(alignType: string, alignTable: string, gap: nu
345
251
  //tags: viewer, panel
346
252
  //output: viewer result
347
253
  export function webLogoViewer() {
348
- return new bio.WebLogoViewer();
254
+ return new WebLogoViewer();
349
255
  }
350
256
 
351
257
  //name: VdRegions
@@ -525,7 +431,7 @@ export async function compositionAnalysis(): Promise<void> {
525
431
  if (col.semType != DG.SEMTYPE.MACROMOLECULE)
526
432
  return false;
527
433
 
528
- const colUH = new bio.UnitsHandler(col);
434
+ const colUH = new UnitsHandler(col);
529
435
  // TODO: prevent for cyclic, branched or multiple chains in Helm
530
436
  return true;
531
437
  });
@@ -544,7 +450,7 @@ export async function compositionAnalysis(): Promise<void> {
544
450
  return;
545
451
  } else if (colList.length > 1) {
546
452
  const colListNames: string [] = colList.map((col) => col.name);
547
- const selectedCol = colList.find((c) => { return (new bio.UnitsHandler(c)).isMsa(); });
453
+ const selectedCol = colList.find((c) => { return (new UnitsHandler(c)).isMsa(); });
548
454
  const colInput: DG.InputBase = ui.choiceInput(
549
455
  'Column', selectedCol ? selectedCol.name : colListNames[0], colListNames);
550
456
  ui.dialog({
@@ -596,7 +502,7 @@ export async function peptideMolecule(macroMolecule: DG.Cell): Promise<DG.Widget
596
502
  //input: string fileContent
597
503
  //output: list tables
598
504
  export function importFasta(fileContent: string): DG.DataFrame [] {
599
- const ffh = new bio.FastaFileHandler(fileContent);
505
+ const ffh = new FastaFileHandler(fileContent);
600
506
  return ffh.importFasta();
601
507
  }
602
508
 
@@ -671,7 +577,7 @@ export async function testDetectMacromolecule(path: string): Promise<DG.DataFram
671
577
  //tags: panel, bio
672
578
  //input: column col {semType: Macromolecule}
673
579
  export function splitToMonomers(col: DG.Column<string>): void {
674
- if (!col.getTag(bio.TAGS.aligned).includes(C.MSA))
580
+ if (!col.getTag(TAGS.aligned).includes(C.MSA))
675
581
  return grok.shell.error('Splitting is applicable only for aligned sequences');
676
582
 
677
583
  const tempDf = splitAlignedSequences(col);
@@ -688,7 +594,7 @@ export function splitToMonomers(col: DG.Column<string>): void {
688
594
  //name: Bio: getHelmMonomers
689
595
  //input: column sequence {semType: Macromolecule}
690
596
  export function getHelmMonomers(sequence: DG.Column<string>): string[] {
691
- const stats = bio.getStats(sequence, 1, bio.splitterAsHelm);
597
+ const stats = getStats(sequence, 1, splitterAsHelm);
692
598
  return Object.keys(stats.freq);
693
599
  }
694
600
 
@@ -1,9 +1,8 @@
1
1
  import * as grok from 'datagrok-api/grok';
2
2
  import * as ui from 'datagrok-api/ui';
3
3
  import * as DG from 'datagrok-api/dg';
4
- import {getMolfilesFromSingleSeq} from '@datagrok-libraries/bio/src/utils/monomer-utils';
4
+ import {getMolfilesFromSingleSeq} from '@datagrok-libraries/bio/src/monomer-works/monomer-utils';
5
5
  import {HELM_CORE_LIB_FILENAME} from '@datagrok-libraries/bio/src/utils/const';
6
- import {getMacroMol} from '@datagrok-libraries/bio/src/utils/atomic-works';
7
6
 
8
7
  /**
9
8
  * @export
@@ -79,7 +78,7 @@ export async function representationsWidget(macroMolecule: DG.Cell, monomersLibO
79
78
  try {
80
79
  try {
81
80
  const atomicCodes = getMolfilesFromSingleSeq(macroMolecule, monomersLibObject);
82
- const result = await getMacroMol(atomicCodes!);
81
+ const result = ''//await getMacroMol(atomicCodes!);
83
82
  const molBlock2D = result[0];
84
83
  molBlock3D = (await grok.functions.call('Bio:Embed', {molBlock2D})) as unknown as string;
85
84
  } catch (e) {
@@ -1,4 +1,4 @@
1
- <html><head><meta charset="utf-8"/><title>Bio Test Report. Datagrok version datagrok/datagrok:latest SHA=3afbd4014fa1. Commit 15e7930e.</title><style type="text/css">html,
1
+ <html><head><meta charset="utf-8"/><title>Bio Test Report. Datagrok version datagrok/datagrok:latest SHA=3afbd4014fa1. Commit 8c5a0df5.</title><style type="text/css">html,
2
2
  body {
3
3
  font-family: Arial, Helvetica, sans-serif;
4
4
  font-size: 1rem;
@@ -229,17 +229,17 @@ header {
229
229
  font-size: 1rem;
230
230
  padding: 0 0.5rem;
231
231
  }
232
- </style></head><body><div id="jesthtml-content"><header><h1 id="title">Bio Test Report. Datagrok version datagrok/datagrok:latest SHA=3afbd4014fa1. Commit 15e7930e.</h1></header><div id="metadata-container"><div id="timestamp">Started: 2022-11-04 14:02:19</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (1)</div><div class="summary-passed summary-empty">0 passed</div><div class="summary-failed">1 failed</div><div class="summary-pending summary-empty">0 pending</div></div><div id="test-summary"><div class="summary-total">Tests (1)</div><div class="summary-passed summary-empty">0 passed</div><div class="summary-failed">1 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></div><div id="suite-1" class="suite-container"><div class="suite-info"><div class="suite-path">/home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts</div><div class="suite-time warn">45.144s</div></div><div class="suite-tests"><div class="test-result failed"><div class="test-info"><div class="test-suitename"> </div><div class="test-title">TEST</div><div class="test-status">failed</div><div class="test-duration">28.346s</div></div><div class="failureMessages"> <pre class="failureMsg">Error: Test result : Failed : 234 : Bio.splitters.splitToMonomers : TypeError: Cannot read properties of undefined (reading 'push')
232
+ </style></head><body><div id="jesthtml-content"><header><h1 id="title">Bio Test Report. Datagrok version datagrok/datagrok:latest SHA=3afbd4014fa1. Commit 8c5a0df5.</h1></header><div id="metadata-container"><div id="timestamp">Started: 2022-11-08 13:09:19</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (1)</div><div class="summary-passed summary-empty">0 passed</div><div class="summary-failed">1 failed</div><div class="summary-pending summary-empty">0 pending</div></div><div id="test-summary"><div class="summary-total">Tests (1)</div><div class="summary-passed summary-empty">0 passed</div><div class="summary-failed">1 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></div><div id="suite-1" class="suite-container"><div class="suite-info"><div class="suite-path">/home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts</div><div class="suite-time warn">28.64s</div></div><div class="suite-tests"><div class="test-result failed"><div class="test-info"><div class="test-suitename"> </div><div class="test-title">TEST</div><div class="test-status">failed</div><div class="test-duration">19.009s</div></div><div class="failureMessages"> <pre class="failureMsg">Error: Test result : Failed : 180 : Bio.splitters.splitToMonomers : TypeError: Cannot read properties of undefined (reading 'push')
233
233
  Test result : Failed : 0 : Bio.splitters.init : TypeError: Cannot read properties of undefined (reading 'forEach')
234
- Test result : Failed : 0 : Bio.splitters.init : TypeError: Cannot read properties of undefined (reading 'endsWith')
235
- Test result : Failed : 359 : Bio.renderers.rendererMacromoleculeFasta : TypeError: Cannot read properties of undefined (reading 'push')
236
- Test result : Failed : 254 : Bio.renderers.rendererMacromoleculeSeparator : TypeError: Cannot read properties of undefined (reading 'push')
237
- Test result : Failed : 96 : Bio.renderers.rendererMacromoleculeDifference : TypeError: Cannot read properties of undefined (reading 'push')
238
- Test result : Failed : 545 : Bio.renderers.afterMsa : TypeError: Cannot read properties of undefined (reading 'push')
239
- Test result : Failed : 352 : Bio.renderers.afterConvert : TypeError: Cannot read properties of undefined (reading 'push')
240
- Test result : Failed : 104 : Bio.renderers.selectRendererBySemType : TypeError: Cannot read properties of undefined (reading 'push')
234
+ Test result : Failed : 0 : Bio.splitters.init : TypeError: Cannot read properties of null (reading 'getMonomerMolsByType')
235
+ Test result : Failed : 311 : Bio.renderers.rendererMacromoleculeFasta : TypeError: Cannot read properties of undefined (reading 'push')
236
+ Test result : Failed : 184 : Bio.renderers.rendererMacromoleculeSeparator : TypeError: Cannot read properties of undefined (reading 'push')
237
+ Test result : Failed : 54 : Bio.renderers.rendererMacromoleculeDifference : TypeError: Cannot read properties of undefined (reading 'push')
238
+ Test result : Failed : 311 : Bio.renderers.afterMsa : TypeError: Cannot read properties of undefined (reading 'push')
239
+ Test result : Failed : 186 : Bio.renderers.afterConvert : TypeError: Cannot read properties of undefined (reading 'push')
240
+ Test result : Failed : 58 : Bio.renderers.selectRendererBySemType : TypeError: Cannot read properties of undefined (reading 'push')
241
241
  Test result : Failed : 0 : Bio.renderers.init : TypeError: Cannot read properties of undefined (reading 'forEach')
242
- Test result : Failed : 0 : Bio.renderers.init : TypeError: Cannot read properties of undefined (reading 'endsWith')
242
+ Test result : Failed : 0 : Bio.renderers.init : TypeError: Cannot read properties of null (reading 'getMonomerMolsByType')
243
243
 
244
244
  at /home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:70:20
245
245
  at Generator.next (&lt;anonymous&gt;)
@@ -262,128 +262,128 @@ Test result : Failed : 0 : Bio.renderers.init : TypeError: Cannot read propertie
262
262
  at processTicksAndRejections (internal/process/task_queues.js:97:5)</pre><pre class="suite-consolelog-item-message">Test result : Success : 0 : Bio.Palettes.testPaletteN : OK
263
263
  Test result : Success : 1 : Bio.Palettes.testPaletteAA : OK
264
264
  Test result : Success : 0 : Bio.Palettes.testPalettePtMe : OK
265
- Test result : Success : 273 : Bio.detectors.NegativeEmpty : OK
266
- Test result : Success : 34 : Bio.detectors.Negative1 : OK
267
- Test result : Success : 36 : Bio.detectors.Negative2 : OK
268
- Test result : Success : 31 : Bio.detectors.Negative3 : OK
269
- Test result : Success : 44 : Bio.detectors.NegativeSmiles : OK
270
- Test result : Success : 24 : Bio.detectors.Dna1 : OK
271
- Test result : Success : 37 : Bio.detectors.Rna1 : OK
272
- Test result : Success : 38 : Bio.detectors.AA1 : OK
273
- Test result : Success : 23 : Bio.detectors.MsaDna1 : OK
274
- Test result : Success : 46 : Bio.detectors.MsaAA1 : OK
275
- Test result : Success : 21 : Bio.detectors.SepDna : OK
276
- Test result : Success : 22 : Bio.detectors.SepRna : OK
277
- Test result : Success : 24 : Bio.detectors.SepPt : OK
278
- Test result : Success : 19 : Bio.detectors.SepUn1 : OK
279
- Test result : Success : 18 : Bio.detectors.SepUn2 : OK
280
- Test result : Success : 29 : Bio.detectors.SepMsaN1 : OK
281
- Test result : Success : 1790 : Bio.detectors.SamplesFastaCsvPt : OK
282
- Test result : Success : 16 : Bio.detectors.SamplesFastaCsvNegativeEntry : OK
265
+ Test result : Success : 83 : Bio.detectors.NegativeEmpty : OK
266
+ Test result : Success : 15 : Bio.detectors.Negative1 : OK
267
+ Test result : Success : 27 : Bio.detectors.Negative2 : OK
268
+ Test result : Success : 18 : Bio.detectors.Negative3 : OK
269
+ Test result : Success : 372 : Bio.detectors.NegativeSmiles : OK
270
+ Test result : Success : 27 : Bio.detectors.Dna1 : OK
271
+ Test result : Success : 16 : Bio.detectors.Rna1 : OK
272
+ Test result : Success : 8 : Bio.detectors.AA1 : OK
273
+ Test result : Success : 16 : Bio.detectors.MsaDna1 : OK
274
+ Test result : Success : 13 : Bio.detectors.MsaAA1 : OK
275
+ Test result : Success : 28 : Bio.detectors.SepDna : OK
276
+ Test result : Success : 24 : Bio.detectors.SepRna : OK
277
+ Test result : Success : 26 : Bio.detectors.SepPt : OK
278
+ Test result : Success : 9 : Bio.detectors.SepUn1 : OK
279
+ Test result : Success : 7 : Bio.detectors.SepUn2 : OK
280
+ Test result : Success : 19 : Bio.detectors.SepMsaN1 : OK
281
+ Test result : Success : 425 : Bio.detectors.SamplesFastaCsvPt : OK
282
+ Test result : Success : 4 : Bio.detectors.SamplesFastaCsvNegativeEntry : OK
283
283
  Test result : Success : 16 : Bio.detectors.SamplesFastaCsvNegativeLength : OK
284
- Test result : Success : 137 : Bio.detectors.SamplesFastaCsvNegativeUniProtKB : OK
285
- Test result : Success : 335 : Bio.detectors.SamplesFastaFastaPt : OK
286
- Test result : Success : 1536 : Bio.detectors.samplesPeptidesComplexNegativeID : OK
287
- Test result : Success : 41 : Bio.detectors.SamplesPeptidesComplexNegativeMeasured : OK
288
- Test result : Success : 239 : Bio.detectors.SamplesPeptidesComplexNegativeValue : OK
289
- Test result : Success : 340 : Bio.detectors.samplesMsaComplexUn : OK
290
- Test result : Success : 65 : Bio.detectors.samplesMsaComplexNegativeActivity : OK
291
- Test result : Success : 241 : Bio.detectors.samplesIdCsvNegativeID : OK
292
- Test result : Success : 222 : Bio.detectors.samplesSarSmallCsvNegativeSmiles : OK
293
- Test result : Success : 217 : Bio.detectors.samplesHelmCsvHELM : OK
294
- Test result : Success : 28 : Bio.detectors.samplesHelmCsvNegativeActivity : OK
295
- Test result : Success : 213 : Bio.detectors.samplesTestHelmNegativeID : OK
296
- Test result : Success : 23 : Bio.detectors.samplesTestHelmNegativeTestType : OK
297
- Test result : Success : 10 : Bio.detectors.samplesTestHelmPositiveHelmString : OK
298
- Test result : Success : 16 : Bio.detectors.samplesTestHelmNegativeValid : OK
299
- Test result : Success : 19 : Bio.detectors.samplesTestHelmNegativeMolWeight : OK
300
- Test result : Success : 6 : Bio.detectors.samplesTestHelmNegativeMolFormula : OK
301
- Test result : Success : 13 : Bio.detectors.samplesTestHelmNegativeSmiles : OK
302
- Test result : Success : 1437 : Bio.detectors.samplesTestDemogNegativeAll : OK
303
- Test result : Success : 698 : Bio.detectors.samplesTestSmiles2NegativeSmiles : OK
304
- Test result : Success : 185 : Bio.detectors.samplesTestActivityCliffsNegativeSmiles : OK
305
- Test result : Success : 136 : Bio.detectors.samplesFastaPtPosSequence : OK
306
- Test result : Success : 162 : Bio.detectors.samplesTestCerealNegativeCerealName : OK
307
- Test result : Success : 216 : Bio.detectors.samplesTestSpgi100NegativeStereoCategory : OK
284
+ Test result : Success : 78 : Bio.detectors.SamplesFastaCsvNegativeUniProtKB : OK
285
+ Test result : Success : 195 : Bio.detectors.SamplesFastaFastaPt : OK
286
+ Test result : Success : 636 : Bio.detectors.samplesPeptidesComplexNegativeID : OK
287
+ Test result : Success : 7 : Bio.detectors.SamplesPeptidesComplexNegativeMeasured : OK
288
+ Test result : Success : 94 : Bio.detectors.SamplesPeptidesComplexNegativeValue : OK
289
+ Test result : Success : 189 : Bio.detectors.samplesMsaComplexUn : OK
290
+ Test result : Success : 39 : Bio.detectors.samplesMsaComplexNegativeActivity : OK
291
+ Test result : Success : 128 : Bio.detectors.samplesIdCsvNegativeID : OK
292
+ Test result : Success : 142 : Bio.detectors.samplesSarSmallCsvNegativeSmiles : OK
293
+ Test result : Success : 140 : Bio.detectors.samplesHelmCsvHELM : OK
294
+ Test result : Success : 5 : Bio.detectors.samplesHelmCsvNegativeActivity : OK
295
+ Test result : Success : 85 : Bio.detectors.samplesTestHelmNegativeID : OK
296
+ Test result : Success : 4 : Bio.detectors.samplesTestHelmNegativeTestType : OK
297
+ Test result : Success : 4 : Bio.detectors.samplesTestHelmPositiveHelmString : OK
298
+ Test result : Success : 3 : Bio.detectors.samplesTestHelmNegativeValid : OK
299
+ Test result : Success : 4 : Bio.detectors.samplesTestHelmNegativeMolWeight : OK
300
+ Test result : Success : 4 : Bio.detectors.samplesTestHelmNegativeMolFormula : OK
301
+ Test result : Success : 4 : Bio.detectors.samplesTestHelmNegativeSmiles : OK
302
+ Test result : Success : 459 : Bio.detectors.samplesTestDemogNegativeAll : OK
303
+ Test result : Success : 214 : Bio.detectors.samplesTestSmiles2NegativeSmiles : OK
304
+ Test result : Success : 122 : Bio.detectors.samplesTestActivityCliffsNegativeSmiles : OK
305
+ Test result : Success : 90 : Bio.detectors.samplesFastaPtPosSequence : OK
306
+ Test result : Success : 102 : Bio.detectors.samplesTestCerealNegativeCerealName : OK
307
+ Test result : Success : 136 : Bio.detectors.samplesTestSpgi100NegativeStereoCategory : OK
308
308
  Test result : Success : 5 : Bio.detectors.samplesTestSpgi100NegativeScaffoldNames : OK
309
- Test result : Success : 5 : Bio.detectors.samplesTestSpgi100NegativePrimaryScaffoldName : OK
310
- Test result : Success : 7 : Bio.detectors.samplesTestSpgi100NegativeSampleName : OK
311
- Test result : Success : 210 : Bio.detectors.samplesTestUnichemSourcesNegativeSrcUrl : OK
312
- Test result : Success : 9 : Bio.detectors.samplesTestUnichemSourcesNegativeBaseIdUrl : OK
313
- Test result : Success : 192 : Bio.detectors.samplesTestDmvOfficesNegativeOfficeName : OK
314
- Test result : Success : 28 : Bio.detectors.samplesTestDmvOfficesNegativeCity : OK
315
- Test result : Success : 168 : Bio.detectors.samplesTestAlertCollectionNegativeSmarts : OK
316
- Test result : Success : 2670 : Bio.MSA.isCorrect : OK
317
- Test result : Success : 124 : Bio.MSA.isCorrectLong : OK
318
- Test result : Success : 1279 : Bio.sequenceSpace.sequenceSpaceOpens : OK
319
- Test result : Success : 596 : Bio.sequenceSpace.sequenceSpaceWithEmptyRows : OK
320
- Test result : Success : 836 : Bio.activityCliffs.activityCliffsOpens : OK
321
- Test result : Success : 868 : Bio.activityCliffs.activityCliffsWithEmptyRows : OK
309
+ Test result : Success : 7 : Bio.detectors.samplesTestSpgi100NegativePrimaryScaffoldName : OK
310
+ Test result : Success : 4 : Bio.detectors.samplesTestSpgi100NegativeSampleName : OK
311
+ Test result : Success : 128 : Bio.detectors.samplesTestUnichemSourcesNegativeSrcUrl : OK
312
+ Test result : Success : 3 : Bio.detectors.samplesTestUnichemSourcesNegativeBaseIdUrl : OK
313
+ Test result : Success : 106 : Bio.detectors.samplesTestDmvOfficesNegativeOfficeName : OK
314
+ Test result : Success : 5 : Bio.detectors.samplesTestDmvOfficesNegativeCity : OK
315
+ Test result : Success : 116 : Bio.detectors.samplesTestAlertCollectionNegativeSmarts : OK
316
+ Test result : Success : 1104 : Bio.MSA.isCorrect : OK
317
+ Test result : Success : 134 : Bio.MSA.isCorrectLong : OK
318
+ Test result : Success : 920 : Bio.sequenceSpace.sequenceSpaceOpens : OK
319
+ Test result : Success : 498 : Bio.sequenceSpace.sequenceSpaceWithEmptyRows : OK
320
+ Test result : Success : 730 : Bio.activityCliffs.activityCliffsOpens : OK
321
+ Test result : Success : 793 : Bio.activityCliffs.activityCliffsWithEmptyRows : OK
322
322
  Test result : Success : 1 : Bio.splitters.fastaMulti : OK
323
323
  Test result : Success : 1 : Bio.splitters.helm1 : OK
324
324
  Test result : Success : 0 : Bio.splitters.helm2 : OK
325
- Test result : Success : 1 : Bio.splitters.helm3-multichar : OK
325
+ Test result : Success : 0 : Bio.splitters.helm3-multichar : OK
326
326
  Test result : Success : 0 : Bio.splitters.testHelm1 : OK
327
327
  Test result : Success : 1 : Bio.splitters.testHelm2 : OK
328
- Test result : Success : 0 : Bio.splitters.testHelm3 : OK
328
+ Test result : Success : 1 : Bio.splitters.testHelm3 : OK
329
329
  Test result : Success : 1 : Bio.splitters.getHelmMonomers : OK
330
- Test result : Success : 109 : Bio.renderers.long sequence performance : OK
331
- Test result : Success : 918 : Bio.renderers.many sequence performance : OK
330
+ Test result : Success : 70 : Bio.renderers.long sequence performance : OK
331
+ Test result : Success : 615 : Bio.renderers.many sequence performance : OK
332
332
  Test result : Success : 0 : Bio.renderers.setRendererManually : GROK-11212
333
- Test result : Success : 6 : Bio.converters.testFastaPtToSeparator : OK
334
- Test result : Success : 5 : Bio.converters.testFastaDnaToSeparator : OK
335
- Test result : Success : 4 : Bio.converters.testFastaRnaToSeparator : OK
336
- Test result : Success : 5 : Bio.converters.testFastaGapsToSeparator : OK
333
+ Test result : Success : 4 : Bio.converters.testFastaPtToSeparator : OK
334
+ Test result : Success : 3 : Bio.converters.testFastaDnaToSeparator : OK
335
+ Test result : Success : 2 : Bio.converters.testFastaRnaToSeparator : OK
336
+ Test result : Success : 3 : Bio.converters.testFastaGapsToSeparator : OK
337
337
  Test result : Success : 2 : Bio.converters.testFastaPtToHelm : OK
338
- Test result : Success : 2 : Bio.converters.testFastaDnaToHelm : OK
338
+ Test result : Success : 1 : Bio.converters.testFastaDnaToHelm : OK
339
339
  Test result : Success : 2 : Bio.converters.testFastaRnaToHelm : OK
340
340
  Test result : Success : 1 : Bio.converters.testFastaGapsToHelm : OK
341
- Test result : Success : 0 : Bio.converters.testSeparatorPtToFasta : OK
342
- Test result : Success : 1 : Bio.converters.testSeparatorDnaToFasta : OK
341
+ Test result : Success : 1 : Bio.converters.testSeparatorPtToFasta : OK
342
+ Test result : Success : 0 : Bio.converters.testSeparatorDnaToFasta : OK
343
343
  Test result : Success : 1 : Bio.converters.testSeparatorRnaToFasta : OK
344
344
  Test result : Success : 0 : Bio.converters.testSeparatorGapsToFasta : OK
345
345
  Test result : Success : 0 : Bio.converters.testSeparatorPtToHelm : OK
346
- Test result : Success : 1 : Bio.converters.testSeparatorDnaToHelm : OK
346
+ Test result : Success : 0 : Bio.converters.testSeparatorDnaToHelm : OK
347
347
  Test result : Success : 0 : Bio.converters.testSeparatorRnaToHelm : OK
348
- Test result : Success : 0 : Bio.converters.testSeparatorGapsToHelm : OK
349
- Test result : Success : 1 : Bio.converters.testHelmDnaToFasta : OK
350
- Test result : Success : 1 : Bio.converters.testHelmRnaToFasta : OK
351
- Test result : Success : 1 : Bio.converters.testHelmPtToFasta : OK
348
+ Test result : Success : 1 : Bio.converters.testSeparatorGapsToHelm : OK
349
+ Test result : Success : 0 : Bio.converters.testHelmDnaToFasta : OK
350
+ Test result : Success : 0 : Bio.converters.testHelmRnaToFasta : OK
351
+ Test result : Success : 0 : Bio.converters.testHelmPtToFasta : OK
352
352
  Test result : Success : 0 : Bio.converters.testHelmDnaToSeparator : OK
353
- Test result : Success : 1 : Bio.converters.testHelmRnaToSeparator : OK
354
- Test result : Success : 0 : Bio.converters.testHelmPtToSeparator : OK
355
- Test result : Success : 2 : Bio.converters.testHelmLoneRibose : OK
353
+ Test result : Success : 0 : Bio.converters.testHelmRnaToSeparator : OK
354
+ Test result : Success : 1 : Bio.converters.testHelmPtToSeparator : OK
355
+ Test result : Success : 1 : Bio.converters.testHelmLoneRibose : OK
356
356
  Test result : Success : 2 : Bio.converters.testHelmLoneDeoxyribose : OK
357
- Test result : Success : 2 : Bio.converters.testHelmLonePhosphorus : OK
358
- Test result : Success : 0 : Bio.fastaFileHandler.testNormalFormatting : OK
359
- Test result : Success : 1 : Bio.fastaFileHandler.testExtraSpaces : OK
357
+ Test result : Success : 1 : Bio.converters.testHelmLonePhosphorus : OK
358
+ Test result : Success : 1 : Bio.fastaFileHandler.testNormalFormatting : OK
359
+ Test result : Success : 0 : Bio.fastaFileHandler.testExtraSpaces : OK
360
360
  Test result : Success : 0 : Bio.fastaFileHandler.testExtraNewlines : OK
361
- Test result : Success : 1 : Bio.fastaExport.wrapSequenceSingle : OK
361
+ Test result : Success : 0 : Bio.fastaExport.wrapSequenceSingle : OK
362
362
  Test result : Success : 0 : Bio.fastaExport.wrapSequenceMulti : OK
363
- Test result : Success : 2 : Bio.fastaExport.saveAsFastaTest1 : OK
363
+ Test result : Success : 1 : Bio.fastaExport.saveAsFastaTest1 : OK
364
364
  Test result : Success : 1 : Bio.fastaExport.saveAsFastaTest2 : OK
365
- Test result : Success : 2 : Bio.bio.testGetStatsHelm1 : OK
365
+ Test result : Success : 1 : Bio.bio.testGetStatsHelm1 : OK
366
366
  Test result : Success : 1 : Bio.bio.testGetStatsN1 : OK
367
- Test result : Success : 1 : Bio.bio.testGetAlphabetSimilarity : OK
367
+ Test result : Success : 0 : Bio.bio.testGetAlphabetSimilarity : OK
368
368
  Test result : Success : 1 : Bio.bio.testPickupPaletteN1 : OK
369
- Test result : Success : 2 : Bio.bio.testPickupPaletteN1e : OK
369
+ Test result : Success : 1 : Bio.bio.testPickupPaletteN1e : OK
370
370
  Test result : Success : 1 : Bio.bio.testPickupPaletteAA1 : OK
371
- Test result : Success : 2 : Bio.bio.testPickupPaletteX : OK
371
+ Test result : Success : 1 : Bio.bio.testPickupPaletteX : OK
372
372
  Test result : Success : 0 : Bio.WebLogo.monomerToShort.longMonomerSingle : OK
373
373
  Test result : Success : 0 : Bio.WebLogo.monomerToShort.longMonomerShort : OK
374
- Test result : Success : 0 : Bio.WebLogo.monomerToShort.longMonomerLong56 : OK
374
+ Test result : Success : 1 : Bio.WebLogo.monomerToShort.longMonomerLong56 : OK
375
375
  Test result : Success : 0 : Bio.WebLogo.monomerToShort.longMonomerComplexFirstPartShort : OK
376
- Test result : Success : 1 : Bio.WebLogo.monomerToShort.longMonomerComplexFirstPartLong56 : OK
377
- Test result : Success : 140 : Bio.WebLogo-positions.allPositions : OK
378
- Test result : Success : 120 : Bio.WebLogo-positions.positions with shrinkEmptyTail option true (filterd) : OK
379
- Test result : Success : 132 : Bio.WebLogo-positions.positions with skipEmptyPositions option : OK
376
+ Test result : Success : 0 : Bio.WebLogo.monomerToShort.longMonomerComplexFirstPartLong56 : OK
377
+ Test result : Success : 92 : Bio.WebLogo-positions.allPositions : OK
378
+ Test result : Success : 73 : Bio.WebLogo-positions.positions with shrinkEmptyTail option true (filterd) : OK
379
+ Test result : Success : 77 : Bio.WebLogo-positions.positions with skipEmptyPositions option : OK
380
380
  Test result : Success : 3 : Bio.checkInputColumn.testMsaPos : OK
381
381
  Test result : Success : 1 : Bio.checkInputColumn.testMsaNegHelm : OK
382
382
  Test result : Success : 1 : Bio.checkInputColumn.testMsaNegUN : OK
383
- Test result : Success : 1 : Bio.checkInputColumn.testGetActionFunctionMeta : OK
384
- Test result : Success : 484 : Bio.similarity/diversity.similaritySearchViewer : OK
385
- Test result : Success : 356 : Bio.similarity/diversity.diversitySearchViewer : OK
386
- Test result : Success : 231 : Bio.substructureFilters.fasta : OK
387
- Test result : Success : 420 : Bio.substructureFilters.separator : OK
388
- Test result : Success : 1913 : Bio.substructureFilters.helm : OK
383
+ Test result : Success : 0 : Bio.checkInputColumn.testGetActionFunctionMeta : OK
384
+ Test result : Success : 360 : Bio.similarity/diversity.similaritySearchViewer : OK
385
+ Test result : Success : 214 : Bio.similarity/diversity.diversitySearchViewer : OK
386
+ Test result : Success : 190 : Bio.substructureFilters.fasta : OK
387
+ Test result : Success : 394 : Bio.substructureFilters.separator : OK
388
+ Test result : Success : 1950 : Bio.substructureFilters.helm : OK
389
389
  </pre></div></div></div></div></body></html>