Skip to content

Commit c3b452e

Browse files
committed
Merge branch 'master' of https://github.com/opensource9ja/danfojs into fix/dtype-check
2 parents 838c340 + db3a551 commit c3b452e

3 files changed

Lines changed: 115 additions & 29 deletions

File tree

danfojs-browser/lib/bundle.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

danfojs-browser/lib/bundle.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

danfojs-node/dist/core/utils.js

Lines changed: 113 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -171,35 +171,120 @@ class Utils {
171171
}
172172
}
173173

174+
__checker(arr_val) {
175+
let dtypes = [];
176+
let lim;
177+
let int_tracker = [];
178+
let float_tracker = [];
179+
let string_tracker = [];
180+
let bool_tracker = [];
181+
182+
if (arr_val.length == 0) {
183+
dtypes.push("string");
184+
}
185+
186+
if (arr_val.length < config.get_dtype_test_lim) {
187+
lim = arr_val.length - 1;
188+
} else {
189+
lim = config.get_dtype_test_lim - 1;
190+
}
191+
192+
arr_val.forEach((ele, indx) => {
193+
let count = indx;
194+
195+
if (typeof ele == "boolean") {
196+
float_tracker.push(false);
197+
int_tracker.push(false);
198+
string_tracker.push(false);
199+
bool_tracker.push(true);
200+
} else if (isNaN(ele) && typeof ele != "string") {
201+
float_tracker.push(true);
202+
int_tracker.push(false);
203+
string_tracker.push(false);
204+
bool_tracker.push(false);
205+
} else if (!isNaN(Number(ele))) {
206+
if (ele.toString().includes(".")) {
207+
float_tracker.push(true);
208+
int_tracker.push(false);
209+
string_tracker.push(false);
210+
bool_tracker.push(false);
211+
} else {
212+
float_tracker.push(false);
213+
int_tracker.push(true);
214+
string_tracker.push(false);
215+
bool_tracker.push(false);
216+
}
217+
} else {
218+
float_tracker.push(false);
219+
int_tracker.push(false);
220+
string_tracker.push(true);
221+
bool_tracker.push(false);
222+
}
223+
224+
if (count == lim) {
225+
const even = element => element == true;
226+
227+
if (string_tracker.some(even)) {
228+
dtypes = "string";
229+
} else if (float_tracker.some(even)) {
230+
dtypes = "float32";
231+
} else if (int_tracker.some(even)) {
232+
dtypes = "int32";
233+
} else if (bool_tracker.some(even)) {
234+
dtypes = "boolean";
235+
} else {
236+
dtypes = "undefined";
237+
}
238+
}
239+
});
240+
return dtypes;
241+
}
242+
174243
__get_t(arr_val) {
244+
const self = this;
245+
175246
if (this.__is_1D_array(arr_val)) {
176-
const dtypes = [];
247+
return [this.__checker(arr_val)];
248+
} else {
249+
const dtypes = arr_val.map(arr => {
250+
return self.__checker(arr);
251+
});
252+
return dtypes;
253+
}
254+
}
255+
256+
__get_tt(arr_val) {
257+
if (this.__is_1D_array(arr_val)) {
258+
let dtypes = [];
177259
let int_tracker = [];
178260
let float_tracker = [];
179261
let string_tracker = [];
180262
let bool_tracker = [];
181263
let lim;
182-
let arr = [];
183-
arr_val.map(val => {
184-
if (!(isNaN(val) && typeof val != "string")) {
185-
arr.push(val);
186-
}
187-
});
188264

189-
if (arr.length < config.get_dtype_test_lim) {
190-
lim = arr.length - 1;
265+
if (arr_val.length == 0) {
266+
dtypes.push("string");
267+
}
268+
269+
if (arr_val.length < config.get_dtype_test_lim) {
270+
lim = arr_val.length - 1;
191271
} else {
192272
lim = config.get_dtype_test_lim - 1;
193273
}
194274

195-
arr.forEach((ele, indx) => {
275+
arr_val.forEach((ele, indx) => {
196276
let count = indx;
197277

198278
if (typeof ele == "boolean") {
199279
float_tracker.push(false);
200280
int_tracker.push(false);
201281
string_tracker.push(false);
202282
bool_tracker.push(true);
283+
} else if (isNaN(ele) && typeof ele != "string") {
284+
float_tracker.push(true);
285+
int_tracker.push(false);
286+
string_tracker.push(false);
287+
bool_tracker.push(false);
203288
} else if (!isNaN(Number(ele))) {
204289
if (ele.toString().includes(".")) {
205290
float_tracker.push(true);
@@ -237,28 +322,24 @@ class Utils {
237322
});
238323
return dtypes;
239324
} else {
240-
const dtypes = [];
325+
let dtypes = [];
241326
let lim;
242-
243-
if (arr_val[0].length < config.get_dtype_test_lim) {
244-
lim = arr_val[0].length - 1;
245-
} else {
246-
lim = config.get_dtype_test_lim - 1;
247-
}
248-
249-
arr_val.forEach(ele => {
327+
arr_val.forEach(arr => {
250328
let int_tracker = [];
251329
let float_tracker = [];
252330
let string_tracker = [];
253331
let bool_tracker = [];
254-
let arr = [];
255-
ele.map(val => {
256-
if (!(isNaN(val) && typeof val != "string")) {
257-
arr.push(val);
258-
} else {
259-
arr.push("NaN");
260-
}
261-
});
332+
333+
if (arr.length == 0) {
334+
dtypes.push("string");
335+
}
336+
337+
if (arr.length < config.get_dtype_test_lim) {
338+
lim = arr.length - 1;
339+
} else {
340+
lim = config.get_dtype_test_lim - 1;
341+
}
342+
262343
arr.forEach((ele, indx) => {
263344
let count = indx;
264345

@@ -279,6 +360,11 @@ class Utils {
279360
string_tracker.push(false);
280361
bool_tracker.push(false);
281362
}
363+
} else if (isNaN(ele) && typeof ele != "string") {
364+
float_tracker.push(true);
365+
int_tracker.push(false);
366+
string_tracker.push(false);
367+
bool_tracker.push(false);
282368
} else {
283369
float_tracker.push(false);
284370
int_tracker.push(false);

0 commit comments

Comments
 (0)