Image OTF

This commit is contained in:
gac-x11ma
2021-04-12 14:27:13 +02:00
parent e4d933c4be
commit 3ba3997b5e
33 changed files with 9946 additions and 142 deletions

View File

@@ -86,7 +86,7 @@ public class DataAcquisition extends Panel {
SwingUtils.setEnumCombo(comboImgMethod, ImgMethod.class, true);
Component[] parameterControls = new Component[0];
for (JPanel panel : new JPanel[]{panelImgControls, panelSpectrum}) {
for (JPanel panel : new JPanel[]{panelImgControls, panelSpectrum, panelParameters}) {
for (Class cls : new Class[]{JComboBox.class, JSpinner.class, JToggleButton.class}) {
parameterControls = Arr.append(parameterControls, SwingUtils.getComponentsByType(panel, cls));
}
@@ -188,7 +188,7 @@ public class DataAcquisition extends Panel {
spinnerImgEng1.setVisible(comboImgMethod.getSelectedItem() == ImgMethod.Two_Energies.toString());
checkSwitchPol.setVisible(comboImgMethod.getSelectedItem() == ImgMethod.Take_Image.toString());
spinnerScans.setVisible(comboImgMethod.getSelectedItem() == ImgMethod.Take_Image.toString());
labelScans.setVisible(comboImgMethod.getSelectedItem() == ImgMethod.Take_Image.toString());
labelScans.setVisible(comboImgMethod.getSelectedItem() == ImgMethod.Take_Image.toString());
//panelSecondImage.setVisible(comboImgMethod.getSelectedItem() != ImgMethod.Take_Image.toString());
@@ -198,6 +198,9 @@ public class DataAcquisition extends Panel {
buttonSpecStart.setEnabled(getState() == State.Ready);
buttonSpecAbort.setEnabled(getState().isProcessing());
buttonImgOTFStart.setEnabled(getState() == State.Ready);
buttonImgOTFAbort.setEnabled(getState().isProcessing());
try {
String id = getSetting("ID");
boolean single = !id.equals("ID1_ID2");
@@ -338,8 +341,19 @@ public class DataAcquisition extends Panel {
return t;
});
}
void runAbsSpectrum() throws Context.ContextStateException {
Map<String, List<Integer>> getRois(){
Map<String, List<Integer>> roi = new HashMap<>();
for (int i = 0; i < rois.size(); i++) {
roi.put("Region" + (i + 1), Arrays.asList(new Integer[]{rois.get(i).getPosition().x,
rois.get(i).getPosition().y,
rois.get(i).getSize().width,
rois.get(i).getSize().height}));
}
return roi;
}
List getRanges(){
List ranges = new ArrayList();
for (int i = 0; i < modelRegions.getRowCount(); i++) {
List row = new ArrayList();
@@ -347,8 +361,11 @@ public class DataAcquisition extends Panel {
row.add(modelRegions.getValueAt(i, 1));
row.add(modelRegions.getValueAt(i, 2));
ranges.add(row);
}
}
return ranges;
}
void runAbsSpectrum() throws Context.ContextStateException {
HashMap args = new HashMap();
args.put("SAVE_SPECTRUM", checkSpecSaveSpectrum.isSelected());
args.put("SAVE_IMAGES", checkSpecSaveImages.isSelected());
@@ -357,15 +374,8 @@ public class DataAcquisition extends Panel {
args.put("EXPOSURE", spinnerSpecExp.getValue());
args.put("AVERAGE", spinnerSpecAvg.getValue());
args.put("NUMBER_SCANS", spinnerSpecScans.getValue());
args.put("RANGES", ranges);
Map<String, List<Integer>> roi = new HashMap<>();
for (int i = 0; i < rois.size(); i++) {
roi.put("Region" + (i + 1), Arrays.asList(new Integer[]{rois.get(i).getPosition().x,
rois.get(i).getPosition().y,
rois.get(i).getSize().width,
rois.get(i).getSize().height}));
}
args.put("ROI", roi);
args.put("RANGES", getRanges());
args.put("ROI", getRois());
runAsync("templates/EigerAbsSpec", args).handle((ret, t) -> {
if ((t != null) && (!getContext().isAborted())) {
@@ -414,6 +424,39 @@ public class DataAcquisition extends Panel {
});
}
}
void runImageOTF() throws Exception {
HashMap args = new HashMap();
Double e1 = (Double) spinnerE1.getValue();
Double e2 = (Double) spinnerE2.getValue();
args.put("E1", e1);
args.put("E2", e2);
args.put("TIME", (Double) spinnerTime.getValue());
args.put("DELAY", (Double) spinnerDelay.getValue());
String file = getContext().getSetup().expandPath("ImageOTF");
args.put("FILE", file);
String folder = getContext().getSetup().expandPath("{year}_{month}/{date}");
args.put("FOLDER", folder);
args.put("ROI", getRois());
args.put("SAVE_IMAGES", checkImgOTFSaveImages.isSelected());
buttonImgOTFAbort.setEnabled(true);
runAsync("templates/EnergyScan_img", args).handle((ok, ex) -> {
try {
buttonImgOTFAbort.setEnabled(false);
if (ex != null) {
throw ex;
} else {
}
} catch (Throwable t) {
getLogger().log(Level.WARNING, null, ex);
//showException((Exception)ex);
}
return ok;
});
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
@@ -528,6 +571,19 @@ public class DataAcquisition extends Panel {
dvpOffID1b2 = new ch.psi.pshell.swing.DeviceValuePanel();
dvpOffID2b2 = new ch.psi.pshell.swing.DeviceValuePanel();
labelOffID2a2 = new javax.swing.JLabel();
jPanel7 = new javax.swing.JPanel();
panelParameters = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
spinnerE1 = new javax.swing.JSpinner();
jLabel2 = new javax.swing.JLabel();
spinnerE2 = new javax.swing.JSpinner();
jLabel3 = new javax.swing.JLabel();
spinnerTime = new javax.swing.JSpinner();
jLabel5 = new javax.swing.JLabel();
spinnerDelay = new javax.swing.JSpinner();
checkImgOTFSaveImages = new javax.swing.JCheckBox();
buttonImgOTFStart = new javax.swing.JButton();
buttonImgOTFAbort = new javax.swing.JButton();
panelNorm.setBorder(javax.swing.BorderFactory.createTitledBorder("Normalization"));
@@ -1493,6 +1549,126 @@ public class DataAcquisition extends Panel {
jTabbedPane1.addTab("Absorption Spectrum", jPanel3);
panelParameters.setBorder(javax.swing.BorderFactory.createTitledBorder("Parameters"));
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
jLabel1.setText("E start:");
jLabel1.setToolTipText("");
spinnerE1.setModel(new javax.swing.SpinnerNumberModel(680.0d, 0.0d, 9999.0d, 1.0d));
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
jLabel2.setText("E end:");
jLabel2.setToolTipText("");
spinnerE2.setModel(new javax.swing.SpinnerNumberModel(750.0d, 0.0d, 9999.0d, 1.0d));
jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
jLabel3.setText("Time(min):");
spinnerTime.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 60.0d, 1.0d));
jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
jLabel5.setText("Delay(s):");
spinnerDelay.setModel(new javax.swing.SpinnerNumberModel(0.1d, 0.0d, 600.0d, 1.0d));
checkImgOTFSaveImages.setText("Save images");
javax.swing.GroupLayout panelParametersLayout = new javax.swing.GroupLayout(panelParameters);
panelParameters.setLayout(panelParametersLayout);
panelParametersLayout.setHorizontalGroup(
panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelParametersLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(checkImgOTFSaveImages)
.addGroup(panelParametersLayout.createSequentialGroup()
.addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel3)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(spinnerE1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(spinnerTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 175, Short.MAX_VALUE)
.addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(spinnerE2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(spinnerDelay, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(151, Short.MAX_VALUE))
);
panelParametersLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerDelay, spinnerE1, spinnerE2, spinnerTime});
panelParametersLayout.setVerticalGroup(
panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelParametersLayout.createSequentialGroup()
.addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(spinnerE1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2)
.addComponent(spinnerE2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(spinnerTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5)
.addComponent(spinnerDelay, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 119, Short.MAX_VALUE)
.addComponent(checkImgOTFSaveImages)
.addContainerGap())
);
buttonImgOTFStart.setText("Start");
buttonImgOTFStart.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonImgOTFStartActionPerformed(evt);
}
});
buttonImgOTFAbort.setText("Abort");
buttonImgOTFAbort.setEnabled(false);
buttonImgOTFAbort.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonImgOTFAbortActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
jPanel7.setLayout(jPanel7Layout);
jPanel7Layout.setHorizontalGroup(
jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel7Layout.createSequentialGroup()
.addContainerGap()
.addComponent(panelParameters, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel7Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(buttonImgOTFStart)
.addGap(64, 64, 64)
.addComponent(buttonImgOTFAbort)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel7Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonImgOTFAbort, buttonImgOTFStart});
jPanel7Layout.setVerticalGroup(
jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addComponent(panelParameters, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 151, Short.MAX_VALUE)
.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(buttonImgOTFAbort)
.addComponent(buttonImgOTFStart))
.addGap(40, 40, 40))
);
jTabbedPane1.addTab("Image OTF", jPanel7);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
@@ -1763,11 +1939,29 @@ public class DataAcquisition extends Panel {
}
}//GEN-LAST:event_radioAvPshellActionPerformed
private void buttonImgOTFStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonImgOTFStartActionPerformed
try {
runImageOTF();
} catch (Exception ex) {
showException(ex);
}
}//GEN-LAST:event_buttonImgOTFStartActionPerformed
private void buttonImgOTFAbortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonImgOTFAbortActionPerformed
try {
abort();
} catch (InterruptedException ex) {
getLogger().log(Level.SEVERE, null, ex);
}
}//GEN-LAST:event_buttonImgOTFAbortActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton buttonAdd;
private javax.swing.JButton buttonClear;
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JButton buttonImgAbort;
private javax.swing.JButton buttonImgOTFAbort;
private javax.swing.JButton buttonImgOTFStart;
private javax.swing.JButton buttonImgStart;
private javax.swing.JButton buttonOpen;
private javax.swing.JButton buttonRemove;
@@ -1782,6 +1976,7 @@ public class DataAcquisition extends Panel {
private javax.swing.JButton buttonSpecAbort;
private javax.swing.JButton buttonSpecStart;
private javax.swing.JCheckBox checkImgAutosave;
private javax.swing.JCheckBox checkImgOTFSaveImages;
private javax.swing.JCheckBox checkSpecSaveImages;
private javax.swing.JCheckBox checkSpecSaveSpectrum;
private javax.swing.JCheckBox checkSpecSwitchPol;
@@ -1804,6 +1999,8 @@ public class DataAcquisition extends Panel {
private ch.psi.pshell.swing.DeviceValuePanel dvpOffID2b;
private ch.psi.pshell.swing.DeviceValuePanel dvpOffID2b1;
private ch.psi.pshell.swing.DeviceValuePanel dvpOffID2b2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel20;
private javax.swing.JLabel jLabel21;
private javax.swing.JLabel jLabel23;
@@ -1811,9 +2008,11 @@ public class DataAcquisition extends Panel {
private javax.swing.JLabel jLabel25;
private javax.swing.JLabel jLabel26;
private javax.swing.JLabel jLabel29;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel30;
private javax.swing.JLabel jLabel31;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
@@ -1821,6 +2020,7 @@ public class DataAcquisition extends Panel {
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel9;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
@@ -1852,11 +2052,15 @@ public class DataAcquisition extends Panel {
private javax.swing.JPanel panelNorm;
private javax.swing.JPanel panelNorm1;
private javax.swing.JPanel panelNorm2;
private javax.swing.JPanel panelParameters;
private javax.swing.JPanel panelRoi;
private javax.swing.JPanel panelSpectrum;
private javax.swing.JRadioButton radioAvDetector;
private javax.swing.JRadioButton radioAvPshell;
private ch.psi.pshell.imaging.Renderer rendererRoi;
private javax.swing.JSpinner spinnerDelay;
private javax.swing.JSpinner spinnerE1;
private javax.swing.JSpinner spinnerE2;
private javax.swing.JSpinner spinnerImgAvg;
private javax.swing.JSpinner spinnerImgEng1;
private javax.swing.JSpinner spinnerImgEng2;
@@ -1867,6 +2071,7 @@ public class DataAcquisition extends Panel {
private javax.swing.JSpinner spinnerSpecAvg;
private javax.swing.JSpinner spinnerSpecExp;
private javax.swing.JSpinner spinnerSpecScans;
private javax.swing.JSpinner spinnerTime;
private javax.swing.JTable tableRegions;
private javax.swing.JTable tableRoi;
private javax.swing.JButton textClearOutliersMask;