Skip to content

Commit 63434be

Browse files
committed
Update behavior while automatically searching for calibration files
- Updated tooltips and error messages - Only update the info string once per toggle - If the automated search checkbox is checked, gray out the individual calibration file buttons - Only search for calibration files when the device is enabled and any other trigger is hit - Updated for both Neuropixels 1.0 and 2.0 probes
1 parent 1053496 commit 63434be

File tree

3 files changed

+66
-29
lines changed

3 files changed

+66
-29
lines changed

Source/UI/NeuropixelsV1Interface.cpp

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ NeuropixelsV1Interface::NeuropixelsV1Interface(std::shared_ptr<Neuropixels1> d,
8080
searchForCalibrationFilesButton = std::make_unique<ToggleButton>("Search for calibration files automatically");
8181
searchForCalibrationFilesButton->setBounds(infoLabel->getX() + 2, infoLabel->getBottom() + 5, 350, 20);
8282
searchForCalibrationFilesButton->addListener(this);
83-
searchForCalibrationFilesButton->setTooltip("Open a dialog to choose the folder where calibration files exist. This can be a top-level folder which is recursively searched for a matching serial number.");
83+
searchForCalibrationFilesButton->setTooltip("Open a file dialog to choose a folder that contains all calibration files. The calibration file(s) that matches your probe will automatically be selected if it exists in this folder.");
8484
addAndMakeVisible(searchForCalibrationFilesButton.get());
8585

8686
calibrationFolderLabel = std::make_unique<Label>("calibrationFolderLabel", "Calibration Folder");
@@ -99,13 +99,11 @@ NeuropixelsV1Interface::NeuropixelsV1Interface(std::shared_ptr<Neuropixels1> d,
9999
calibrationFolderButton->setBounds(calibrationFolder->getRight() + 3, calibrationFolder->getY(), 26, calibrationFolder->getHeight() + 2);
100100
calibrationFolderButton->setRadius(1.0f);
101101
calibrationFolderButton->addListener(this);
102-
calibrationFolderButton->setTooltip("Open a file dialog to choose the gain calibration folder path to automatically search for probe calibration files.");
102+
calibrationFolderButton->setTooltip("Open a file dialog to choose the calibration folder path to automatically search for probe calibration files.");
103103
addAndMakeVisible(calibrationFolderButton.get());
104104

105105
calibrationFolderChooser = std::make_unique<FileChooser>("Select Gain Calibration Folder.", File());
106106

107-
setCalibrationFolderEnabledState(false);
108-
109107
adcCalibrationFileLabel = std::make_unique<Label>("adcCalibrationFileLabel", "ADC Calibration File");
110108
adcCalibrationFileLabel->setBounds(calibrationFolder->getX(), calibrationFolder->getBottom() + 15, calibrationFolderLabel->getWidth(), calibrationFolderLabel->getHeight());
111109
adcCalibrationFileLabel->setColour(Label::textColourId, Colours::black);
@@ -536,6 +534,8 @@ NeuropixelsV1Interface::NeuropixelsV1Interface(std::shared_ptr<Neuropixels1> d,
536534
addAndMakeVisible(activityViewComponent.get());
537535

538536
updateSettings();
537+
538+
setCalibrationFolderEnabledState(false);
539539
}
540540

541541
drawLegend();
@@ -581,7 +581,7 @@ void NeuropixelsV1Interface::updateInfoString()
581581

582582
if (searchForCalibrationFilesButton->getToggleState())
583583
{
584-
searchForCalibrationFiles(calibrationFolder->getText().toStdString(), std::static_pointer_cast<Neuropixels1>(device)->getProbeSerialNumber());
584+
searchForCalibrationFiles(calibrationFolder->getText().toStdString(), sn);
585585
}
586586
}
587587

@@ -720,7 +720,6 @@ void NeuropixelsV1Interface::buttonClicked(Button* button)
720720
deviceEnableButton->setLabel(disabledButtonText);
721721
}
722722

723-
updateInfoString();
724723
repaint();
725724

726725
CoreServices::updateSignalChain(editor);
@@ -911,8 +910,15 @@ std::string NeuropixelsV1Interface::searchDirectoryForCalibrationFile(std::strin
911910

912911
if (calibrationFiles.size() != 1)
913912
{
914-
Onix1::showWarningMessageBoxAsync("Wrong Number of Calibration Files", "Expected to find 1 file matching '" + filename +
915-
"', but found " + std::to_string(calibrationFiles.size()) + " instead. Check logs for all files discovered.");
913+
std::string msg = "Expected to find 1 file matching '" + filename +
914+
"', but found " + std::to_string(calibrationFiles.size()) + " instead.";
915+
916+
if (calibrationFiles.size() > 1)
917+
{
918+
msg += " Check logs for all files discovered.";
919+
}
920+
921+
Onix1::showWarningMessageBoxAsync("Wrong Number of Calibration Files", msg);
916922
return "";
917923
}
918924

@@ -921,20 +927,37 @@ std::string NeuropixelsV1Interface::searchDirectoryForCalibrationFile(std::strin
921927

922928
void NeuropixelsV1Interface::setCalibrationFolderEnabledState(bool enabledState)
923929
{
930+
float alphaEnabled = 1.0, alphaDisabled = 0.25;
931+
924932
if (!enabledState)
925933
{
926-
calibrationFolder->setAlpha(0.25);
934+
calibrationFolder->setAlpha(alphaDisabled);
927935
calibrationFolderButton->setEnabled(false);
936+
937+
adcCalibrationFile->setAlpha(alphaEnabled);
938+
adcCalibrationFileButton->setEnabled(true);
939+
940+
gainCalibrationFile->setAlpha(alphaEnabled);
941+
gainCalibrationFileButton->setEnabled(true);
928942
}
929943
else
930944
{
931-
calibrationFolder->setAlpha(1.0);
945+
calibrationFolder->setAlpha(alphaEnabled);
932946
calibrationFolderButton->setEnabled(true);
947+
948+
adcCalibrationFile->setAlpha(alphaDisabled);
949+
adcCalibrationFileButton->setEnabled(false);
950+
951+
gainCalibrationFile->setAlpha(alphaDisabled);
952+
gainCalibrationFileButton->setEnabled(false);
933953
}
934954
}
935955

936956
void NeuropixelsV1Interface::searchForCalibrationFiles(std::string folder, uint64_t sn)
937957
{
958+
if (!device->isEnabled())
959+
return;
960+
938961
auto file = searchDirectoryForGainCalibrationFile(folder, sn);
939962

940963
if (file != "")

Source/UI/NeuropixelsV2eInterface.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@ void NeuropixelsV2eInterface::buttonClicked(Button* button)
102102
deviceEnableButton->setLabel(disabledButtonText);
103103
}
104104

105-
updateInfoString();
106105
repaint();
107106

108107
CoreServices::updateSignalChain(editor);

Source/UI/NeuropixelsV2eProbeInterface.cpp

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,10 @@ NeuropixelsV2eProbeInterface::NeuropixelsV2eProbeInterface(std::shared_ptr<Neuro
6868
searchForCorrectionFilesButton = std::make_unique<ToggleButton>("Search for calibration files automatically");
6969
searchForCorrectionFilesButton->setBounds(infoLabel->getX() + 2, infoLabel->getBottom() + 5, 350, 20);
7070
searchForCorrectionFilesButton->addListener(this);
71-
searchForCorrectionFilesButton->setTooltip("Open a dialog to choose the folder where calibration files exist. This can be a top-level folder which is recursively searched for a matching serial number.");
71+
searchForCorrectionFilesButton->setTooltip("Open a file dialog to choose a folder that contains all calibration files. The calibration file that matches your probe will automatically be selected if it exists in this folder.");
7272
addAndMakeVisible(searchForCorrectionFilesButton.get());
7373

74-
gainCorrectionFolderLabel = std::make_unique<Label>("gainCorrectionFolderLabel", "Gain Correction Folder");
74+
gainCorrectionFolderLabel = std::make_unique<Label>("gainCorrectionFolderLabel", "Calibration Folder");
7575
gainCorrectionFolderLabel->setBounds(searchForCorrectionFilesButton->getX(), searchForCorrectionFilesButton->getBottom() + 5, 240, 16);
7676
gainCorrectionFolderLabel->setColour(Label::textColourId, Colours::black);
7777
addAndMakeVisible(gainCorrectionFolderLabel.get());
@@ -92,8 +92,6 @@ NeuropixelsV2eProbeInterface::NeuropixelsV2eProbeInterface(std::shared_ptr<Neuro
9292

9393
gainCorrectionFolderChooser = std::make_unique<FileChooser>("Select Gain Correction Folder.", File());
9494

95-
setGainCorrectionFolderEnabledState(false);
96-
9795
gainCorrectionFileLabel = std::make_unique<Label>("gainCorrectionFileLabel", "Gain Correction File");
9896
gainCorrectionFileLabel->setBounds(gainCorrectionFolder->getX(), gainCorrectionFolder->getBottom() + 15, gainCorrectionFolderLabel->getWidth(), gainCorrectionFolderLabel->getHeight());
9997
gainCorrectionFileLabel->setColour(Label::textColourId, Colours::black);
@@ -352,6 +350,8 @@ NeuropixelsV2eProbeInterface::NeuropixelsV2eProbeInterface(std::shared_ptr<Neuro
352350
addAndMakeVisible(activityViewComponent.get());
353351

354352
#pragma endregion
353+
354+
setGainCorrectionFolderEnabledState(false);
355355
}
356356

357357
drawLegend();
@@ -380,7 +380,7 @@ void NeuropixelsV2eProbeInterface::updateInfoString()
380380
deviceLabel->setText(deviceString, dontSendNotification);
381381
infoLabel->setText(infoString, dontSendNotification);
382382

383-
if (searchForCorrectionFilesButton->getToggleState())
383+
if (searchForCorrectionFilesButton->getToggleState() && device->isEnabled())
384384
{
385385
auto file = searchDirectoryForCalibrationFile(gainCorrectionFolder->getText().toStdString(), sn);
386386

@@ -470,8 +470,6 @@ void NeuropixelsV2eProbeInterface::buttonClicked(Button* button)
470470

471471
if (fileChooser.browseForFileToOpen())
472472
{
473-
auto npx = std::static_pointer_cast<Neuropixels2e>(device);
474-
475473
if (ProbeInterfaceJson::readProbeSettingsFromJson(fileChooser.getResult(), npx->settings[probeIndex].get()))
476474
{
477475
applyProbeSettings(npx->settings[probeIndex].get());
@@ -485,8 +483,6 @@ void NeuropixelsV2eProbeInterface::buttonClicked(Button* button)
485483

486484
if (fileChooser.browseForFileToSave(true))
487485
{
488-
auto npx = std::static_pointer_cast<Neuropixels2e>(device);
489-
490486
if (!ProbeInterfaceJson::writeProbeSettingsToJson(fileChooser.getResult(), npx->settings[probeIndex].get()))
491487
CoreServices::sendStatusMessage("Failed to write probe channel map.");
492488
else
@@ -530,9 +526,9 @@ void NeuropixelsV2eProbeInterface::buttonClicked(Button* button)
530526
{
531527
setGainCorrectionFolderEnabledState(button->getToggleState());
532528

533-
if (button->getToggleState())
529+
if (button->getToggleState() && device->isEnabled())
534530
{
535-
auto calibrationFile = searchDirectoryForCalibrationFile(gainCorrectionFolder->getText().toStdString(), std::static_pointer_cast<Neuropixels2e>(device)->getProbeSerialNumber(probeIndex));
531+
auto calibrationFile = searchDirectoryForCalibrationFile(gainCorrectionFolder->getText().toStdString(), npx->getProbeSerialNumber(probeIndex));
536532

537533
if (calibrationFile != "")
538534
gainCorrectionFile->setText(calibrationFile);
@@ -543,10 +539,14 @@ void NeuropixelsV2eProbeInterface::buttonClicked(Button* button)
543539
if (gainCorrectionFolderChooser->browseForDirectory())
544540
{
545541
gainCorrectionFolder->setText(gainCorrectionFolderChooser->getResult().getFullPathName());
546-
auto calibrationFile = searchDirectoryForCalibrationFile(gainCorrectionFolder->getText().toStdString(), std::static_pointer_cast<Neuropixels2e>(device)->getProbeSerialNumber(probeIndex));
547542

548-
if (calibrationFile != "")
549-
gainCorrectionFile->setText(calibrationFile);
543+
if (device->isEnabled())
544+
{
545+
auto calibrationFile = searchDirectoryForCalibrationFile(gainCorrectionFolder->getText().toStdString(), npx->getProbeSerialNumber(probeIndex));
546+
547+
if (calibrationFile != "")
548+
gainCorrectionFile->setText(calibrationFile);
549+
}
550550
}
551551
}
552552
}
@@ -583,8 +583,15 @@ std::string NeuropixelsV2eProbeInterface::searchDirectoryForCalibrationFile(std:
583583

584584
if (calibrationFiles.size() != 1)
585585
{
586-
Onix1::showWarningMessageBoxAsync("Wrong Number of Calibration Files", "Expected to find 1 file matching '" + filename +
587-
"', but found " + std::to_string(calibrationFiles.size()) + " instead. Check logs for all files discovered.");
586+
std::string msg = "Expected to find 1 file matching '" + filename +
587+
"', but found " + std::to_string(calibrationFiles.size()) + " instead.";
588+
589+
if (calibrationFiles.size() > 1)
590+
{
591+
msg += " Check logs for all files discovered.";
592+
}
593+
594+
Onix1::showWarningMessageBoxAsync("Wrong Number of Calibration Files", msg);
588595
return "";
589596
}
590597

@@ -593,15 +600,23 @@ std::string NeuropixelsV2eProbeInterface::searchDirectoryForCalibrationFile(std:
593600

594601
void NeuropixelsV2eProbeInterface::setGainCorrectionFolderEnabledState(bool enabledState)
595602
{
603+
float alphaEnabled = 1.0, alphaDisabled = 0.25;
604+
596605
if (!enabledState)
597606
{
598-
gainCorrectionFolder->setAlpha(0.25);
607+
gainCorrectionFolder->setAlpha(alphaDisabled);
599608
gainCorrectionFolderButton->setEnabled(false);
609+
610+
gainCorrectionFile->setAlpha(alphaEnabled);
611+
gainCorrectionFileButton->setEnabled(true);
600612
}
601613
else
602614
{
603-
gainCorrectionFolder->setAlpha(1.0);
615+
gainCorrectionFolder->setAlpha(alphaEnabled);
604616
gainCorrectionFolderButton->setEnabled(true);
617+
618+
gainCorrectionFile->setAlpha(alphaDisabled);
619+
gainCorrectionFileButton->setEnabled(false);
605620
}
606621
}
607622

0 commit comments

Comments
 (0)