0.1.3 • Published 9 months ago

@neurodevs/node-csv-extractor v0.1.3

Weekly downloads
-
License
-
Repository
github
Last release
9 months ago

node-csv-extractor

Extract data from CSV files using rules you define.

Installation

Install the package using npm:

npm install @neurodevs/node-csv-extractor

Or yarn:

yarn add @neurodevs/node-csv-extractor

Usage

To extract data from a CSV file based on a set of rules:

import { CsvExtractorImpl } from '@neurodevs/node-csv-extractor'

async function extractCsvData() {
    const extractor = await CsvExtractorImpl.Create('/path/to/csv')

    const extractedRecord = extractor.extract([
        {
            column: 'The column you want to search',
            value: 'The value to match in the column',
            extract: 'The column to extract data from'
        },
        {
            column: 'Another column to search',
            value: 'Another value to match',
            extract: 'Another column to extract'
        }
    ])

    return extractedRecord
}

Example Use Case for a Stroboscopic Experiment with EEG

Example CSV Format

phase-namemean-alpha-band-power...
eyes-closed-112.345...
eyes-open-110.987...
.........
eyes-closed-5......
eyes-open-5......

Example Code

import { CsvExtractorImpl, ExtractionRule } from '@neurodevs/node-csv-extractor'

async function extractStroboscopicData() {
    const extractor = await CsvExtractorImpl.Create('/path/to/csv')

    const rules = []
    const numTrials = 5

    for (let i = 1; i <= numTrials; i++) {
        rules.push({
            column: 'phase-name',              // The column to search
            value: `eyes-closed-${i}`,         // The value to match
            extract: 'mean-alpha-band-power'   // The column to extract
        })
        rules.push({
            column: 'phase-name',
            value: `eyes-open-${i}`,
            extract: 'mean-alpha-band-power'
        })
    }

    const extractedRecord = extractor.extract(rules)

    return extractedRecord
}

// Example value of extractedRecord:
//
//  {
//      "eyes-closed-1": 12.345,
//      "eyes-open-1": 10.987,
//      ...
//      "eyes-closed-5": ...,
//      "eyes-open-5": ...
//  }

Testing

You can use the following test doubles for unit testing purposes:

import {
    CsvExtractorImpl,
    FakeCsvExtractor,
    SpyCsvExtractor
} from '@neurodevs/node-csv-extractor'

async function createTestDouble() {
    // Use FakeCsvExtractor for simulating the extraction process in tests
    CsvExtractorImpl.Class = FakeCsvExtractor
    
    // Use SpyCsvExtractor to test real behavior with enhanced internal visibility
    CsvExtractorImpl.Class = SpyCsvExtractor
    
    const extractor = await CsvExtractorImpl.Create('/path/to/csv')
}
  • FakeCsvExtractor: Provides a fake implementation to simulate data extraction in tests.
  • SpyCsvExtractor: Wraps the real implementation with enhanced visibility for inspecting internal behavior during testing.
0.1.2

9 months ago

0.1.3

9 months ago

0.1.0

9 months ago

0.1.1

9 months ago

0.0.18

9 months ago

0.0.17

10 months ago

0.0.16

10 months ago

0.0.15

10 months ago

0.0.14

10 months ago

0.0.13

10 months ago

0.0.12

10 months ago

0.0.11

10 months ago

0.0.10

10 months ago

0.0.9

10 months ago

0.0.8

10 months ago

0.0.7

10 months ago

0.0.6

10 months ago

0.0.5

10 months ago

0.0.4

10 months ago

0.0.3

10 months ago

0.0.2

10 months ago

0.0.1

10 months ago