Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ee9b9ac095 | |||
| 2d5b5a81a5 |
@@ -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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user