0.1.3 • Published 12 months ago

@neurodevs/node-csv-extractor v0.1.3

Weekly downloads
-
License
-
Repository
github
Last release
12 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

12 months ago

0.1.3

12 months ago

0.1.0

1 year ago

0.1.1

1 year ago

0.0.18

1 year ago

0.0.17

1 year ago

0.0.16

1 year ago

0.0.15

1 year ago

0.0.14

1 year ago

0.0.13

1 year ago

0.0.12

1 year ago

0.0.11

1 year ago

0.0.10

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago