107 changed files with 1661 additions and 1766 deletions
-
14src/main/java/a8k/app/a8kproj/A8kIdCardDataParseService.java
-
22src/main/java/a8k/app/a8kproj/optalgo/type/LineProcessContext.java
-
6src/main/java/a8k/app/a8kproj/optalgo/type/LinearResultSeq.java
-
9src/main/java/a8k/app/a8kproj/optalgo/type/OptAlgoError.java
-
5src/main/java/a8k/app/a8kproj/optalgo/type/OptCfg.java
-
7src/main/java/a8k/app/a8kproj/optalgo/type/OptProcessContext.java
-
32src/main/java/a8k/app/a8kproj/optalgo/utils/A8kOptAlgoUtils.java
-
38src/main/java/a8k/app/a8kproj/optalgo/utils/Filter.java
-
28src/main/java/a8k/app/a8kproj/optanalyzer/context/OptAnalyzeContext.java
-
6src/main/java/a8k/app/a8ktype/state/ProjectTaskContext.java
-
4src/main/java/a8k/app/a8ktype/type/ReactionResult.java
-
2src/main/java/a8k/app/dao/type/OptCfg.java
-
2src/main/java/a8k/app/dao/type/OptRawScanData.java
-
2src/main/java/a8k/app/dao/type/ProjExtInfoCard.java
-
2src/main/java/a8k/app/dao/type/ProjectBaseInfo.java
-
4src/main/java/a8k/app/dao/type/ReactionReport.java
-
6src/main/java/a8k/app/dao/type/a8kidcard/zenum/A8kOptType.java
-
2src/main/java/a8k/app/hardware/driver/OptModuleDriver.java
-
2src/main/java/a8k/app/hardware/utils/OptGainConvert.java
-
33src/main/java/a8k/app/optalgo/A8kOptCurveAnalyzer.java
-
122src/main/java/a8k/app/optalgo/A8kPeakAnalyzer.java
-
8src/main/java/a8k/app/optalgo/README.md
-
2src/main/java/a8k/app/optalgo/algo/BasicAlgo.java
-
4src/main/java/a8k/app/optalgo/algo/LeastSquare.java
-
2src/main/java/a8k/app/optalgo/algo/SubSampling.java
-
2src/main/java/a8k/app/optalgo/algo/SupperSampling.java
-
4src/main/java/a8k/app/optalgo/type/A8kOptPeak.java
-
25src/main/java/a8k/app/optalgo/type/A8kOptPeakInfo.java
-
3src/main/java/a8k/app/optalgo/type/A8kOptPeaks.java
-
4src/main/java/a8k/app/optalgo/type/A8kOptProcessException.java
-
2src/main/java/a8k/app/optalgo/type/A8kOptX.java
-
2src/main/java/a8k/app/optalgo/type/LinearResult.java
-
2src/main/java/a8k/app/optalgo/type/OptScanDirection.java
-
6src/main/java/a8k/app/optalgo/type/OptScanResult.java
-
2src/main/java/a8k/app/optalgo/type/PeakDivision.java
-
2src/main/java/a8k/app/optalgo/type/PeakFindState.java
-
2src/main/java/a8k/app/optalgo/type/PeakName.java
-
2src/main/java/a8k/app/optalgo/type/ReactionResultStatus.java
-
4src/main/java/a8k/app/optalgo/type/a8kidcard/A8kNormalFn.java
-
4src/main/java/a8k/app/optalgo/type/a8kidcard/A8kOptFnFormula.java
-
4src/main/java/a8k/app/optalgo/type/a8kidcard/A8kPiecewiseFn.java
-
4src/main/java/a8k/app/optalgo/type/a8kidcard/A8kResultBuilderFn.java
-
4src/main/java/a8k/app/optalgo/type/a8kidcard/A8kResultUnitConverter.java
-
2src/main/java/a8k/app/optalgo/type/a8kidcard/zenum/A8kFnType.java
-
6src/main/java/a8k/app/optalgo/type/a8kidcard/zenum/A8kOptType.java
-
2src/main/java/a8k/app/optalgo/type/a8kidcard/zenum/A8kReactionFlowType.java
-
2src/main/java/a8k/app/optalgo/type/a8kidcard/zenum/A8kResultUnit.java
-
2src/main/java/a8k/app/optalgo/utils/A8kOptGainAdjuster.java
-
37src/main/java/a8k/app/optalgo/utils/A8kOptPeakInfoBuilder.java
-
34src/main/java/a8k/app/optalgo/utils/A8kOptXGetter.java
-
16src/main/java/a8k/app/optalgo/utils/OptChecker.java
-
11src/main/java/a8k/app/optalgo/utils/PeakDivisionComputer.java
-
6src/main/java/a8k/app/optalgo/utils/PeakNameAssigner.java
-
2src/main/java/a8k/app/optalgo/version/OptAlogVersion.java
-
44src/main/java/a8k/app/service/data/FileMgrService.java
-
14src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java
-
2src/main/java/a8k/app/service/data/ReactionRecordMgrService.java
-
18src/main/java/a8k/app/service/lowerctrl/OptScanModuleCtrlService.java
-
2src/main/java/a8k/app/service/mainctrl/AppConsumablesScanService.java
-
8src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/AC20ScanReactionPlate.java
-
2src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/AC41ProcessSample.java
-
2src/main/java/a8k/app/service/param/optparam/OptModuleExtParamsMgr.java
-
4src/main/java/a8k/app/utils/ProjBuildinInfo.java
-
2src/main/java/a8k/app/utils/ProjInfoUtils.java
-
42src/main/java/a8k/extui/factory/FakeOptScanResultFactory.java
-
10src/main/java/a8k/extui/factory/ProjExtInfoCardFactory.java
-
8src/main/java/a8k/extui/page/extapp/A8kOptVerification.java
-
8src/main/java/a8k/extui/page/extapp/OptFullFlowVerificationPage.java
-
2src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java
-
10src/main/java/a8k/extui/page/extapp/debug_assistant/FakeReactionRecordGeneratorPage.java
-
4src/main/java/a8k/extui/page/extapp/debug_assistant/FakeStateGeneratorPage.java
-
4src/main/java/a8k/extui/page/extsetting/db/ReactionRecordMgrDebugPage.java
-
8src/main/java/a8k/extui/page/test/codetest/OptFormulaTestPage.java
-
19src/main/java/a8k/extui/page/test/codetest/OptFormulaTestPageV2.java
-
8src/main/java/a8k/extui/page/test/verification/P51FullFlowVerificationPage.java
@ -1,22 +0,0 @@ |
|||
package a8k.app.a8kproj.optalgo.type; |
|||
|
|||
public class LineProcessContext { |
|||
|
|||
//过采样6000 |
|||
public double[] afSupperVal; |
|||
//中值滤波6000 |
|||
public double[] afSupperMedianVal; |
|||
|
|||
//下采样到1000个点 |
|||
public double[] raw1000; |
|||
//生成1000个的平滑曲线 |
|||
public double[] avg1000; |
|||
//生成1000个的斜率曲线 |
|||
public double[] diff1000; |
|||
//求数据的均值(巴迪泰A5000算法) |
|||
public double avgLine; |
|||
|
|||
//在曲线开始的位置第10个到15点的斜率 |
|||
public double baselineSlope; |
|||
|
|||
} |
@ -1,6 +0,0 @@ |
|||
package a8k.app.a8kproj.optalgo.type; |
|||
|
|||
public class LinearResultSeq { |
|||
public Float[] slope; |
|||
public Float intercept; |
|||
} |
@ -1,9 +0,0 @@ |
|||
package a8k.app.a8kproj.optalgo.type; |
|||
|
|||
public enum OptAlgoError { |
|||
Success, |
|||
LostPeak, |
|||
LostPeakStart, |
|||
LostPeakEnd, |
|||
} |
|||
|
@ -1,5 +0,0 @@ |
|||
package a8k.app.a8kproj.optalgo.type; |
|||
|
|||
public class OptCfg { |
|||
public Integer peakNum; |
|||
} |
@ -1,7 +0,0 @@ |
|||
package a8k.app.a8kproj.optalgo.type; |
|||
|
|||
public class OptProcessContext { |
|||
Double[] supperVal; //超采样,1200*5=6000 |
|||
Double[] supperMedianVal; //supper_val,窗口平滑滤波,6000 |
|||
Double[] supperSmoothSubVal; //supper_smooth_val 均值压缩,6000/24=25 |
|||
} |
@ -1,32 +0,0 @@ |
|||
package a8k.app.a8kproj.optalgo.utils; |
|||
|
|||
public class A8kOptAlgoUtils { |
|||
|
|||
static public Integer[] supperSamplingAndSubSampling(Integer[] data) { |
|||
double[] indata = new double[data.length]; |
|||
for (int i = 0; i < data.length; i++) { |
|||
indata[i] = data[i]; |
|||
} |
|||
|
|||
var result = supperSamplingAndSubSampling(indata); |
|||
Integer[] outdata = new Integer[result.length]; |
|||
for (int i = 0; i < result.length; i++) { |
|||
outdata[i] = (int) result[i]; |
|||
} |
|||
return outdata; |
|||
} |
|||
|
|||
static public double[] supperSamplingAndSubSampling(double[] data) { |
|||
//过采样 |
|||
var afSupperVal = SupperSampling.process(data, 5); |
|||
//中值滤波 |
|||
var afSupperMedianVal = Filter.medianFiltering(afSupperVal, 25); |
|||
|
|||
//下采样到1000个点 |
|||
var raw1000 = SubSampling.process(afSupperMedianVal, 6); |
|||
//生成1000个的平滑曲线 |
|||
var avg1000 = Filter.smooth(raw1000, 13); |
|||
|
|||
return SubSampling.process(avg1000, 4); |
|||
} |
|||
} |
@ -1,38 +0,0 @@ |
|||
package a8k.app.a8kproj.optalgo.utils; |
|||
|
|||
public class Filter { |
|||
static public double[] medianFiltering(double[] inputRaw, int windows_size) { |
|||
double[] medianRaw = new double[inputRaw.length]; |
|||
double[] windows = new double[windows_size]; |
|||
|
|||
int windows_size_half = (windows_size - 1) / 2; |
|||
|
|||
for (int index = windows_size_half; index < inputRaw.length - windows_size_half; index++) { |
|||
System.arraycopy(inputRaw, index - windows_size_half, windows, 0, windows_size); |
|||
BasicAlgo.bubbleSort(windows); // 从小到大顺序排序 |
|||
medianRaw[index] = windows[windows_size_half + 1]; |
|||
} |
|||
|
|||
BasicAlgo.padArraryAfWindowsAlgo(medianRaw, windows_size); |
|||
return medianRaw; |
|||
} |
|||
|
|||
|
|||
static public double[] smooth(double[] inputRaw, int windows_size) { |
|||
double[] smoothRaw = new double[inputRaw.length]; |
|||
int windows_size_half = (windows_size - 1) / 2; |
|||
|
|||
for (int index = windows_size_half; index < inputRaw.length - windows_size_half; index++) { |
|||
double sum = 0; |
|||
for (int i = index - windows_size_half; i <= index + windows_size_half; i++) { |
|||
sum += inputRaw[i]; |
|||
} |
|||
smoothRaw[index] = sum / windows_size; |
|||
} |
|||
|
|||
BasicAlgo.padArraryAfWindowsAlgo(smoothRaw, windows_size); |
|||
return smoothRaw; |
|||
} |
|||
|
|||
|
|||
} |
@ -1,28 +0,0 @@ |
|||
package a8k.app.a8kproj.optanalyzer.context; |
|||
|
|||
import a8k.app.a8ktype.state.SampleInfo; |
|||
import a8k.app.dao.type.OptCfg; |
|||
import a8k.app.utils.ProjInfo; |
|||
|
|||
public class OptAnalyzeContext { |
|||
|
|||
public SampleInfo sampleInfo; |
|||
public ProjInfo projInfoCxt; |
|||
public int subProjIndex; |
|||
|
|||
public OptAnalyzeContext(SampleInfo sampleInfo, ProjInfo projInfoCxt, int subProjIndex) { |
|||
this.sampleInfo = sampleInfo; |
|||
this.projInfoCxt = projInfoCxt; |
|||
this.subProjIndex = subProjIndex; |
|||
} |
|||
|
|||
public OptCfg getProjOptInfo() { |
|||
return projInfoCxt.buildIn.optcfg.get(subProjIndex); |
|||
} |
|||
|
|||
public String getProjName() { |
|||
return projInfoCxt.buildIn.projName; |
|||
} |
|||
|
|||
|
|||
} |
@ -1,6 +0,0 @@ |
|||
package a8k.app.dao.type.a8kidcard.zenum; |
|||
|
|||
public enum A8kOptType { |
|||
FOPT, |
|||
TOPT, |
|||
} |
@ -0,0 +1,8 @@ |
|||
```angular2html |
|||
|
|||
1. 该目录为巴迪泰光学算法相关内容 |
|||
2. 入口类为Ak8OptAlgoV2 |
|||
3. utils部分工具也可以使用 |
|||
4. 不包含任何Component |
|||
|
|||
``` |
@ -1,4 +1,4 @@ |
|||
package a8k.app.a8kproj.optalgo.utils; |
|||
package a8k.app.optalgo.algo; |
|||
|
|||
import org.springframework.util.Assert; |
|||
|
@ -1,6 +1,6 @@ |
|||
package a8k.app.a8kproj.optalgo.utils; |
|||
package a8k.app.optalgo.algo; |
|||
|
|||
import a8k.app.a8kproj.optalgo.type.LinearResult; |
|||
import a8k.app.optalgo.type.LinearResult; |
|||
import org.springframework.util.Assert; |
|||
|
|||
public class LeastSquare { |
@ -1,4 +1,4 @@ |
|||
package a8k.app.a8kproj.optalgo.utils; |
|||
package a8k.app.optalgo.algo; |
|||
|
|||
public class SubSampling { |
|||
public static double[] process(double[] inputRaw, int nSubSampleRate) { |
@ -1,4 +1,4 @@ |
|||
package a8k.app.a8kproj.optalgo.utils; |
|||
package a8k.app.optalgo.algo; |
|||
|
|||
public class SupperSampling { |
|||
static public double[] process(double[] inputRaw, Integer nUpSampleRate) { |
@ -1,6 +1,4 @@ |
|||
package a8k.app.a8kproj.optalgo.type; |
|||
|
|||
import a8k.app.a8ktype.opttype.PeakName; |
|||
package a8k.app.optalgo.type; |
|||
|
|||
public class A8kOptPeak { |
|||
public PeakFindState state = PeakFindState.NOT_FIND_PEAK; |
@ -0,0 +1,25 @@ |
|||
package a8k.app.optalgo.type; |
|||
|
|||
public class A8kOptPeakInfo { |
|||
|
|||
public String algoVersion = ""; |
|||
|
|||
public double[] resultData; // 250 POINT |
|||
|
|||
public A8kOptPeak T4; |
|||
public A8kOptPeak R; |
|||
public A8kOptPeak H; |
|||
public A8kOptPeak T; |
|||
public A8kOptPeak C; |
|||
|
|||
public Double pdR; //1 |
|||
public Double pdAR; //2 |
|||
public Double pdATR; //3 |
|||
public Double pdRFR; //5 |
|||
public Double pdT4R; //6 |
|||
public Double pdT4T3R; //7 |
|||
|
|||
|
|||
|
|||
|
|||
} |
@ -1,6 +1,5 @@ |
|||
package a8k.app.a8kproj.optalgo.type; |
|||
package a8k.app.optalgo.type; |
|||
|
|||
import a8k.app.a8ktype.opttype.PeakName; |
|||
import org.springframework.util.Assert; |
|||
|
|||
public class A8kOptPeaks { |
@ -1,6 +1,4 @@ |
|||
package a8k.app.a8kproj.optanalyzer.exception; |
|||
|
|||
import a8k.app.a8ktype.opttype.ReactionResultStatus; |
|||
package a8k.app.optalgo.type; |
|||
|
|||
public class A8kOptProcessException extends Exception { |
|||
public ReactionResultStatus status = ReactionResultStatus.SUCCESS; |
@ -1,4 +1,4 @@ |
|||
package a8k.app.a8ktype.opttype; |
|||
package a8k.app.optalgo.type; |
|||
|
|||
public enum A8kOptX { |
|||
USUPPORT, |
@ -1,4 +1,4 @@ |
|||
package a8k.app.a8kproj.optalgo.type; |
|||
package a8k.app.optalgo.type; |
|||
|
|||
public class LinearResult { |
|||
public double slope; |
@ -1,4 +1,4 @@ |
|||
package a8k.app.a8ktype.opttype; |
|||
package a8k.app.optalgo.type; |
|||
|
|||
public enum OptScanDirection { |
|||
FORWARD, //从左向右扫描 |
@ -1,4 +1,4 @@ |
|||
package a8k.app.a8ktype.opttype; |
|||
package a8k.app.optalgo.type; |
|||
|
|||
public enum PeakDivision { |
|||
R(PeakName.T, PeakName.C), //T/C |
@ -1,4 +1,4 @@ |
|||
package a8k.app.a8kproj.optalgo.type; |
|||
package a8k.app.optalgo.type; |
|||
|
|||
public enum PeakFindState { |
|||
FIND_PEAK, |
@ -1,4 +1,4 @@ |
|||
package a8k.app.a8ktype.opttype; |
|||
package a8k.app.optalgo.type; |
|||
|
|||
public enum PeakName { |
|||
T4, |
@ -1,4 +1,4 @@ |
|||
package a8k.app.a8ktype.opttype; |
|||
package a8k.app.optalgo.type; |
|||
|
|||
import io.swagger.v3.oas.annotations.media.Schema; |
|||
|
@ -1,6 +1,6 @@ |
|||
package a8k.app.dao.type.a8kidcard; |
|||
package a8k.app.optalgo.type.a8kidcard; |
|||
|
|||
import a8k.app.a8ktype.opttype.A8kOptX; |
|||
import a8k.app.optalgo.type.A8kOptX; |
|||
|
|||
import java.io.Serializable; |
|||
|
@ -1,6 +1,6 @@ |
|||
package a8k.app.dao.type.a8kidcard; |
|||
package a8k.app.optalgo.type.a8kidcard; |
|||
|
|||
import a8k.app.dao.type.a8kidcard.zenum.A8kFnType; |
|||
import a8k.app.optalgo.type.a8kidcard.zenum.A8kFnType; |
|||
|
|||
import java.io.Serializable; |
|||
|
@ -1,6 +1,6 @@ |
|||
package a8k.app.dao.type.a8kidcard; |
|||
package a8k.app.optalgo.type.a8kidcard; |
|||
|
|||
import a8k.app.a8ktype.opttype.A8kOptX; |
|||
import a8k.app.optalgo.type.A8kOptX; |
|||
|
|||
import java.io.Serializable; |
|||
|
@ -1,6 +1,6 @@ |
|||
package a8k.app.dao.type.a8kidcard; |
|||
package a8k.app.optalgo.type.a8kidcard; |
|||
|
|||
import a8k.app.dao.type.a8kidcard.zenum.A8kResultUnit; |
|||
import a8k.app.optalgo.type.a8kidcard.zenum.A8kResultUnit; |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.ArrayList; |
@ -1,6 +1,6 @@ |
|||
package a8k.app.dao.type.a8kidcard; |
|||
package a8k.app.optalgo.type.a8kidcard; |
|||
|
|||
import a8k.app.dao.type.a8kidcard.zenum.A8kResultUnit; |
|||
import a8k.app.optalgo.type.a8kidcard.zenum.A8kResultUnit; |
|||
|
|||
import java.io.Serializable; |
|||
|
@ -1,4 +1,4 @@ |
|||
package a8k.app.dao.type.a8kidcard.zenum; |
|||
package a8k.app.optalgo.type.a8kidcard.zenum; |
|||
|
|||
public enum A8kFnType { |
|||
NormalFn(1),//正常函数 |
@ -0,0 +1,6 @@ |
|||
package a8k.app.optalgo.type.a8kidcard.zenum; |
|||
|
|||
public enum A8kOptType { |
|||
FOPT, |
|||
TOPT, |
|||
} |
@ -1,4 +1,4 @@ |
|||
package a8k.app.dao.type.a8kidcard.zenum; |
|||
package a8k.app.optalgo.type.a8kidcard.zenum; |
|||
|
|||
public enum A8kReactionFlowType { |
|||
/** |
@ -1,4 +1,4 @@ |
|||
package a8k.app.dao.type.a8kidcard.zenum; |
|||
package a8k.app.optalgo.type.a8kidcard.zenum; |
|||
|
|||
public enum A8kResultUnit { |
|||
Original(0, ""), |
@ -1,4 +1,4 @@ |
|||
package a8k.app.a8kproj.optalgo.utils; |
|||
package a8k.app.optalgo.utils; |
|||
|
|||
import org.springframework.util.Assert; |
|||
|
@ -1,11 +1,11 @@ |
|||
package a8k.app.a8kproj.optanalyzer; |
|||
|
|||
import a8k.app.a8kproj.optalgo.type.A8kOptPeak; |
|||
import a8k.app.a8kproj.optalgo.type.PeakFindState; |
|||
import a8k.app.a8kproj.optanalyzer.exception.A8kOptProcessException; |
|||
import a8k.app.a8ktype.opttype.PeakDivision; |
|||
import a8k.app.a8ktype.opttype.PeakName; |
|||
import a8k.app.a8ktype.opttype.ReactionResultStatus; |
|||
package a8k.app.optalgo.utils; |
|||
|
|||
import a8k.app.optalgo.type.A8kOptPeak; |
|||
import a8k.app.optalgo.type.PeakFindState; |
|||
import a8k.app.optalgo.type.A8kOptProcessException; |
|||
import a8k.app.optalgo.type.PeakDivision; |
|||
import a8k.app.optalgo.type.PeakName; |
|||
import a8k.app.optalgo.type.ReactionResultStatus; |
|||
|
|||
public class OptChecker { |
|||
|
@ -1,13 +1,10 @@ |
|||
package a8k.app.a8kproj.optanalyzer; |
|||
package a8k.app.optalgo.utils; |
|||
|
|||
import a8k.app.a8kproj.optalgo.type.A8kOptPeak; |
|||
import a8k.app.a8kproj.optalgo.type.A8kOptPeaks; |
|||
import a8k.app.a8ktype.opttype.PeakDivision; |
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
import a8k.app.optalgo.type.A8kOptPeak; |
|||
import a8k.app.optalgo.type.A8kOptPeaks; |
|||
import a8k.app.optalgo.type.PeakDivision; |
|||
|
|||
public class PeakDivisionComputer { |
|||
private static final Logger log = LoggerFactory.getLogger(PeakDivisionComputer.class); |
|||
|
|||
public static Double computePeakDivision(PeakDivision pdtype, A8kOptPeaks peaks) { |
|||
A8kOptPeak numerator = peaks.findPeak(pdtype.numerator); |
@ -1,7 +1,7 @@ |
|||
package a8k.app.a8kproj.optanalyzer; |
|||
package a8k.app.optalgo.utils; |
|||
|
|||
import a8k.app.a8kproj.optalgo.type.A8kOptPeaks; |
|||
import a8k.app.a8ktype.opttype.PeakName; |
|||
import a8k.app.optalgo.type.A8kOptPeaks; |
|||
import a8k.app.optalgo.type.PeakName; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
|
|||
@Slf4j |
@ -1,4 +1,4 @@ |
|||
package a8k.app.a8kproj.optalgo.version; |
|||
package a8k.app.optalgo.version; |
|||
|
|||
public class OptAlogVersion { |
|||
static public final String version = "1.0.0"; |
Write
Preview
Loading…
Cancel
Save
Reference in new issue