Compare commits

...

2 Commits

Author SHA1 Message Date
peterlu14 ee9b9ac095 bug fix 2022-03-14 17:30:52 +08:00
peterlu14 2d5b5a81a5 [init] spike detect with sd 2022-03-10 18:55:30 +08:00
+26 -4
View File
@@ -1,9 +1,11 @@
import RecordingDataMeta from '../../models/file/recording_data_meta'
import RecordingDataRaw from '../../models/file/recording_data_raw'
import childProcess from 'child_process'
import path from 'path'
import { homedir } from 'os'
const recordingDataMeta = new RecordingDataMeta()
const recordingDataRaw = new RecordingDataRaw()
export const spikeDetect = async (ctx, next) => {
const request = ctx.request.body
@@ -21,9 +23,18 @@ export const spikeDetect = async (ctx, next) => {
const result = await recordingDataMeta.getByID(metaId)
const channels = JSON.parse(result[0].channels)
const sampleRate = 8e5 / result[0].parameter_set.ADC_CLOCK / channels.length
const sampleRate = result[0].parameter_set.SAMPLE_RATE / channels.length
const timeDuration = result[0].time_duration / 1e6
const rawData = JSON.stringify(result[0].raw_data[channel])
let rawData = '[]'
if (dataType === 'filter_data') {
rawData = JSON.stringify(result[0].raw_data[channel])
} else if (dataType === 'filter_data_sd') {
const uuid = result[0].uuid
const ret = await recordingDataRaw.getSdDataAllTimeslotByUUID(uuid, channel)
console.log(uuid)
rawData = JSON.stringify(ret.map(r => r.id))
}
console.log(rawData)
function getPromise () {
return new Promise((resolve, reject) => {
@@ -39,7 +50,7 @@ export const spikeDetect = async (ctx, next) => {
'sample_rate=' + sampleRate,
'time_duration=' + timeDuration,
'data_type=' + dataType,
'raw_data=' + rawData
'raw_data=' + rawData,
])
let totalString = ''
@@ -50,11 +61,13 @@ export const spikeDetect = async (ctx, next) => {
})
subprocess.stderr.on('data', (error) => {
reject(error)
console.error(`Error ${error}`)
resolve(error)
return
})
subprocess.on('close', (code) => {
console.log(totalString)
resolve(totalString)
console.log(`spike detect analysis process exited with code ${code}`)
})
@@ -63,6 +76,15 @@ export const spikeDetect = async (ctx, next) => {
const ret = await getPromise()
ctx.body = ret
const msg = ret.toString()
const msgList = msg.split('\n')
if (msg.startsWith('Traceback')) {
if (msgList[msgList.length - 2].startsWith('ValueError')) {
ctx.status = 400
} else {
ctx.status = 500
}
}
next()
}