Skip to content

Commit 1f8ba34

Browse files
authored
Merge pull request #777 from bowring/fixswap
Fixed #776
2 parents 9859ef0 + 13aa2d8 commit 1f8ba34

File tree

12 files changed

+69
-41
lines changed

12 files changed

+69
-41
lines changed

common.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ apply plugin: 'maven-publish'
77

88

99
String mavenGroupId = 'org.cirdles'
10-
String mavenVersion = '2.0.8'
10+
String mavenVersion = '2.0.9'
1111

1212
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
1313

squidApp/src/main/java/org/cirdles/squid/gui/dateInterpretations/commonLeadAssignment/CommonLeadAssignmentController.java

+11-5
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,10 @@ public void initialize(URL url, ResourceBundle rb) {
125125
}
126126

127127
private void init() throws SquidException {
128+
if (squidProject.getTask().getOvercountCorrectionType().equals(Squid3Constants.OvercountCorrectionTypes.FR_Custom))
129+
{
130+
OvercountCorrection.correctionCustom(squidProject.getTask());
131+
}
128132
// update
129133
try {
130134
squidProject.getTask().setupSquidSessionSpecsAndReduceAndReport(false);
@@ -161,10 +165,13 @@ private void init() throws SquidException {
161165
mapOfWeightedMeansBySampleNames.put(entry.getKey(), spotSummaryDetails);
162166
}
163167

164-
// showUnknownsWithOvercountCorrections();
168+
ExpressionTreeInterface customExpression = squidProject.getTask().getNamedExpressionsMap().get(SWAP_CUSTOM_CORRECTION_204);
169+
if ((customExpression == null) || !customExpression.isValueModel()){
170+
customSWAPRB.setDisable(true);
171+
squidProject.getTask().setOvercountCorrectionType(Squid3Constants.OvercountCorrectionTypes.NONE);
172+
correctionNoneRB.setSelected(true);
173+
}
165174

166-
ExpressionTreeInterface customExpression = squidProject.getTask().getNamedExpressionsMap().get("SWAPCustomCorrection204");
167-
customSWAPRB.setDisable((customExpression == null) || !customExpression.isValueModel());
168175
switch (squidProject.getTask().getOvercountCorrectionType()) {
169176
case NONE:
170177
correctionNoneRB.setSelected(true);
@@ -177,7 +184,6 @@ private void init() throws SquidException {
177184
break;
178185
case FR_Custom:
179186
customSWAPRB.setSelected(true);
180-
OvercountCorrection.correctionCustom(squidProject.getTask());
181187
}
182188

183189
showUnknownsWithOvercountCorrections();
@@ -228,7 +234,7 @@ public void setUpHeader() {
228234

229235
biweight208Label.setText("biWgt 204 ovrCnts: " + formatter);
230236

231-
customSWAPLabel.setText("SWAPCustomCorrection204");
237+
customSWAPLabel.setText(SWAP_CUSTOM_CORRECTION_204);
232238

233239
viewDetailsButton.setStyle("-fx-font-size: 12px;-fx-font-weight: bold; -fx-padding: 0 0 0 0;");
234240
}

squidApp/src/main/java/org/cirdles/squid/gui/dateInterpretations/countCorrections/CountCorrectionsController.java

+16-11
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@
4444
import static org.cirdles.squid.gui.SquidUI.PIXEL_OFFSET_FOR_MENU;
4545
import static org.cirdles.squid.gui.SquidUI.primaryStageWindow;
4646
import static org.cirdles.squid.gui.SquidUIController.squidProject;
47-
import static org.cirdles.squid.tasks.expressions.builtinExpressions.BuiltInExpressionsDataDictionary.BIWT_204_OVR_CTS_FROM_207;
48-
import static org.cirdles.squid.tasks.expressions.builtinExpressions.BuiltInExpressionsDataDictionary.BIWT_204_OVR_CTS_FROM_208;
47+
import static org.cirdles.squid.tasks.expressions.builtinExpressions.BuiltInExpressionsDataDictionary.*;
4948

5049
/**
5150
* FXML Controller class
@@ -84,6 +83,13 @@ public class CountCorrectionsController implements Initializable {
8483
*/
8584
@Override
8685
public void initialize(URL url, ResourceBundle rb) {
86+
if (squidProject.getTask().getOvercountCorrectionType().equals(Squid3Constants.OvercountCorrectionTypes.FR_Custom)) {
87+
try {
88+
OvercountCorrection.correctionCustom(squidProject.getTask());
89+
} catch (SquidException e) {
90+
// throw new RuntimeException(e);
91+
}
92+
}
8793
// update
8894
try {
8995
squidProject.getTask().setupSquidSessionSpecsAndReduceAndReport(false);
@@ -95,8 +101,12 @@ public void initialize(URL url, ResourceBundle rb) {
95101
spotsTreeViewTextFlow.prefHeightProperty().bind(primaryStageWindow.getScene().heightProperty()
96102
.subtract(PIXEL_OFFSET_FOR_MENU + headerHBox.getPrefHeight()));
97103

98-
ExpressionTreeInterface customExpression = squidProject.getTask().getNamedExpressionsMap().get("SWAPCustomCorrection204");
99-
customSWAPRB.setDisable((customExpression == null) || !customExpression.isValueModel());
104+
ExpressionTreeInterface customExpression = squidProject.getTask().getNamedExpressionsMap().get(SWAP_CUSTOM_CORRECTION_204);
105+
if ((customExpression == null) || !customExpression.isValueModel()) {
106+
customSWAPRB.setDisable(true);
107+
squidProject.getTask().setOvercountCorrectionType(Squid3Constants.OvercountCorrectionTypes.NONE);
108+
}
109+
100110
switch (squidProject.getTask().getOvercountCorrectionType()) {
101111
case NONE:
102112
correctionNoneRB.setSelected(true);
@@ -109,11 +119,6 @@ public void initialize(URL url, ResourceBundle rb) {
109119
break;
110120
case FR_Custom:
111121
customSWAPRB.setSelected(true);
112-
try {
113-
OvercountCorrection.correctionCustom(squidProject.getTask());
114-
} catch (SquidException e) {
115-
// throw new RuntimeException(e);
116-
}
117122
}
118123

119124
setUpHeader();
@@ -181,10 +186,10 @@ private void showUnknownsWithOvercountCorrections() {
181186
double[][] r204_206_208 = spot.getTaskExpressionsEvaluationsPerSpot()
182187
.get(squidProject.getTask().getNamedExpressionsMap().get("SWAPCountCorrectionExpression204From208"));
183188
double[][] custom204 = new double[r204_206_208.length][r204_206_208[0].length];
184-
ExpressionTreeInterface customExp = squidProject.getTask().getNamedExpressionsMap().get("SWAPCustomCorrection204");
189+
ExpressionTreeInterface customExp = squidProject.getTask().getNamedExpressionsMap().get(SWAP_CUSTOM_CORRECTION_204);
185190
if ((null != customExp) && customExp.isValueModel()) {
186191
custom204 = spot.getTaskExpressionsEvaluationsPerSpot()
187-
.get(squidProject.getTask().getNamedExpressionsMap().get("SWAPCustomCorrection204"));
192+
.get(squidProject.getTask().getNamedExpressionsMap().get(SWAP_CUSTOM_CORRECTION_204));
188193
}
189194

190195
TextFlow textFlowI = new TextFlow();

squidApp/src/main/resources/org/cirdles/squid/gui/parameters/SquidParametersManagerGUI.fxml

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818

1919
<?import javafx.scene.control.*?>
2020
<?import javafx.scene.layout.*?>
21-
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="600.0" minWidth="900.0"
21+
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="600.0"
22+
minWidth="900.0"
2223
prefHeight="600.0" prefWidth="900.0" stylesheets="@../css/squidLabData.css"
2324
xmlns="http://javafx.com/javafx/17"
2425
fx:controller="org.cirdles.squid.gui.parameters.ParametersManagerGUIController">

squidCore/src/main/java/org/cirdles/squid/shrimp/ShrimpFraction.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import java.math.RoundingMode;
2929
import java.util.*;
3030

31+
import static org.cirdles.squid.tasks.expressions.builtinExpressions.BuiltInExpressionsDataDictionary.SWAP_CUSTOM_CORRECTION_204;
3132
import static org.cirdles.squid.utilities.conversionUtilities.CloningUtilities.clone2dArray;
3233

3334
/**
@@ -1001,7 +1002,7 @@ public String getOverCtCorr() {
10011002
retVal.append("Corrected from 208");
10021003
break;
10031004
case CUSTOM:
1004-
retVal.append("SWAPCustomCorrection204");
1005+
retVal.append(SWAP_CUSTOM_CORRECTION_204);
10051006
break;
10061007
}
10071008
return retVal.toString();

squidCore/src/main/java/org/cirdles/squid/tasks/Task.java

+7-3
Original file line numberDiff line numberDiff line change
@@ -503,6 +503,9 @@ public void updateTaskFromTaskDesign(TaskDesign taskDesign, boolean taskSkeleton
503503
String targetSampleName = customExp.getName().split("_WM_")[1].trim();
504504
customExp.getExpressionTree().setUnknownsGroupSampleName(targetSampleName);
505505
}
506+
if (taskExpressionsOrdered.contains(customExp)) {
507+
taskExpressionsOrdered.remove(customExp);
508+
}
506509
taskExpressionsOrdered.add(customExp);
507510
}
508511

@@ -668,9 +671,10 @@ public void generateBuiltInExpressions() {
668671

669672
SortedSet<Expression> overCountExpressionsOrdered = generateOverCountExpressions(isDirectAltPD());
670673
taskExpressionsOrdered.addAll(overCountExpressionsOrdered);
671-
if (!namedExpressionsMap.containsKey("SWAPCustomCorrection204")) {
674+
if (!namedExpressionsMap.containsKey(SWAP_CUSTOM_CORRECTION_204)) {
672675
Expression customExp = buildCountCorrectionCustomExpression();
673-
namedExpressionsMap.put("SWAPCustomCorrection204", customExp.getExpressionTree());
676+
namedExpressionsMap.put(SWAP_CUSTOM_CORRECTION_204, customExp.getExpressionTree());
677+
taskExpressionsOrdered.remove(customExp);
674678
taskExpressionsOrdered.add(customExp);
675679
}
676680

@@ -1080,7 +1084,7 @@ public void updateAllUnknownSpotsWithOverCountCorrectedBy204_206_208() {
10801084
}
10811085

10821086
public void updateAllUnknownSpotsWithCustomCorrection() {
1083-
ExpressionTreeInterface customExp = namedExpressionsMap.get("SWAPCustomCorrection204");
1087+
ExpressionTreeInterface customExp = namedExpressionsMap.get(SWAP_CUSTOM_CORRECTION_204);
10841088
if ((null != customExp) && customExp.isValueModel()) {
10851089
for (ShrimpFractionExpressionInterface spot : unknownSpots) {
10861090
SquidRatiosModel ratio204_206 = ((ShrimpFraction) spot).getRatioByName("204/206");

squidCore/src/main/java/org/cirdles/squid/tasks/TaskInterface.java

+9-5
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040

4141
import static org.cirdles.squid.constants.Squid3Constants.TaskTypeEnum.GEOCHRON;
4242
import static org.cirdles.squid.tasks.expressions.builtinExpressions.BuiltInExpressionsDataDictionary.*;
43-
import static org.cirdles.squid.tasks.expressions.builtinExpressions.BuiltinExpressionsCountCorrection204.*;
43+
import static org.cirdles.squid.tasks.expressions.builtinExpressions.BuiltinExpressionsCountCorrection204.buildCountCorrectionCustomExpression;
4444

4545
/**
4646
* @author James F. Bowring
@@ -415,10 +415,6 @@ default void applyDirectives(boolean customizeTaskExpressions) throws SquidExcep
415415
}
416416

417417
List<Expression> customExpressions = getCustomTaskExpressions();
418-
// special temporary case Sep 2019
419-
customExpressions.remove(buildCountCorrectionExpressionFrom207());
420-
customExpressions.remove(buildCountCorrectionExpressionFrom208());
421-
customExpressions.remove(buildCountCorrectionCustomExpression());
422418

423419
getTaskExpressionsOrdered().clear();
424420

@@ -497,6 +493,14 @@ default void applyDirectives(boolean customizeTaskExpressions) throws SquidExcep
497493
getTaskExpressionsOrdered().add(parentPPM);
498494
}
499495

496+
497+
Expression defaultCustomExp = buildCountCorrectionCustomExpression();
498+
if (customExpressions.contains(defaultCustomExp)) {
499+
Expression customExp = customExpressions.get(customExpressions.indexOf(defaultCustomExp));
500+
getNamedExpressionsMap().put(SWAP_CUSTOM_CORRECTION_204, customExp.getExpressionTree());
501+
getTaskExpressionsOrdered().remove(defaultCustomExp);
502+
}
503+
500504
getTaskExpressionsOrdered().addAll(customExpressions);
501505

502506
setChanged(true);

squidCore/src/main/java/org/cirdles/squid/tasks/expressions/Expression.java

+4
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545

4646
import static org.cirdles.squid.constants.Squid3Constants.*;
4747
import static org.cirdles.squid.constants.Squid3Constants.SpotTypes.UNKNOWN;
48+
import static org.cirdles.squid.tasks.expressions.builtinExpressions.BuiltInExpressionsDataDictionary.SWAP_CUSTOM_CORRECTION_204;
4849
import static org.cirdles.squid.tasks.expressions.functions.Function.replaceAliasedFunctionNamesInExpressionString;
4950

5051
/**
@@ -350,6 +351,9 @@ public String getNotes() {
350351
if (this.expressionTree.isSquidSpecialUPbThExpression()) {
351352
notes = BuiltInExpressionsNotes.BUILTIN_EXPRESSION_NOTES.get(name);
352353
}
354+
if (this.expressionTree.getName().compareToIgnoreCase(SWAP_CUSTOM_CORRECTION_204) == 0) {
355+
notes = BuiltInExpressionsNotes.BUILTIN_EXPRESSION_NOTES.get(SWAP_CUSTOM_CORRECTION_204);
356+
}
353357
if (this.isParameterValue()
354358
|| this.isReferenceMaterialValue()) {
355359
notes = "from Model: " + sourceModelNameAndVersion + "\n\n" + BuiltInExpressionsNotes.BUILTIN_EXPRESSION_NOTES.get(name);

squidCore/src/main/java/org/cirdles/squid/tasks/expressions/builtinExpressions/BuiltInExpressionsDataDictionary.java

+3
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,9 @@ public class BuiltInExpressionsDataDictionary {
193193
public static final String RAD_206PB204PB_FACTOR = "Rad_206Pb204Pb_Factor";
194194
public static final String RAD_208PB204PB_FACTOR = "Rad_208Pb204Pb_Factor";
195195
public static final List<String> COMPOSITION_EXPRESSION_NAMES = new ArrayList<>();
196+
// ************************ CUSTOM SWAPPING *********************
197+
public static final String SWAP_CUSTOM_CORRECTION_204 = "SWAPCustomCorrection204";
198+
// ************************ MISC CONSTANTS *********************
196199
private static final String R206_238CALIB_CONST = CALIB_CONST_206_238_ROOT + "_CalibConst";
197200
public static final String PB4COR206_238CALIB_CONST = PB4CORR + R206_238CALIB_CONST;
198201
public static final String PB4COR206_238CALIB_CONST_WM = WTDAV_PREFIX + PB4COR206_238CALIB_CONST;

squidCore/src/main/java/org/cirdles/squid/tasks/expressions/builtinExpressions/BuiltInExpressionsNotes.java

+9
Original file line numberDiff line numberDiff line change
@@ -546,5 +546,14 @@ public class BuiltInExpressionsNotes {
546546
+ " (i.e. the third element of the WtdAv vector output) calculated from "
547547
+ "any RM dataset of WtdAv_Xcor_208Pb232Th_CalibConst values. In this context, "
548548
+ "Xcor denotes the index isotope used for the common Pb correction in the RM (i.e. 204Pb or 207Pb).");
549+
550+
BUILTIN_EXPRESSION_NOTES.put(SWAP_CUSTOM_CORRECTION_204,
551+
"Edit this expression to calculate a custom corrected value "
552+
+ "for 204/206 as per Squid2.5 'column swapping' and invoke it from the Common Pb menu "
553+
+ "window for overcounts of 204. \n\n"
554+
+ "REQUIRED: Use the expression name '" + SWAP_CUSTOM_CORRECTION_204 + "' and define a ValueModel. \n"
555+
+ "The default definition is: 'ValueModel(Orig([\"204/206\"]),Orig([±\"204/206\"]),true)'. \n\n"
556+
+ " NOTE: Use the 'Orig' function to retrieve the unmutable value of a ratio. Otherwise, "
557+
+ "a circular logic obtains.");
549558
}
550559
}

squidCore/src/main/java/org/cirdles/squid/tasks/expressions/builtinExpressions/BuiltinExpressionsCountCorrection204.java

+5-14
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@
1717

1818
import org.cirdles.squid.tasks.expressions.Expression;
1919

20-
import static org.cirdles.squid.tasks.expressions.builtinExpressions.BuiltInExpressionsDataDictionary.BIWT_204_OVR_CTS_FROM_207;
21-
import static org.cirdles.squid.tasks.expressions.builtinExpressions.BuiltInExpressionsDataDictionary.BIWT_204_OVR_CTS_FROM_208;
20+
import static org.cirdles.squid.tasks.expressions.builtinExpressions.BuiltInExpressionsDataDictionary.*;
2221
import static org.cirdles.squid.tasks.expressions.builtinExpressions.BuiltInExpressionsFactory.buildExpression;
2322

2423
/**
@@ -28,7 +27,7 @@ public class BuiltinExpressionsCountCorrection204 {
2827

2928
/**
3029
* @return
31-
* @see https://github.com/CIRDLES/ET_Redux/wiki/SQ2.50-Procedural-Framework:-Part-7a-(204-overcounts)
30+
* @see <a href="https://github.com/CIRDLES/ET_Redux/wiki/SQ2.50-Procedural-Framework:-Part-7a-(204-overcounts)">...</a>
3231
*/
3332
public static Expression buildCountCorrectionExpressionFrom207() {
3433

@@ -67,7 +66,7 @@ public static Expression buildCountCorrectionExpressionFrom207() {
6766

6867
/**
6968
* @return
70-
* @see https://github.com/CIRDLES/ET_Redux/wiki/SQ2.50-Procedural-Framework:-Part-7a-(204-overcounts)
69+
* @see <a href="https://github.com/CIRDLES/ET_Redux/wiki/SQ2.50-Procedural-Framework:-Part-7a-(204-overcounts)">...</a>
7170
*/
7271
public static Expression buildCountCorrectionExpressionFrom208() {
7372

@@ -107,18 +106,10 @@ public static Expression buildCountCorrectionExpressionFrom208() {
107106
public static Expression buildCountCorrectionCustomExpression() {
108107

109108
Expression countCorrectionCustom = buildExpression(
110-
"SWAPCustomCorrection204",
109+
SWAP_CUSTOM_CORRECTION_204,
111110
"ValueModel(Orig([\"204/206\"]),Orig([±\"204/206\"]),true)", false, true, false);
112111

113-
countCorrectionCustom.getExpressionTree().setSquidSpecialUPbThExpression(true);
114-
countCorrectionCustom.setNotes(
115-
"Edit this expression to calculate a custom corrected value "
116-
+ "for 204/206 as per Squid2.5 'column swapping' and invoke it from the Common Pb menu "
117-
+ "window for overcounts of 204. \n\n"
118-
+ "REQUIRED: Use the expression name 'SWAPCustomCorrection204' and define a ValueModel. \n"
119-
+ "The default definition is: 'ValueModel(Orig([\"204/206\"]),Orig([±\"204/206\"]),true)'. \n\n"
120-
+ " NOTE: Use the 'Orig' function to retrieve the unmutable value of a ratio. Otherwise, "
121-
+ "a circular logic obtains.");
112+
countCorrectionCustom.getExpressionTree().setSquidSpecialUPbThExpression(false);
122113

123114
return countCorrectionCustom;
124115
}
Binary file not shown.

0 commit comments

Comments
 (0)