diff --git a/src/state/image-dataset/csv-dataset/index.ts b/src/state/image-dataset/csv-dataset/index.ts index e8dfc7a2..8ced0e14 100644 --- a/src/state/image-dataset/csv-dataset/index.ts +++ b/src/state/image-dataset/csv-dataset/index.ts @@ -55,7 +55,7 @@ class CsvRequest implements ImageDataset { cellIdToData: Record; featureKeys: string[]; featureDefs: Map; - featureData: Record; + featureData: Record; constructor() { // CSV parsing library? @@ -126,7 +126,7 @@ class CsvRequest implements ImageDataset { private parseDiscreteFeature( key: string, data: string[] - ): { def: DiscreteMeasuredFeatureDef; data: number[] } { + ): { def: DiscreteMeasuredFeatureDef; data: (number | null)[] } { // Treat as discrete feature, create options objects const options: Record = {}; const uniqueValuesSet = new Set(data as string[]); @@ -145,7 +145,7 @@ class CsvRequest implements ImageDataset { }; } - const mappedData = data.map((val) => valueNameToIndex.get(val) || -1); + const mappedData = data.map((val) => valueNameToIndex.get(val) ?? null); return { def: { @@ -164,7 +164,7 @@ class CsvRequest implements ImageDataset { const featureKeys = this.getNonReservedFeatureColumns(); const featureDefs: Map = new Map(); const rawFeatureData = this.getFeatureDataAsColumns(rawCsvData, featureKeys); - const newFeatureData: Record = {}; + const newFeatureData: Record = {}; for (const key of featureKeys) { const data = rawFeatureData.get(key); @@ -269,23 +269,15 @@ class CsvRequest implements ImageDataset { getFeatureData(): Promise { const indices = this.rawCsvData.map((row) => Number.parseInt(row[CELL_ID_KEY])); - const values: Record = this.featureData; + const values: Record = this.featureData; const labels: PerCellLabels = { thumbnailPaths: [], cellIds: [], }; for (let i = 0; i < indices.length; i++) { + // TODO: Calculate in advance const row = this.rawCsvData[i]; - - // Copy feature values - for (const key of this.featureKeys) { - if (!values[key]) { - values[key] = []; - } - values[key].push(Number.parseFloat(row[key])); - } - // Copy label data labels.cellIds.push(row[CELL_ID_KEY]); labels.thumbnailPaths.push(row[THUMBNAIL_PATH] || "");