|
72 | 72 | * @since 1.0.0 |
73 | 73 | * @version 1.0.0 |
74 | 74 | * @category Array |
75 | | - * @param {Array} array The array to process. |
| 75 | + * @param {Array} arr - The array to process. |
76 | 76 | * @param {*} element The value to inspect and remove. |
77 | 77 | * @returns {Array} |
78 | 78 | * @example |
79 | 79 | * |
80 | 80 | * removeArrayElem(['a', 'b', 'c', 'd'], 'c') |
81 | 81 | * => ['a', 'b', 'd'] |
| 82 | + *---------------------------------------------* |
| 83 | + * await removeArrayElemTFJS( [1, 2, 3, 4], 3) |
| 84 | + * => [1, 2, 4] |
82 | 85 | * |
83 | | - * await removeArrayElemTFJS([1, 2, 3, 4], 3) |
| 86 | + * await removeArrayElemTFJS(['a', 'b', 'c', 'd'], 'c') |
| 87 | + * => ['a', 'b', 'd'] |
| 88 | + *---------------------------------------------* |
| 89 | + * await removeArrayElemTFJSV2( [1, 2, 3, 4], 3) |
84 | 90 | * => [1, 2, 4] |
85 | | - * NOTE: TFJS version for numbers only |
| 91 | + * NOTE: removeArrayElemTFJSV2 for numbers only |
| 92 | + * |
86 | 93 | */ |
87 | 94 |
|
88 | | - removeArrayElem = (array, element) => { |
89 | | - const index = array.indexOf(element); |
| 95 | + removeArrayElem = (arr, element) => { |
| 96 | + const index = arr.indexOf(element); |
90 | 97 | if(index >= 0 ) { |
91 | | - array.splice(index, 1); |
| 98 | + arr.splice(index, 1); |
92 | 99 | } |
93 | 100 | } |
94 | 101 |
|
95 | | - removeArrayElemTFJS = async (array, element) => { |
96 | | - const tensor = tf.tensor(array); |
| 102 | + removeArrayElemTFJS = async(arr, element) => { |
| 103 | + return await tf.data.array(arr).filter(elm => elm !== element).toArray(); |
| 104 | + } |
| 105 | + |
| 106 | + |
| 107 | + removeArrayElemTFJSV2 = async (arr, element) => { |
| 108 | + const tensor = tf.tensor(arr); |
97 | 109 | const mask = tf.notEqual(tensor, element); |
98 | 110 | const result = await tf.booleanMaskAsync(tensor, mask); |
99 | 111 | return result.arraySync(); |
100 | 112 | } |
101 | 113 |
|
102 | | - removeArrayElem_v2 = (array, element) => { |
103 | | - return array.filter(elm => elm !== element); |
| 114 | + removeArrayElem_v2 = (arr, element) => { |
| 115 | + return arr.filter(elm => elm !== element); |
104 | 116 | } |
105 | 117 |
|
106 | 118 |
|
|
258 | 270 | * {id:"spx-7", Type:"Immune"} ]) |
259 | 271 | * |
260 | 272 | * => Object { "spx-1": {id: "spx-1", Type: "Tumor"}, "spx-7": {id: "spx-7", Type: "Immune"} } |
| 273 | + * |
| 274 | + * |
| 275 | + * await array2ObjWithHashKeyTFJS( "id", [ {id:"spx-1", Type:"Tumor"}, |
| 276 | + * {id:"spx-7", Type:"Immune"} ]) |
| 277 | + * |
| 278 | + * => Object { "spx-1": {id: "spx-1", Type: "Tumor"}, "spx-7": {id: "spx-7", Type: "Immune"} } |
| 279 | + * |
261 | 280 | */ |
262 | 281 |
|
263 | 282 | array2ObjWithHashKey = (hashKey, arrayOfObjs) => { |
|
269 | 288 | convertedObject[ object[hashKey] ] = object; |
270 | 289 | }); |
271 | 290 |
|
272 | | - return convertedObject; |
| 291 | + return convertedObject; |
| 292 | + |
273 | 293 | } else { |
274 | 294 | triggerHint("Not a valid array of objects .. ") |
275 | 295 | return null; |
276 | 296 | } |
277 | 297 | } |
278 | 298 |
|
| 299 | + array2ObjWithHashKeyTFJS = async(hashKey, arrayOfObjs) => { |
| 300 | + if(Object.keys(arrayOfObjs).length) { |
| 301 | + // create hash folarger arrayr the |
| 302 | + let convertedObject = {}; |
| 303 | + |
| 304 | + await tf.data.array(arrayOfObjs).forEachAsync(object => { |
| 305 | + convertedObject[ object[hashKey] ] = object; |
| 306 | + }); |
| 307 | + |
| 308 | + return convertedObject; |
| 309 | + |
| 310 | + } else { |
| 311 | + triggerHint("Not a valid array of objects .. ") |
| 312 | + return null; |
| 313 | + } |
| 314 | + } |
| 315 | + |
| 316 | + |
279 | 317 |
|
280 | 318 | /** |
281 | 319 | * Find unique values of array and return as new array. This is helpful for heatmapColor scale function |
|
336 | 374 | * |
337 | 375 | * => [{ Type: "1", val: 1}, { Type: "2", val: 2}, { Type: "3", val: 3}, { Type: "4", val: 4}] |
338 | 376 | ********************************************************************************************* |
339 | | - * fastArraysConcatTFJS( [1, 1, 2, 3], [5, 2, 5]) |
| 377 | + * fastArraysConcatTFJSV2( [1, 1, 2, 3], [5, 2, 5]) |
340 | 378 | * |
341 | 379 | * => [1, 1, 2, 3, 5, 2, 5] |
342 | 380 | * |
343 | | - * NOTE: fastArraysConcatTFJS can not concate Array of objects. |
| 381 | + * NOTE: fastArraysConcatTFJSV2 can not concate Array of objects. |
344 | 382 | * |
345 | | - * fastArraysConcatTFJS( array1, array2) |
| 383 | + * fastArraysConcatTFJSV2( array1, array2) |
346 | 384 | * |
347 | 385 | * => [ NaN, NaN, NaN, NaN ] |
348 | 386 | ********************************************************************************************** |
349 | | - * NOTE: fastArraysConcatTFJSData returns promise |
| 387 | + * NOTE: fastArraysConcatTFJS returns promise |
350 | 388 | * |
351 | | - * await fastArraysConcatTFJSData( [1, 1, 2, 3], [5, 2, 5]) |
| 389 | + * await fastArraysConcatTFJS( [1, 1, 2, 3], [5, 2, 5]) |
352 | 390 | * OR |
353 | | - * fastArraysConcatTFJSData([1, 1, 2, 3], [5, 2, 5]).then(function(res) { console.log(res) }) |
| 391 | + * fastArraysConcatTFJS([1, 1, 2, 3], [5, 2, 5]).then(function(res) { console.log(res) }) |
354 | 392 | * |
355 | 393 | * => [1, 1, 2, 3, 5, 2, 5] |
356 | 394 | * |
357 | | - * await fastArraysConcatTFJSData( array1, array2) |
| 395 | + * await fastArraysConcatTFJS( array1, array2) |
358 | 396 | * OR |
359 | | - * fastArraysConcatTFJSData(array1,array2).then(function(res) { console.log(res) }) |
| 397 | + * fastArraysConcatTFJS(array1,array2).then(function(res) { console.log(res) }) |
360 | 398 | * |
361 | 399 | * => [{ Type: "1", val: 1}, { Type: "2", val: 2}, { Type: "3", val: 3}, { Type: "4", val: 4}] |
362 | 400 | */ |
|
366 | 404 | } |
367 | 405 |
|
368 | 406 | fastArraysConcatTFJS = (array1, array2) => { |
369 | | - const tensor1 = tf.tensor1d(array1); |
370 | | - const tensor2 = tf.tensor1d(array2); |
371 | | - return tf.concat([tensor1, tensor2]).arraySync(); |
372 | | - } |
373 | | - |
374 | | - |
375 | | - fastArraysConcatTFJSData = (array1, array2) => { |
376 | 407 | const dataArr1 = tf.data.array(array1); |
377 | 408 | const dataArr2 = tf.data.array(array2); |
378 | 409 | return dataArr1.concatenate(dataArr2).toArray(); |
379 | 410 | } |
380 | 411 |
|
| 412 | + fastArraysConcatTFJSV2 = (array1, array2) => { |
| 413 | + const tensor1 = tf.tensor1d(array1); |
| 414 | + const tensor2 = tf.tensor1d(array2); |
| 415 | + return tf.concat([tensor1, tensor2]).arraySync(); |
| 416 | + } |
381 | 417 |
|
382 | 418 | /** |
383 | 419 | * Find if two arrays are identical. |
|
0 commit comments