mirror of
https://github.com/PAMGuard/PAMGuard.git
synced 2024-11-21 22:52:22 +00:00
Bug fixes for deep leanring module (#155)
* Update exporter_help.md Updated help for exporter * Update .gitignore * Bug fixes for deep learning classifier. Updated the symbol options to make sure opacity is passed through the symbol chooser.
This commit is contained in:
parent
cfd42779a1
commit
38671987db
2
.gitignore
vendored
2
.gitignore
vendored
@ -114,3 +114,5 @@ settings.xml
|
|||||||
.classpath
|
.classpath
|
||||||
.settings/org.eclipse.jdt.core.prefs
|
.settings/org.eclipse.jdt.core.prefs
|
||||||
.classpath
|
.classpath
|
||||||
|
.settings/org.eclipse.jdt.core.prefs
|
||||||
|
.classpath
|
||||||
|
@ -600,7 +600,7 @@ public class PamArrayUtils {
|
|||||||
// int count = 0;
|
// int count = 0;
|
||||||
float cur;
|
float cur;
|
||||||
for(int i=0; i<arr.length; i++) {
|
for(int i=0; i<arr.length; i++) {
|
||||||
for(int j=0; j<arr.length; j++) {
|
for(int j=0; j<arr[i].length; j++) {
|
||||||
cur = arr[i][j];
|
cur = arr[i][j];
|
||||||
if (cur>max) {
|
if (cur>max) {
|
||||||
index[0]=i;
|
index[0]=i;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package PamView.symbol;
|
package PamView.symbol;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
import java.awt.Window;
|
import java.awt.Window;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
@ -70,6 +71,11 @@ public class StandardSymbolChooser extends PamSymbolChooser {
|
|||||||
if (modifiers == null || modifiers.size() == 0) {
|
if (modifiers == null || modifiers.size() == 0) {
|
||||||
return symbolData;
|
return symbolData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Integer alpha = null;
|
||||||
|
if (symbolData != null) {
|
||||||
|
alpha = symbolData.getFillColor().getAlpha();
|
||||||
|
}
|
||||||
|
|
||||||
boolean isCloned = false;
|
boolean isCloned = false;
|
||||||
|
|
||||||
@ -97,6 +103,11 @@ public class StandardSymbolChooser extends PamSymbolChooser {
|
|||||||
}
|
}
|
||||||
symbolData = modifiers.get(ind).modifySymbol(symbolData, projector, dataUnit);
|
symbolData = modifiers.get(ind).modifySymbol(symbolData, projector, dataUnit);
|
||||||
}
|
}
|
||||||
|
if (alpha != null && alpha < 255) {
|
||||||
|
Color currCol = symbolData.getFillColor();
|
||||||
|
currCol = new Color(currCol.getRed(), currCol.getGreen(), currCol.getBlue(), alpha);
|
||||||
|
symbolData.setFillColor(currCol);
|
||||||
|
}
|
||||||
return symbolData;
|
return symbolData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,9 +111,11 @@ public class PeakFreqModifier extends SymbolModifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
frequency=(frequency - peakFreqSymbolOptions.freqLimts[0])/(peakFreqSymbolOptions.freqLimts[1]-peakFreqSymbolOptions.freqLimts[0]);
|
frequency=(frequency - peakFreqSymbolOptions.freqLimts[0])/(peakFreqSymbolOptions.freqLimts[1]-peakFreqSymbolOptions.freqLimts[0]);
|
||||||
|
|
||||||
|
|
||||||
checkColourArray();
|
checkColourArray();
|
||||||
|
|
||||||
|
|
||||||
Color freqCol = PamUtilsFX.fxToAWTColor(this.colourArray.getColour(frequency));
|
Color freqCol = PamUtilsFX.fxToAWTColor(this.colourArray.getColour(frequency));
|
||||||
|
|
||||||
// System.out.println("Freq colour: " + freqCol.getRed() + " " + freqCol.getGreen() + " " + freqCol.getBlue());
|
// System.out.println("Freq colour: " + freqCol.getRed() + " " + freqCol.getGreen() + " " + freqCol.getBlue());
|
||||||
|
@ -42,6 +42,8 @@ import pamViewFX.fxNodes.PamSymbolFX;
|
|||||||
*/
|
*/
|
||||||
public class GenericDataPlotInfo extends TDDataInfoFX {
|
public class GenericDataPlotInfo extends TDDataInfoFX {
|
||||||
|
|
||||||
|
public static final double DEFAULT_FILL_OPACITY = 0.3;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Scale infos to show what axis clicks can be plotted on.
|
* Scale infos to show what axis clicks can be plotted on.
|
||||||
*/
|
*/
|
||||||
@ -351,5 +353,25 @@ public class GenericDataPlotInfo extends TDDataInfoFX {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the user selects a specific data line
|
||||||
|
* @param dataLine
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean setCurrentAxisName(ParameterType dataType, ParameterUnits dataUnits) {
|
||||||
|
setDefaultOpacity(dataType);
|
||||||
|
|
||||||
|
return super.setCurrentAxisName(dataType, dataUnits);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setDefaultOpacity(ParameterType dataType) {
|
||||||
|
if (dataType.equals(ParameterType.FREQUENCY)) {
|
||||||
|
this.genericSettingsPane.setDefaultFillOpacity(DEFAULT_FILL_OPACITY);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.genericSettingsPane.setDefaultFillOpacity(1.0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -170,6 +170,8 @@ public abstract class GenericLinePlotInfo extends TDDataInfoFX {
|
|||||||
}
|
}
|
||||||
GeneralProjector p = this.getTDGraph().getGraphProjector();
|
GeneralProjector p = this.getTDGraph().getGraphProjector();
|
||||||
PamSymbolChooser sc = symbolManager.getSymbolChooser(getTDGraph().getUniqueName(), p);
|
PamSymbolChooser sc = symbolManager.getSymbolChooser(getTDGraph().getUniqueName(), p);
|
||||||
|
|
||||||
|
|
||||||
return new TDManagedSymbolChooserFX(this, sc, TDSymbolChooserFX.DRAW_SYMBOLS);
|
return new TDManagedSymbolChooserFX(this, sc, TDSymbolChooserFX.DRAW_SYMBOLS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,9 +16,7 @@ import pamViewFX.symbol.StandardSymbolOptionsPane;
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Settings pane which holds the symbol options from the data block of the plot info.
|
* Settings pane which holds the symbol options from the data block of the plot info. *
|
||||||
* @author Jamie Macaulay
|
|
||||||
*
|
|
||||||
*
|
*
|
||||||
* @author Jamie Macaulay
|
* @author Jamie Macaulay
|
||||||
*
|
*
|
||||||
@ -161,5 +159,15 @@ public class GenericSettingsPane extends PamBorderPane implements TDSettingsPane
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the default fill opacity.
|
||||||
|
* @param opacity - the default fill opacity.
|
||||||
|
*/
|
||||||
|
public void setDefaultFillOpacity(double opacity) {
|
||||||
|
if (symbolOptionsPane instanceof StandardSymbolOptionsPane) {
|
||||||
|
((StandardSymbolOptionsPane) symbolOptionsPane).getDefaultSymbolPane().setDefaultFillOpacity(opacity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,8 +69,7 @@ public class RawClipDataInfo extends GenericDataPlotInfo {
|
|||||||
rawWavePlotManager = new RawClipWavePlotManager(this);
|
rawWavePlotManager = new RawClipWavePlotManager(this);
|
||||||
clipSettingsPane = new RawClipSettingsPane(this);
|
clipSettingsPane = new RawClipSettingsPane(this);
|
||||||
clipSettingsPane.setParams();
|
clipSettingsPane.setParams();
|
||||||
|
|
||||||
|
|
||||||
//create the symbol chooser.
|
//create the symbol chooser.
|
||||||
rawSymbolChoosr = new RawClipSymbolChooser(this, pamDataBlock.getPamSymbolManager().getSymbolChooser(tdGraph.getUniqueName(), tdGraph.getGraphProjector()), TDSymbolChooserFX.DRAW_SYMBOLS);
|
rawSymbolChoosr = new RawClipSymbolChooser(this, pamDataBlock.getPamSymbolManager().getSymbolChooser(tdGraph.getUniqueName(), tdGraph.getGraphProjector()), TDSymbolChooserFX.DRAW_SYMBOLS);
|
||||||
|
|
||||||
@ -278,6 +277,7 @@ public class RawClipDataInfo extends GenericDataPlotInfo {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called whenever settings are updated.
|
* Called whenever settings are updated.
|
||||||
*/
|
*/
|
||||||
@ -285,6 +285,16 @@ public class RawClipDataInfo extends GenericDataPlotInfo {
|
|||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setDefaultOpacity(ParameterType dataType) {
|
||||||
|
if (dataType.equals(ParameterType.FREQUENCY)) {
|
||||||
|
this.clipSettingsPane.setDefaultFillOpacity(DEFAULT_FILL_OPACITY);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.clipSettingsPane.setDefaultFillOpacity(1.0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -324,5 +324,15 @@ public class RawClipSettingsPane extends PamBorderPane implements TDSettingsPane
|
|||||||
public Pane getPane() {
|
public Pane getPane() {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the default fill opacity.
|
||||||
|
* @param opacity - the default fill opacity.
|
||||||
|
*/
|
||||||
|
public void setDefaultFillOpacity(double opacity) {
|
||||||
|
if (symbolOptionsPane instanceof StandardSymbolOptionsPane) {
|
||||||
|
((StandardSymbolOptionsPane) symbolOptionsPane).getDefaultSymbolPane().setDefaultFillOpacity(opacity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -355,7 +355,7 @@ public class DetectionPlotDisplay extends PamBorderPane {
|
|||||||
* the current data unit.
|
* the current data unit.
|
||||||
*/
|
*/
|
||||||
public void setupScrollBar(PamDataUnit newDataUnit){
|
public void setupScrollBar(PamDataUnit newDataUnit){
|
||||||
System.out.println("SETUP SCROLL BAR:");
|
// System.out.println("SETUP SCROLL BAR:");
|
||||||
|
|
||||||
if (currentDataInfo!=null) {
|
if (currentDataInfo!=null) {
|
||||||
//important we put this here as it allows the plot to set up the scroll bar pane.
|
//important we put this here as it allows the plot to set up the scroll bar pane.
|
||||||
|
@ -93,7 +93,7 @@ public abstract class WaveformPlot<D extends PamDataUnit> implements DetectionPl
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void setupAxis(D pamDetection, double sR, DetectionPlotProjector plotProjector){
|
public void setupAxis(D pamDetection, double sR, DetectionPlotProjector plotProjector){
|
||||||
System.out.println("WaveformPlot.setupAxis plotting the waveform: " + getWaveform(pamDetection)[0].length);
|
//System.out.println("WaveformPlot.setupAxis plotting the waveform: " + getWaveform(pamDetection)[0].length);
|
||||||
//all axis are used in the waveform plot except the right axis.
|
//all axis are used in the waveform plot except the right axis.
|
||||||
double[][] waveform=getWaveform(pamDetection);
|
double[][] waveform=getWaveform(pamDetection);
|
||||||
|
|
||||||
@ -121,8 +121,8 @@ public abstract class WaveformPlot<D extends PamDataUnit> implements DetectionPl
|
|||||||
plotProjector.setAxisMinMax((plotProjector.getAxis(Side.BOTTOM).getMinVal()/1000.)*sR,
|
plotProjector.setAxisMinMax((plotProjector.getAxis(Side.BOTTOM).getMinVal()/1000.)*sR,
|
||||||
(plotProjector.getAxis(Side.BOTTOM).getMaxVal()/1000)*sR, Side.TOP);
|
(plotProjector.getAxis(Side.BOTTOM).getMaxVal()/1000)*sR, Side.TOP);
|
||||||
|
|
||||||
System.out.println("WaveformPlot.setupAxis: min " + (plotProjector.getAxis(Side.BOTTOM).getMinVal()/1000.)*sR +
|
// System.out.println("WaveformPlot.setupAxis: min " + (plotProjector.getAxis(Side.BOTTOM).getMinVal()/1000.)*sR +
|
||||||
" max: " + (plotProjector.getAxis(Side.BOTTOM).getMaxVal()/1000)*sR);
|
// " max: " + (plotProjector.getAxis(Side.BOTTOM).getMaxVal()/1000)*sR);
|
||||||
|
|
||||||
|
|
||||||
// plotProjector.setAxisMinMax(0, (binLength*1000.)/sR, Side.BOTTOM);
|
// plotProjector.setAxisMinMax(0, (binLength*1000.)/sR, Side.BOTTOM);
|
||||||
@ -185,7 +185,7 @@ public abstract class WaveformPlot<D extends PamDataUnit> implements DetectionPl
|
|||||||
* @param projector - the projector
|
* @param projector - the projector
|
||||||
*/
|
*/
|
||||||
private void forcePaintPlot(D pamDetection, GraphicsContext gc, Rectangle rectangle, DetectionPlotProjector projector){
|
private void forcePaintPlot(D pamDetection, GraphicsContext gc, Rectangle rectangle, DetectionPlotProjector projector){
|
||||||
System.out.println("WaveformPlot.forcePaintPlot:");
|
// System.out.println("WaveformPlot.forcePaintPlot:");
|
||||||
currentWaveform=getWaveform(pamDetection);
|
currentWaveform=getWaveform(pamDetection);
|
||||||
|
|
||||||
if (currentWaveform==null) return;
|
if (currentWaveform==null) return;
|
||||||
@ -260,8 +260,10 @@ public abstract class WaveformPlot<D extends PamDataUnit> implements DetectionPl
|
|||||||
if (currentDetection == null || waveform==null || waveform.length==0 || waveform[0]==null)
|
if (currentDetection == null || waveform==null || waveform.length==0 || waveform[0]==null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
paintWaveform(waveform, currentDetection.getSequenceBitmap(), g, clipRect, (int) projector.getAxis(Side.TOP).getMinVal(), (int) projector.getAxis(Side.TOP).getMaxVal(),
|
paintWaveform(waveform, currentDetection.getSequenceBitmap(), g, clipRect,
|
||||||
log2Amplitude, color, !waveformPlotParams.showSperateWaveform || waveform.length==1, waveformPlotParams.invert);
|
(int) projector.getAxis(Side.TOP).getMinVal(), (int) projector.getAxis(Side.TOP).getMaxVal(),
|
||||||
|
log2Amplitude, color, !waveformPlotParams.showSperateWaveform || waveform.length == 1,
|
||||||
|
waveformPlotParams.invert);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -279,7 +281,7 @@ public abstract class WaveformPlot<D extends PamDataUnit> implements DetectionPl
|
|||||||
*/
|
*/
|
||||||
public static void paintWaveform(double[][] waveform, int channelBitMap, GraphicsContext g, Rectangle clipRect,
|
public static void paintWaveform(double[][] waveform, int channelBitMap, GraphicsContext g, Rectangle clipRect,
|
||||||
int minbin, int maxbin, double yScaleInfo, Color color, boolean singlePlot, boolean invert) {
|
int minbin, int maxbin, double yScaleInfo, Color color, boolean singlePlot, boolean invert) {
|
||||||
System.out.println("Paint the waveform: " + waveform[0].length);
|
// System.out.println("Paint the waveform: " + waveform[0].length);
|
||||||
g.setLineWidth(1);
|
g.setLineWidth(1);
|
||||||
|
|
||||||
// boolean singlePlot=!waveformPlotParams.showSperateWaveform;
|
// boolean singlePlot=!waveformPlotParams.showSperateWaveform;
|
||||||
|
@ -8,6 +8,7 @@ import detectionPlotFX.plots.WaveformPlot;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Plot for any RawDataHolder to show a waveform.
|
* Plot for any RawDataHolder to show a waveform.
|
||||||
|
*
|
||||||
* @author Jamie Macaulay
|
* @author Jamie Macaulay
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -38,7 +39,7 @@ public class RawWaveformPlot extends WaveformPlot<PamDataUnit>{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return "Click Waveform";
|
return "Waveform";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -7,7 +7,7 @@ The PAMGuard exporter allows users to export PAMGuard data, such as detections,
|
|||||||
The PAMGuard exporter can be accessed from *File->Export*. This brings up the Export dialog. The export dialog allows users to select which data to export, where to export it and the file format to export as. Each data block also has a settings icon which opens the data block's unique data selector. So for example, users can export only specific types of clicks or whistles between certain frequencies.
|
The PAMGuard exporter can be accessed from *File->Export*. This brings up the Export dialog. The export dialog allows users to select which data to export, where to export it and the file format to export as. Each data block also has a settings icon which opens the data block's unique data selector. So for example, users can export only specific types of clicks or whistles between certain frequencies.
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img width="920" height="450" src = "resources/PAMGuard_exporter_dialog_annotated.png">
|
<img width="920" height="475" src = "resources/PAMGuard_exporter_dialog_annotated.png">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<center><em> Diagram of the exporter dialog. The dialog allows users to select which part of the dataset to export, how to export it and which type of data to export </em></center>
|
<center><em> Diagram of the exporter dialog. The dialog allows users to select which part of the dataset to export, how to export it and which type of data to export </em></center>
|
||||||
@ -91,4 +91,4 @@ Any detection which contains raw sound data, for example a click, clip or deep l
|
|||||||
- *Individual* : Each detection is saved in it's own time stamped individual sound file.
|
- *Individual* : Each detection is saved in it's own time stamped individual sound file.
|
||||||
|
|
||||||
## After export
|
## After export
|
||||||
Once data are exported, the exported files are not part of PAMGuard's data management system i.e. PAMGuard has no record they exist and they are not shown in the data model etc. If you export the same data again to the same location, then previous exported files may be overwritten without warning.
|
Once data are exported, the exported files are not part of PAMGuard's data management system i.e. PAMGuard has no record they exist and they are not shown in the data model etc. If you export the same data again to the same location, then previous exported files may be overwritten without warning.
|
||||||
|
@ -330,7 +330,7 @@ public class WavDetExport {
|
|||||||
for (int i=0; i<wavDataUnitExports.size(); i++) {
|
for (int i=0; i<wavDataUnitExports.size(); i++) {
|
||||||
if (wavDataUnitExports.get(i).getUnitClass().isAssignableFrom(fnDataUnit.getClass())) {
|
if (wavDataUnitExports.get(i).getUnitClass().isAssignableFrom(fnDataUnit.getClass())) {
|
||||||
|
|
||||||
System.out.println("Append wav. data unit: " + n + " samples: " + wavDataUnitExports.get(i).getWavClip(fnDataUnit)[0].length + " zeroPad: " + zeroPad);
|
//System.out.println("Append wav. data unit: " + n + " samples: " + wavDataUnitExports.get(i).getWavClip(fnDataUnit)[0].length + " zeroPad: " + zeroPad);
|
||||||
|
|
||||||
if (zeroPad && lastfnDataUnit!=null) {
|
if (zeroPad && lastfnDataUnit!=null) {
|
||||||
//we need to append zero samples between the detections.
|
//we need to append zero samples between the detections.
|
||||||
@ -352,7 +352,7 @@ public class WavDetExport {
|
|||||||
//now safety check - is this more than one GB of data. Each sample is 16bits but the input double array is 64 bits each.
|
//now safety check - is this more than one GB of data. Each sample is 16bits but the input double array is 64 bits each.
|
||||||
double size = samplesPad*16*audioFormat.getChannels()/1024/1024;
|
double size = samplesPad*16*audioFormat.getChannels()/1024/1024;
|
||||||
|
|
||||||
System.out.println("Append wav. zero pad" + samplesPad);
|
//System.out.println("Append wav. zero pad" + samplesPad);
|
||||||
//
|
//
|
||||||
if (size>MAX_ZEROPAD_SIZE_MEGABYTES) {
|
if (size>MAX_ZEROPAD_SIZE_MEGABYTES) {
|
||||||
wavWrite.close();
|
wavWrite.close();
|
||||||
|
62
src/pamViewFX/symbol/PamColorPicker.java
Normal file
62
src/pamViewFX/symbol/PamColorPicker.java
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
package pamViewFX.symbol;
|
||||||
|
|
||||||
|
import javafx.scene.control.ColorPicker;
|
||||||
|
import javafx.scene.paint.Color;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Color picket which allows users to set a default opacity for the default colours selected by a user.
|
||||||
|
*
|
||||||
|
* @author Jamie Macaulay
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class PamColorPicker extends ColorPicker {
|
||||||
|
|
||||||
|
private double defaultOpacity = 1.;
|
||||||
|
|
||||||
|
private boolean lastColDefault = true;
|
||||||
|
|
||||||
|
|
||||||
|
public PamColorPicker() {
|
||||||
|
|
||||||
|
//A bit of a HACK - if a user selects a new colour then the opacity is set to defaultOpacity rather than 1.
|
||||||
|
//If the new colour already has the opacity set by the user then nothing happens.
|
||||||
|
this.valueProperty().addListener((obsVal, oldVal, newVal)->{
|
||||||
|
|
||||||
|
// System.out.println("New colour default opacity: " + defaultOpacity + " " +newVal.getOpacity() + " " + (Math.abs(newVal.getOpacity()-defaultOpacity)));
|
||||||
|
|
||||||
|
// if (oldVal.getRed()!=newVal.getRed() || oldVal.getGreen()!=newVal.getGreen() || oldVal.getBlue()!=newVal.getBlue()) {
|
||||||
|
//we have a new colour - let's set the opacity
|
||||||
|
if (newVal.getOpacity()==1.) {
|
||||||
|
//change the opacity to default. Other values of opacity indicate the user has changed
|
||||||
|
PamColorPicker.this.setValue(Color.color(newVal.getRed(), newVal.getGreen(), newVal.getBlue(), defaultOpacity));
|
||||||
|
lastColDefault=true;
|
||||||
|
}
|
||||||
|
else if (Math.abs(newVal.getOpacity()-defaultOpacity)>(0.5/255)) {
|
||||||
|
lastColDefault=false;
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the default opacity of a colour when selected.
|
||||||
|
*/
|
||||||
|
public void setDefaultOpacity(double opacity) {
|
||||||
|
|
||||||
|
// System.out.println("Set default opacity: " + opacity + " currently default:? " + lastColDefault + " " + this.getValue().getOpacity());
|
||||||
|
|
||||||
|
this.defaultOpacity=opacity;
|
||||||
|
|
||||||
|
//when it is set, then change the current colour if it the default opacity only - otherwise keep user specific settings.
|
||||||
|
if (lastColDefault) {
|
||||||
|
PamColorPicker.this.setValue(Color.color(this.getValue().getRed(), this.getValue().getGreen(), this.getValue().getBlue(), defaultOpacity));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getDefaultOpacity() {
|
||||||
|
return defaultOpacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -477,13 +477,13 @@ public class StandardSymbolModifierPane extends SymbolModifierPane {
|
|||||||
public class ColorChooserPane extends SymbolChooserControls {
|
public class ColorChooserPane extends SymbolChooserControls {
|
||||||
|
|
||||||
|
|
||||||
private ColorPicker symbolFillColourPicker;
|
private PamColorPicker symbolFillColourPicker;
|
||||||
|
|
||||||
|
|
||||||
public ColorChooserPane(int modFlag, String name) {
|
public ColorChooserPane(int modFlag, String name) {
|
||||||
super(modFlag, name);
|
super(modFlag, name);
|
||||||
|
|
||||||
symbolFillColourPicker= new ColorPicker();
|
symbolFillColourPicker= new PamColorPicker();
|
||||||
symbolFillColourPicker.setStyle("-fx-color-label-visible: false ;");
|
symbolFillColourPicker.setStyle("-fx-color-label-visible: false ;");
|
||||||
// symbolFillColourPicker.valueProperty().addListener((obsVal, oldVal, newVal)->{
|
// symbolFillColourPicker.valueProperty().addListener((obsVal, oldVal, newVal)->{
|
||||||
// //send a notification to the pane that a colour has changed
|
// //send a notification to the pane that a colour has changed
|
||||||
@ -492,12 +492,33 @@ public class StandardSymbolModifierPane extends SymbolModifierPane {
|
|||||||
this.setSettingsPane(symbolFillColourPicker);
|
this.setSettingsPane(symbolFillColourPicker);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the default opacity for the colour picker. When a new colour is selected,
|
||||||
|
* then the opacity will default to the set value.
|
||||||
|
*
|
||||||
|
* @param opacity - the default opacity to set. Default is 1.
|
||||||
|
*/
|
||||||
|
public void setDefaultOpacity(double opacity) {
|
||||||
|
symbolFillColourPicker.setDefaultOpacity(opacity);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the default opacity for the colour picker. When a new colour is selected,
|
||||||
|
* then the opacity will default to the set value.
|
||||||
|
*
|
||||||
|
* @return opacity - the default opacity of the colour picker.
|
||||||
|
*/
|
||||||
|
public double getDefaultOpacity() {
|
||||||
|
return symbolFillColourPicker.getDefaultOpacity();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public ColorPicker getSymbolColourPicker() {
|
public ColorPicker getSymbolColourPicker() {
|
||||||
return symbolFillColourPicker;
|
return symbolFillColourPicker;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSymbolColourPicker(ColorPicker symbolFillColourPicker) {
|
public void setSymbolColourPicker(PamColorPicker symbolFillColourPicker) {
|
||||||
this.symbolFillColourPicker = symbolFillColourPicker;
|
this.symbolFillColourPicker = symbolFillColourPicker;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -625,5 +646,23 @@ public class StandardSymbolModifierPane extends SymbolModifierPane {
|
|||||||
public PamVBox getSymbolBox() {
|
public PamVBox getSymbolBox() {
|
||||||
return symbolBox;
|
return symbolBox;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the default opacity for selected colours from the colour picker. The
|
||||||
|
* default opacity is the the opacity when a user selects a new colour. The user
|
||||||
|
* can alter this with advanced colour controls.
|
||||||
|
*
|
||||||
|
* @param opacity - the default opacity for fill colours.
|
||||||
|
*/
|
||||||
|
public void setDefaultFillOpacity(double opacity) {
|
||||||
|
|
||||||
|
//set the opacity ofr all fill colour controls
|
||||||
|
for (int i=0; i<symbolChooserControls.size(); i++) {
|
||||||
|
if ((symbolChooserControls.get(i).getModFlag() & SymbolModType.FILLCOLOUR) != 0){
|
||||||
|
((ColorChooserPane) symbolChooserControls.get(i)).setDefaultOpacity(opacity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -502,5 +502,11 @@ public class StandardSymbolOptionsPane extends FXSymbolOptionsPane<StandardSymbo
|
|||||||
public BorderPane getMainPane() {
|
public BorderPane getMainPane() {
|
||||||
return mainPane;
|
return mainPane;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public StandardSymbolModifierPane getDefaultSymbolPane() {
|
||||||
|
return defaultSymbolPane;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,8 @@ package rawDeepLearningClassifier.dataPlotFX;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
|
|
||||||
|
import org.jamdev.jpamutils.JamArr;
|
||||||
|
|
||||||
import PamController.PamController;
|
import PamController.PamController;
|
||||||
import PamUtils.PamArrayUtils;
|
import PamUtils.PamArrayUtils;
|
||||||
import PamView.GeneralProjector;
|
import PamView.GeneralProjector;
|
||||||
@ -38,7 +40,7 @@ public class DLSymbolModifier extends SymbolModifier {
|
|||||||
/**
|
/**
|
||||||
* The default symbol data for data annotated with a deep elanring classifier.
|
* The default symbol data for data annotated with a deep elanring classifier.
|
||||||
*/
|
*/
|
||||||
private SymbolData symbolData = new SymbolData(PamSymbolType.SYMBOL_CIRCLE, 5, 5, true, Color.BLACK, Color.BLACK);
|
private SymbolData symbolData = new SymbolData(PamSymbolType.SYMBOL_CIRCLE, 10, 10, true, Color.BLACK, Color.BLACK);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -142,10 +144,13 @@ public class DLSymbolModifier extends SymbolModifier {
|
|||||||
|
|
||||||
int[] indexBest = PamArrayUtils.maxPos(results);
|
int[] indexBest = PamArrayUtils.maxPos(results);
|
||||||
|
|
||||||
|
// System.out.println( " Index best: " + indexBest[0] + " " + indexBest[1]);
|
||||||
|
//
|
||||||
|
// JamArr.printArray(results[0]);
|
||||||
|
|
||||||
|
|
||||||
if (passed || !dlSymbolOptions.showOnlyBinary) {
|
if (passed || !dlSymbolOptions.showOnlyBinary) {
|
||||||
//work out the class colour...
|
//work out the class colour...
|
||||||
|
|
||||||
javafx.scene.paint.Color color = PamUtilsFX.intToColor(dlSymbolOptions.classColors[indexBest[1]]);
|
javafx.scene.paint.Color color = PamUtilsFX.intToColor(dlSymbolOptions.classColors[indexBest[1]]);
|
||||||
|
|
||||||
Color colorAWT = PamUtilsFX.fxToAWTColor(color);
|
Color colorAWT = PamUtilsFX.fxToAWTColor(color);
|
||||||
|
@ -140,6 +140,7 @@ public class DLPredictonPane extends DynamicSettingsPane<DLPredictionFilterParam
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DLPredictionFilterParams getParams(DLPredictionFilterParams currParams) {
|
public DLPredictionFilterParams getParams(DLPredictionFilterParams currParams) {
|
||||||
|
if (classPanes==null) return currParams;
|
||||||
|
|
||||||
for (int i=0; i<classPanes.length ; i++) {
|
for (int i=0; i<classPanes.length ; i++) {
|
||||||
currParams.classSelect[i] = classPanes[i].enable.isSelected();
|
currParams.classSelect[i] = classPanes[i].enable.isSelected();
|
||||||
|
@ -736,7 +736,7 @@ public class SegmenterProcess extends PamProcess {
|
|||||||
|
|
||||||
//add some extra metadata to the chunks
|
//add some extra metadata to the chunks
|
||||||
packageSegmenterDataUnit(currentRawChunks[i]);
|
packageSegmenterDataUnit(currentRawChunks[i]);
|
||||||
System.out.println("Segmenter process: Save current segments to datablock: " + currentRawChunks[i].getParentDataUnit().getUID() + " " + i + currentRawChunks[i].getRawData()[0][0]);
|
//System.out.println("Segmenter process: Save current segments to datablock: " + currentRawChunks[i].getParentDataUnit().getUID() + " " + i + currentRawChunks[i].getRawData()[0][0]);
|
||||||
|
|
||||||
//send the raw data unit off to be classified!
|
//send the raw data unit off to be classified!
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user