Skip to content

Commit c5458bf

Browse files
Merge branch 'develop' into feature/isobaricWorkflow
2 parents e751b0d + 3ddb8b9 commit c5458bf

9 files changed

Lines changed: 199 additions & 248 deletions

File tree

.github/workflows/openms_ci_matrix_full.yml

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ jobs:
8181
compiler: g++
8282
compiler_ver: 11
8383

84-
8584
- os: ubuntu-22.04
8685
compiler: clang++
8786
compiler_ver: 15
@@ -171,7 +170,7 @@ jobs:
171170

172171
# Create the changelog for the release from our overall changelog
173172
- id: create_changelog
174-
if: matrix.compiler != 'clang++' && startsWith(steps.extract_branch.outputs.RUN_NAME,'release') && startsWith(matrix.os, 'ubuntu')
173+
if: matrix.compiler != 'clang++' && startsWith(steps.extract_branch.outputs.RUN_NAME,'release') && startsWith(matrix.os, 'ubuntu') && runner.arch == 'arm64'
175174
shell: bash
176175
name: Create changelog for release on Ubuntu + GCC
177176
run: |
@@ -371,7 +370,7 @@ jobs:
371370
372371
# Upload the changelog to the same artifact that we will add the installers to.
373372
- name: Upload changelog as artifact
374-
if: steps.set-vars.outputs.pkg_type != 'none' && startsWith(steps.extract_branch.outputs.RUN_NAME,'release') && startsWith(matrix.os, 'ubuntu')
373+
if: steps.set-vars.outputs.pkg_type != 'none' && startsWith(steps.extract_branch.outputs.RUN_NAME,'release') && startsWith(matrix.os, 'ubuntu') && runner.arch == 'arm64'
375374
uses: actions/upload-artifact@v4
376375
with:
377376
name: changelog.txt
@@ -448,7 +447,7 @@ jobs:
448447
BUILD_TYPE: "Release"
449448
OPENMP: "ON"
450449
BOOST_USE_STATIC: ${{ steps.set-vars.outputs.static_boost }}
451-
COMPILE_PXDS: ${{ startsWith(matrix.os, 'ubuntu') && github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'develop' && 'ON' || 'OFF' }} # test generation of pxds
450+
COMPILE_PXDS: ${{ (startsWith(matrix.os, 'ubuntu') && github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'develop' && runner.arch == 'arm64') && 'ON' || 'OFF' }}
452451
# BUILD_FLAGS: "-p:CL_MPCount=2" # For VS Generator and MSBuild
453452
BUILD_FLAGS: "-j${{ steps.cpu-cores.outputs.count }}" # Ninja will otherwise use all cores (doesn't go well in GHA).
454453
CMAKE_CCACHE_EXE: "ccache"
@@ -543,7 +542,7 @@ jobs:
543542
544543
#Zip the documentation first, since there are :: which make the upload action choke.
545544
- name: Zip Documentation
546-
if: steps.set-vars.outputs.pkg_type != 'none' && startsWith(matrix.os, 'ubuntu')
545+
if: steps.set-vars.outputs.pkg_type != 'none' && startsWith(matrix.os, 'ubuntu') && runner.arch == 'arm64'
547546
uses: thedoctor0/zip-release@0.7.6
548547
with:
549548
type: 'zip'
@@ -553,7 +552,7 @@ jobs:
553552

554553
# Compress the source
555554
- name: Create tarball
556-
if: steps.set-vars.outputs.pkg_type != 'none' && startsWith(matrix.os, 'ubuntu')
555+
if: steps.set-vars.outputs.pkg_type != 'none' && startsWith(matrix.os, 'ubuntu') && runner.arch == 'arm64'
557556
run: |
558557
tar --exclude='bld/*' \
559558
--exclude='OpenMS-${{ steps.create_changelog.outputs.version_number }}.tar.gz' \
@@ -565,7 +564,7 @@ jobs:
565564
566565
# Upload the source tar
567566
- name: Upload source tar as artifact
568-
if: steps.set-vars.outputs.pkg_type != 'none' && startsWith(matrix.os, 'ubuntu')
567+
if: steps.set-vars.outputs.pkg_type != 'none' && startsWith(matrix.os, 'ubuntu') && runner.arch == 'arm64'
569568
uses: actions/upload-artifact@v4
570569
with:
571570
name: OpenMS-${{ steps.create_changelog.outputs.version_number }}.tar.gz
@@ -576,7 +575,7 @@ jobs:
576575
# Only upload docs when we are building the package, use the ubuntu build simply 'cause its fast
577576

578577
- name: Upload Documentation as artifacts
579-
if: steps.set-vars.outputs.pkg_type != 'none' && startsWith(matrix.os, 'ubuntu')
578+
if: steps.set-vars.outputs.pkg_type != 'none' && startsWith(matrix.os, 'ubuntu') && runner.arch == 'arm64'
580579
uses: actions/upload-artifact@v4
581580
with:
582581
name: documentation
@@ -585,7 +584,8 @@ jobs:
585584
586585
- name: Generate KNIME descriptors and payloads
587586
# We never want to build the KNIME update site on our second Ubuntu + Clang matrix entry even if inputs.knime is true, so we check for that specific os + compiler combo
588-
if: steps.set-vars.outputs.pkg_type != 'none' || ( inputs.knime && !(startsWith(matrix.os, 'ubuntu') && startsWith(matrix.compiler, 'clang++') ) )
587+
# we also don't want it from both the arm and x86_64 builds
588+
if: (steps.set-vars.outputs.pkg_type != 'none' && !(startsWith(matrix.os, 'ubuntu') && runner.arch == 'arm64')) || ( inputs.knime && !(startsWith(matrix.os, 'ubuntu') && (startsWith(matrix.compiler, 'clang++') || runner.arch == 'arm64') ) )
589589
shell: bash
590590
run: |
591591
cd $GITHUB_WORKSPACE/OpenMS/bld/
@@ -595,7 +595,8 @@ jobs:
595595
596596
- name: Upload KNIME payload and descriptors as artifacts
597597
# We never want to build the KNIME update site on our second Ubuntu + Clang matrix entry even if inputs.knime is true, so we check for that specific os + compiler combo
598-
if: steps.set-vars.outputs.pkg_type != 'none' || ( inputs.knime && !(startsWith(matrix.os, 'ubuntu') && startsWith(matrix.compiler, 'clang++') ) )
598+
# we also don't want it from both the arm and x86_64 builds
599+
if: (steps.set-vars.outputs.pkg_type != 'none' && !(startsWith(matrix.os, 'ubuntu') && runner.arch == 'arm64')) || ( inputs.knime && !(startsWith(matrix.os, 'ubuntu') && (startsWith(matrix.compiler, 'clang++') || runner.arch == 'arm64') ) )
599600
uses: actions/upload-artifact@v4
600601
with:
601602
name: ${{ format('knime-{0}{1}', steps.set-vars.outputs.tp_folder, runner.arch == 'arm64' && '-arm64' || '') }}

.github/workflows/pyopenms-wheels.yml

Lines changed: 139 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ jobs:
513513

514514
build-lnx:
515515
runs-on: [ubuntu-latest]
516-
container: ghcr.io/openms/contrib_manylinux_2_34:latest
516+
container: ghcr.io/openms/contrib_manylinux_2_34:latest-x86_64
517517

518518
steps:
519519
# Cancels older builds if still running
@@ -537,17 +537,139 @@ jobs:
537537
uses: SimenB/github-actions-cpu-cores@v2
538538
id: cpu-cores
539539

540-
- name: Setup cmake
541-
uses: jwlawson/actions-setup-cmake@v2
540+
- name: Build on manylinux for broad compatibility
541+
shell: bash
542+
run: |
543+
PYTHON_VERSIONS=$(cat OpenMS/.github/workflows/python_versions.json)
544+
yum install -y jq
545+
yum install -y ninja-build # Install Ninja for build files
546+
yum install -y cmake # Install CMake
547+
cmake --version
548+
549+
mkdir -p $GITHUB_WORKSPACE/data/wheelhouse/
550+
mkdir -p $GITHUB_WORKSPACE/data/wheelhouse/before_fix/
551+
552+
LD_OLD_LIBRARY_PATH=$LD_LIBRARY_PATH
553+
554+
# compile and configure OpenMS
555+
for py in $(echo "${PYTHON_VERSIONS}" | jq -r '.[]'); do
556+
557+
# Check if there is already and existing build,
558+
# if so: clean previous pyopenms libs,
559+
# do at the top of the python version loop so that we leave the final libraries for testing
560+
561+
if [ -d "OpenMS/bld/pyOpenMS/pyopenms" ]; then
562+
rm OpenMS/bld/pyOpenMS/pyopenms/_pyopenms*.so
563+
fi
564+
565+
py=$(echo "$py" | tr -d " \n")
566+
pynodot=$(echo "$py" | tr -d ".")
567+
PYBIN=$(echo /opt/python/cp*${pynodot})
568+
569+
# Create a venv for this python version
570+
"$PYBIN/bin/python" -m venv $pynodot
571+
source $pynodot/bin/activate
572+
573+
"$PYBIN/bin/pip" install --upgrade pip
574+
# pip install all the stuff
575+
"$PYBIN/bin/pip" install -r $GITHUB_WORKSPACE/OpenMS/src/pyOpenMS/requirements_bld.txt
576+
577+
# configure (don't copy deps since we use auditwheel)
578+
579+
export Python_ROOT_DIR=$PYBIN
580+
export BUILD_NAME="pyopenms-wheels-${{ steps.extract_branch.outputs.RUN_NAME }}-${{ runner.os }}-${{ runner.arch }}-class-pyopenms-$py-${{ github.run_number }}" #TODO make this more expressive
581+
582+
ctest --output-on-failure -V -S $GITHUB_WORKSPACE/OpenMS/tools/ci/cibuild.cmake
583+
584+
# ensure auditwheel can find the libraries
585+
export LD_LIBRARY_PATH=$LD_OLD_LIBRARY_PATH:`pwd`/OpenMS/bld/lib
586+
587+
# strip the libraries before repairing
588+
strip --strip-all OpenMS/bld/lib/libOpenMS.so
589+
strip --strip-all OpenMS/bld/lib/libOpenSwathAlgo.so
590+
591+
pushd OpenMS/bld/pyOpenMS
592+
# Bundle stripped plus external shared libraries into the wheels
593+
for whl in dist/pyopenms*.whl; do
594+
auditwheel repair "$whl" -w wheelhouse/
595+
done
596+
597+
mv wheelhouse/* $GITHUB_WORKSPACE/data/wheelhouse/
598+
popd
599+
export LD_LIBRARY_PATH=$LD_OLD_LIBRARY_PATH
600+
601+
# deactivate the venv
602+
deactivate
603+
done
604+
env:
605+
SOURCE_DIRECTORY: "${{ github.workspace }}/OpenMS"
606+
CMAKE_GENERATOR: "Ninja"
607+
OPENMS_CONTRIB_LIBS: "/contrib-build/"
608+
BUILD_TYPE: "Release"
609+
BUILD_FLAGS: "-j${{ steps.cpu-cores.outputs.count }}"
610+
NO_DEPENDENCIES: "ON"
611+
Python_FIND_STRATEGY: "LOCATION"
612+
PYOPENMS: "ON"
613+
PY_NUM_THREADS: ${{ steps.cpu-cores.outputs.count }}
614+
CI_PROVIDER: "GitHub-Actions"
615+
CMAKE_CXX_COMPILER: "g++"
616+
CMAKE_PREFIX_PATH: "/contrib-build/"
617+
ENABLE_TUTORIALS: "OFF"
618+
ENABLE_DOCS: "OFF"
619+
ENABLE_STYLE_TESTING: "OFF"
620+
ENABLE_PIPELINE_TESTING: "OFF"
621+
ENABLE_TOPP_TESTING: "OFF"
622+
ENABLE_CLASS_TESTING: "OFF"
623+
624+
- name: Test
625+
shell: bash
626+
run: |
627+
ctest --output-on-failure -V -S $GITHUB_WORKSPACE/OpenMS/tools/ci/citest.cmake
628+
env:
629+
SOURCE_DIRECTORY: "${{ github.workspace }}/OpenMS"
630+
CI_PROVIDER: "GitHub-Actions"
631+
BUILD_NAME: "${{ steps.extract_branch.outputs.RUN_NAME }}-${{ runner.os }}-${{ runner.arch }}-class-pyopenms-${{ github.run_number }}"
632+
# The rest of the vars should be saved in the CMakeCache
633+
634+
- uses: actions/upload-artifact@v4
635+
name: Upload artifacts
542636
with:
543-
cmake-version: '3.25.x'
637+
name: ${{ runner.os }}-${{ runner.arch }}-wheels
638+
path: data/wheelhouse/
639+
640+
build-lnx-arm:
641+
runs-on: [ubuntu-22.04-arm]
642+
container: ghcr.io/openms/contrib_manylinux_2_34:latest-arm64
643+
644+
steps:
645+
# Cancels older builds if still running
646+
- uses: rokroskar/workflow-run-cleanup-action@master
647+
env:
648+
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
649+
# Disable warning for this line
650+
if: "!startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/master' && github.ref != 'refs/heads/develop'" # noqa
651+
652+
- uses: actions/checkout@v4
653+
name: Checkout sources
654+
with:
655+
path: OpenMS
656+
657+
- id: extract_branch
658+
name: Extract branch/PR infos
659+
shell: bash
660+
run: echo "RUN_NAME=${{ github.event.pull_request && github.event.pull_request.number || github.ref_name }}" >> $GITHUB_OUTPUT
661+
662+
- name: Get number of CPU cores
663+
uses: SimenB/github-actions-cpu-cores@v2
664+
id: cpu-cores
544665

545666
- name: Build on manylinux for broad compatibility
546667
shell: bash
547668
run: |
548669
PYTHON_VERSIONS=$(cat OpenMS/.github/workflows/python_versions.json)
549670
yum install -y jq
550671
yum install -y ninja-build # Install Ninja for build files
672+
yum install -y cmake # Install CMake
551673
cmake --version
552674
553675
mkdir -p $GITHUB_WORKSPACE/data/wheelhouse/
@@ -641,15 +763,16 @@ jobs:
641763
name: ${{ runner.os }}-${{ runner.arch }}-wheels
642764
path: data/wheelhouse/
643765

766+
644767
# Tests the build workflows
645768
test:
646-
needs: [build-win, build-macos, build-lnx, build-macos-arm]
769+
needs: [build-win, build-macos, build-lnx, build-macos-arm, build-lnx-arm]
647770
runs-on: ${{ matrix.os }}
648771
env:
649772
SYSTEM_VERSION_COMPAT: 0 #courtesy of https://github.com/actions/setup-python/issues/469 in lieu of an actual solution.
650773
strategy:
651774
matrix:
652-
os: [ubuntu-latest, macos-15-intel, windows-latest, macos-latest]
775+
os: [ubuntu-latest, macos-15-intel, windows-latest, macos-latest, ubuntu-22.04-arm]
653776
steps:
654777
- uses: actions/checkout@v4
655778
name: Checkout sources
@@ -659,7 +782,11 @@ jobs:
659782
- name: Install Miniconda
660783
shell: bash
661784
run: |
662-
if [[ "${{ runner.os }}" == "Linux" ]]; then
785+
if [[ "${{ runner.os }}" == "Linux" && "${{ runner.arch }}" == "ARM64" ]]; then
786+
MINICONDA_FILENAME=Miniconda3-latest-Linux-aarch64.sh
787+
curl -o $MINICONDA_FILENAME "https://repo.anaconda.com/miniconda/$MINICONDA_FILENAME"
788+
bash ${MINICONDA_FILENAME} -b -f -p $HOME/miniconda3
789+
elif [[ "${{ runner.os }}" == "Linux" && "${{ runner.arch }}" == "X64" ]]; then
663790
MINICONDA_FILENAME=Miniconda3-latest-Linux-x86_64.sh
664791
curl -o $MINICONDA_FILENAME "https://repo.anaconda.com/miniconda/$MINICONDA_FILENAME"
665792
bash ${MINICONDA_FILENAME} -b -f -p $HOME/miniconda3
@@ -741,6 +868,11 @@ jobs:
741868
with:
742869
name: Linux-X64-wheels
743870
path: /home/runner/work/OpenMS/OpenMS/Linux-X64-wheels
871+
- name: Download artifacts
872+
uses: actions/download-artifact@v4
873+
with:
874+
name: Linux-ARM64-wheels
875+
path: /home/runner/work/OpenMS/OpenMS/Linux-ARM64-wheels
744876
- name: Download artifacts
745877
uses: actions/download-artifact@v4
746878
with:

CHANGELOG

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,25 @@ PR - Pull Request (on GitHub), i.e. integration of a new feature or bugfix
1515
------------------------------------------------------------------------------------------
1616
---- OpenMS 3.5.0 (under development) ----
1717
------------------------------------------------------------------------------------------
18+
NOTICE: 3.5.0 is going to be the last official release for MacOS on Intel processors.
19+
If you need support for OpenMS on that platform moving forward, please contact us.
1820

1921
General:
2022
- speed improvements:
2123
- loading .gz files is about 7% faster (#8069)
2224
- loading of mzML files with more than than m/z+intensity (e.g. ion mobility) is 20-40% faster (#8074)
2325
- loading of mzML files is 7-25% faster in general (SIMD ASCII conversion) (#8105)
26+
- linux arm64 support:
27+
- OpenMS releases now include a .deb for arm64 machines
28+
- PyOpenMS now has wheels for arm64 linux machines
2429

2530
Dependencies:
2631
- PyOpenMS now depends on Autowrap 0.23.0
2732
- PyOpenMS now supports Cython 3.1
2833

34+
PyOpenMS:
35+
- PyOpenMS wheels are now available for Python 3.14 on all supported operating systems
36+
2937
TOPP tools:
3038
Changes:
3139
FileFilter:
@@ -73,6 +81,7 @@ OpenMS Library:
7381
- OpenSwath:
7482
- Added automated iRT calibration using input transition list (#8146)
7583
- Added automated RT, m/z, and IM extraction window estimation based on iRT calibration (#8188)
84+
- Added lowess span grid search params and updated documentation for OpenSwathWorkflow TOPP tool (#8297)
7685

7786

7887

src/openms/source/ANALYSIS/OPENSWATH/MRMTransitionGroupPicker.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@ namespace OpenMS
127127
{
128128
for (Size k = 0; k < picked_chroms[i].size(); ++k)
129129
{
130+
// Skip peaks already "consumed" by previous iterations
131+
if (picked_chroms[i][k].getIntensity() == 0.0) {continue; }
132+
130133
const double left_rt = picked_chroms[i].getFloatDataArrays()[PeakPickerChromatogram::IDX_LEFTBORDER][k];
131134
const double right_rt = picked_chroms[i].getFloatDataArrays()[PeakPickerChromatogram::IDX_RIGHTBORDER][k];
132135
const double local_peak_width = right_rt - left_rt;

src/openms/source/ANALYSIS/OPENSWATH/OpenSwathWorkflow.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,10 @@ namespace OpenMS
272272
Param model_params;
273273
model_params.setValue("symmetric_regression", "false");
274274
model_params.setValue("span", irt_detection_param.getValue("lowess:span"));
275+
model_params.setValue("auto_span", irt_detection_param.getValue("lowess:auto_span"));
276+
model_params.setValue("auto_span_min", irt_detection_param.getValue("lowess:auto_span_min"));
277+
model_params.setValue("auto_span_max", irt_detection_param.getValue("lowess:auto_span_max"));
278+
model_params.setValue("auto_span_grid", irt_detection_param.getValue("lowess:auto_span_grid"));
275279
model_params.setValue("num_nodes", irt_detection_param.getValue("b_spline:num_nodes"));
276280
String model_type = irt_detection_param.getValue("alignmentMethod").toString();
277281
trafo_out.fitModel(model_type, model_params);

src/openms/source/APPLICATIONS/OpenSwathBase.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,10 @@ namespace OpenMS
273273
Param model_params = getParam_().copy("model:", true);
274274
model_params.setValue("symmetric_regression", "false");
275275
model_params.setValue("span", irt_detection_param.getValue("lowess:span"));
276+
model_params.setValue("auto_span", irt_detection_param.getValue("lowess:auto_span"));
277+
model_params.setValue("auto_span_min", irt_detection_param.getValue("lowess:auto_span_min"));
278+
model_params.setValue("auto_span_max", irt_detection_param.getValue("lowess:auto_span_max"));
279+
model_params.setValue("auto_span_grid", irt_detection_param.getValue("lowess:auto_span_grid"));
276280
model_params.setValue("num_nodes", irt_detection_param.getValue("b_spline:num_nodes"));
277281
String model_type = irt_detection_param.getValue("alignmentMethod").toString();
278282
trafo_rtnorm.fitModel(model_type, model_params);

src/tests/topp/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1747,7 +1747,7 @@ ${TOPP_BIN_PATH}/OpenSwathDecoyGenerator -test -in ${DATA_DIR_TOPP}/OpenSwathDec
17471747
set_tests_properties("TOPP_OpenSwathWorkflow_20_out1" PROPERTIES DEPENDS "TOPP_OpenSwathWorkflow_20")
17481748

17491749
# Test iRT alignment, full workflow
1750-
add_test("TOPP_OpenSwathWorkflow_21" ${TOPP_BIN_PATH}/OpenSwathWorkflow -in ${DATA_DIR_TOPP}/OpenSwathWorkflow_21_input.mzML -tr ${DATA_DIR_TOPP}/OpenSwathWorkflow_21_input.tsv -Calibration:tr_irt ${DATA_DIR_TOPP}/OpenSwathWorkflow_21_input.irt.TraML -out_features OpenSwathWorkflow_21.tmp.featureXML -Debugging:irt_trafo OpenSwathWorkflow_21.tmp.trafoXML -out_chrom OpenSwathWorkflow_21.tmp.mzML -auto_irt "false" -estimate_extraction_windows none -Calibration:RTNormalization:lowess:span 0.666666666666666666666666666
1750+
add_test("TOPP_OpenSwathWorkflow_21" ${TOPP_BIN_PATH}/OpenSwathWorkflow -in ${DATA_DIR_TOPP}/OpenSwathWorkflow_21_input.mzML -tr ${DATA_DIR_TOPP}/OpenSwathWorkflow_21_input.tsv -Calibration:tr_irt ${DATA_DIR_TOPP}/OpenSwathWorkflow_21_input.irt.TraML -out_features OpenSwathWorkflow_21.tmp.featureXML -Debugging:irt_trafo OpenSwathWorkflow_21.tmp.trafoXML -out_chrom OpenSwathWorkflow_21.tmp.mzML -auto_irt "false" -estimate_extraction_windows none -Calibration:RTNormalization:lowess:auto_span false -Calibration:RTNormalization:lowess:span 0.666666666666666666666666666
17511751
"-test" "-mz_extraction_window" "0.05" "-mz_extraction_window_unit" "Th" "-ms1_isotopes" "0"
17521752
"-Scoring:Scores:use_total_mi_score"
17531753
"-Scoring:Scores:use_ms1_mi" "false"

src/tests/topp/OpenSwathWorkflow_21_output.trafoXML

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,24 @@
33
<Transformation name="linear">
44
<Param type="string" name="symmetric_regression" value="false"/>
55
<Param type="float" name="span" value="0.666666666666667"/>
6+
<Param type="string" name="auto_span" value="false"/>
7+
<Param type="float" name="auto_span_min" value="0.15"/>
8+
<Param type="float" name="auto_span_max" value="0.8"/>
9+
<Param type="string" name="auto_span_grid" value="0.005,0.01,0.05,0.15,0.25,0.30,0.50,0.70,0.90"/>
610
<Param type="int" name="num_nodes" value="5"/>
711
<Param type="string" name="x_weight" value="x"/>
812
<Param type="string" name="y_weight" value="y"/>
9-
<Param type="float" name="x_datum_min" value="1e-15"/>
10-
<Param type="float" name="x_datum_max" value="1e+15"/>
11-
<Param type="float" name="y_datum_min" value="1e-15"/>
12-
<Param type="float" name="y_datum_max" value="1e+15"/>
13-
<Param type="float" name="slope" value="1.00420902693575"/>
14-
<Param type="float" name="intercept" value="-11.4372062523721"/>
13+
<Param type="float" name="x_datum_min" value="1.0e-15"/>
14+
<Param type="float" name="x_datum_max" value="1.0e15"/>
15+
<Param type="float" name="y_datum_min" value="1.0e-15"/>
16+
<Param type="float" name="y_datum_max" value="1.0e15"/>
17+
<Param type="float" name="slope" value="1.004209000652954"/>
18+
<Param type="float" name="intercept" value="-11.437200562330617"/>
1519
<Pairs count="4">
1620
<Pair from="9.99999952316284" to="0"/>
17-
<Pair from="32.404443581899" to="25"/>
18-
<Pair from="209" to="200"/>
19-
<Pair from="68" to="50"/>
21+
<Pair from="32.4044302304585" to="25"/>
22+
<Pair from="208.999999523163" to="200"/>
23+
<Pair from="67.9999995231628" to="50"/>
2024
</Pairs>
2125
</Transformation>
2226
</TrafoXML>

0 commit comments

Comments
 (0)