Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement v1 file format [WIP] #299

Draft
wants to merge 213 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 92 commits
Commits
Show all changes
213 commits
Select commit Hold shift + click to select a range
f32902a
i32, i32 -> Vec<i32>
t7phy Jul 12, 2024
2417c92
Migrate `Channel` methods to new definition
t7phy Jul 18, 2024
ba0deb0
Merge remote-tracking branch 'origin/master' into v1-file-format
t7phy Jul 18, 2024
53a469f
Merge remote-tracking branch 'origin/master' into v1-file-format
t7phy Jul 22, 2024
f8da72e
update gluon_has_pid_zero to check vector of PIDs
t7phy Jul 22, 2024
03f2dc6
Fix remaining compilation errors
t7phy Jul 24, 2024
5e281ae
Start implementation of a fragmentation scale
t7phy Jul 24, 2024
02e48e9
Fix some warnings
t7phy Jul 24, 2024
0d360b4
Print ignored fragmentation scale log
cschwan Aug 5, 2024
87b3bf3
Fix more compilation errors when features are enabled
cschwan Aug 5, 2024
eae77a5
Remove fragmentation scale extraction in CAPI
cschwan Aug 5, 2024
ef2f531
Fix compilation errors in tests
cschwan Aug 5, 2024
13556ec
Fix off-by-one error in `Grid::convolutions`
cschwan Aug 5, 2024
4590eb1
Fix failing doctests
t7phy Aug 5, 2024
5afec89
Fix bugs in `Channel::from_str`
t7phy Aug 5, 2024
aa6fe31
Increase file version from 0 to 1
t7phy Aug 5, 2024
4f1ecf6
Fix bug in `Channel::common_factor`
t7phy Aug 5, 2024
815704b
Fix bug in `Channel::translate`
t7phy Aug 5, 2024
e2c9dbf
Reformat code
t7phy Aug 5, 2024
6797caa
Add new struct `PackedQ1X2SubgridV1`
t7phy Aug 5, 2024
5e4922a
Implement remaining todos
t7phy Aug 5, 2024
e6d6a96
Start implementation of backwards-compatible v0 import
t7phy Aug 5, 2024
5ad4281
Do not convert empty subgrids
cschwan Aug 6, 2024
10da731
Convert the rest of the grid
cschwan Aug 6, 2024
2416f20
Fix more tests
cschwan Aug 6, 2024
e8dba2b
Fix bug in DIS evolution
cschwan Aug 6, 2024
47a3278
Add fragmentation scale to `Mu2`
t7phy Aug 6, 2024
edad700
Make metadata member of `Grid`
t7phy Aug 6, 2024
c4f871e
Reformat code
t7phy Aug 6, 2024
b4d665d
Make convolutions member of `Grid`
t7phy Aug 6, 2024
31aeb2f
Fix remaining compilation errors
cschwan Aug 7, 2024
0d6e602
Make `pid_basis` a member of `Grid`
cschwan Aug 7, 2024
bce1760
Prepare fixing the CAPI
cschwan Aug 7, 2024
5436765
Remove obsolete subgrid types
t7phy Aug 8, 2024
cbe586c
Do not run python CI in this branch
t7phy Aug 8, 2024
2ba8cc2
Remove leftover `ImportOnlySubgridV1`
t7phy Aug 8, 2024
63ab6ea
Remove `ImportOnlySubgridV2`
t7phy Aug 8, 2024
53f33ce
Fix `build.rs` already triggering rebuild
cschwan Jul 31, 2024
ca8d029
Fix numerical noise
cschwan Aug 8, 2024
d1be640
Add convolutions to `Grid` constructor
t7phy Aug 8, 2024
1e2f4d8
Fix a few clippy warnings
cschwan Aug 9, 2024
41a6782
Remove obsolete `SparseArray3`
cschwan Aug 9, 2024
4d1fc39
Use integers to avoid floating point comparisons
cschwan Aug 9, 2024
0e30f00
Fix documentation links
cschwan Aug 9, 2024
34c14ec
Prepare code for fragmentation scale variation
t7phy Aug 9, 2024
df2cb57
Replace `Ntuple` with slice
t7phy Aug 16, 2024
5d71c36
Remove `Subgrid::convolve`
t7phy Aug 16, 2024
a2cd483
Remove three clippy warnings
cschwan Aug 18, 2024
c3dc6f3
Improve `packed_subgrid.rs`
cschwan Aug 18, 2024
33a4957
Increase code coverage
cschwan Aug 19, 2024
cb937f6
Fix bug in `LagrangeSubgridV2::stats`
cschwan Aug 19, 2024
c9b737c
Remove `factor == 0` optimization
cschwan Aug 19, 2024
7409f3c
Increase doctest coverage of `LagrangeSubgridV2`
cschwan Aug 19, 2024
e5b7b34
Remove unneeded derivations for `ExtraSubgridParams`
cschwan Aug 19, 2024
75355e3
Use assignment instead of `swap`
cschwan Aug 19, 2024
67265c9
Temporarily remove trait implementation
cschwan Aug 19, 2024
efdabd4
Revert unintended changes from commit cb937f
cschwan Aug 19, 2024
7bbde3a
Remove obsolete `FkTable` methods
cschwan Aug 19, 2024
1fab0ea
Increase code coverage
cschwan Aug 19, 2024
2f06916
Increase code coverage
cschwan Aug 20, 2024
7b255aa
Generalize convolution helpers and increase test coverage
cschwan Aug 20, 2024
6935d9a
Move v0 file conversion into separate module
cschwan Aug 22, 2024
501a29a
Rename `pdg_channels` to `channels_pdg`
cschwan Aug 22, 2024
12a4b18
Merge branch 'master' into v1-file-format
cschwan Aug 23, 2024
2c9ade2
Update `managed-lhapdf` from 0.3.3 to 0.3.4
cschwan Aug 24, 2024
ebf6770
Remove deprecated `Grid::evolve` method
cschwan Sep 1, 2024
a1365f2
Remove struct `OperatorInfo`
cschwan Sep 1, 2024
2b21919
Fix one clippy warning
cschwan Sep 1, 2024
89e3daa
Add preliminary interpolation module
cschwan Sep 1, 2024
9179d06
Fix documentation links
cschwan Sep 3, 2024
f6a8088
Remove additional argument
cschwan Sep 3, 2024
4a7cd59
Add new method `Grid::charge_conjugate`
cschwan Sep 3, 2024
3144988
Polish interpolation a bit
cschwan Sep 3, 2024
f39219f
Prevent 'functions have mismatched data' warnings
cschwan Sep 3, 2024
d454d5f
Debug new module `interpolation`
t7phy Sep 3, 2024
5ae6466
Fix problems in previous commit
cschwan Sep 3, 2024
18f84ec
Make `Channel::translate` a method
cschwan Sep 4, 2024
add7baa
Add test for new interpolation module
cschwan Sep 4, 2024
7d92ea0
Increase MSRV from 1.70.0 to 1.80.1
cschwan Sep 4, 2024
e3acdd5
Use nightly as default
cschwan Sep 4, 2024
0c56545
Raise version of `cargo-c`
cschwan Sep 4, 2024
dec24a7
Fix library installation directory
cschwan Sep 4, 2024
48c3e9c
Improve test coverage of interpolation module
cschwan Sep 4, 2024
41b294a
Test interpolation with one node
cschwan Sep 5, 2024
3c5223c
Add more documentation and comments
cschwan Sep 5, 2024
9ccb176
Fix CAPI library installation directory
cschwan Sep 5, 2024
719a45d
Fix `generate-coverage.sh` script
cschwan Sep 5, 2024
9f303ce
Prepare replacement of `LagrangeSubgridV2`
t7phy Sep 6, 2024
cd3dd32
Fix bug in `LagrangeSubgridV2::merge`
cschwan Sep 8, 2024
cb1ce33
Return support for static scale detection
cschwan Sep 8, 2024
7d6c9f8
Check number of channel PIDs
cschwan Sep 10, 2024
36a46b4
Add enum `Kinematics`
cschwan Sep 10, 2024
885ef07
Introduce `kinematics` into `Grid`
cschwan Sep 10, 2024
2203f22
Rename `Interp::nodes` to `Interp::node_values`
t7phy Sep 10, 2024
d2f8397
Replace `SubgridParams` and `ExtraSubgridParams` with `Interp`
t7phy Sep 10, 2024
b2cd8a7
Fix bug returning variables from y-space instead of x
cschwan Sep 10, 2024
a6827ca
Merge branch 'master' into v1-file-format
cschwan Sep 11, 2024
88f9151
Fix a few clippy lints
cschwan Sep 11, 2024
f13095d
Remove `MoreMembers::upgrade` method
cschwan Sep 11, 2024
0dcd118
Move members from `MoreMembers` into `Grid`
cschwan Sep 11, 2024
c677a63
Remove `Grid::with_subgrid_type` constructor
cschwan Sep 11, 2024
46fe945
Change ordering of `ntuples` in `Grid::fill`
cschwan Sep 11, 2024
fd68be7
Add missing changelog item
cschwan Sep 11, 2024
bcae6a5
Add the interpolation as a parameter to `Subgrid::fill`
cschwan Sep 11, 2024
9aa79ea
Make `pid_basis` an argument of `Grid::new`
cschwan Sep 11, 2024
29f48d0
Remove `PackedQ1X2SubgridV1::array_mut`
cschwan Sep 11, 2024
f67a341
Remove `Subgrid::clone_empty`
cschwan Sep 12, 2024
90ab92c
Rename `grid` to `array`
cschwan Sep 12, 2024
751f92c
Unify the methods of `LagrangeSubgridV2` and `PackedQ1X2SubgridV1`
cschwan Sep 12, 2024
f3ae04f
Add 'test-opt' profile for fast tests
cschwan Sep 12, 2024
b16ac2e
Remove `PackedArray::default` method
cschwan Sep 13, 2024
4f05cb8
Remove `mut` from `Subgrid::merge`
cschwan Sep 13, 2024
dc62e5a
Remove specification of dimension in `PackedArray`
t7phy Sep 13, 2024
c437e0c
Add more index methods to `PackedArray`
t7phy Sep 13, 2024
315e285
Remove more static specifications of the dimension
cschwan Sep 17, 2024
72beb7a
Make ravel functions private again
cschwan Sep 17, 2024
44dc9f0
Remove `D` from `interpolate`
t7phy Sep 17, 2024
f5d3e07
Make `Subgrid::indexed_iter` independent of dimensions
t7phy Sep 17, 2024
2a3dc73
Generalize `Subgrid::symmetrize`
t7phy Sep 17, 2024
9135e11
Add new type `NodeValues` and use it
t7phy Sep 17, 2024
3fac121
Fix compilation problems and some bugs
cschwan Sep 18, 2024
3efc12b
Change argument type of `PackedArray`'s constructor
cschwan Sep 18, 2024
74d9ae7
Fix bugs in `PackedQ1X2SubgridV1::merge`
cschwan Sep 18, 2024
5429a9f
Add initial support for flexible-scale grids
cschwan Sep 19, 2024
876e23b
Ignore flexible-scale grid tests for the time being
cschwan Sep 19, 2024
726ca36
Remove `{mu2,x1,x2}_grid` members in `packed_subgrid.rs`
t7phy Sep 19, 2024
aa4a097
Silence warnings
cschwan Sep 20, 2024
763906a
Add new methods `ScaleFuncForm::calc` and `Scales::compatible_with`
cschwan Sep 20, 2024
b225b0c
Remove last calls to `{mu2,x1,x2}_grid` in subgrid types
t7phy Sep 20, 2024
e51c1d1
Migrate `AlphasTable::from_grid` to `NodeValues`
t7phy Sep 20, 2024
7ad6515
Remove two references to `x{1,2}_grid` in the evolution
cschwan Sep 20, 2024
a8e02ed
Migrate `grid.rs` to `NodeValues`
t7phy Sep 20, 2024
91238e4
Migrate more call sites to `NodeValues`
t7phy Sep 20, 2024
e010ffa
Migrate DY test to `Subgrid::node_values`
cschwan Sep 24, 2024
8012a94
Remove commented-out code
cschwan Sep 24, 2024
ac95f26
Removee more `x{1,2}_grid` calls
t7phy Sep 24, 2024
3994031
Fix integration test
cschwan Oct 1, 2024
751623a
Add some cosmetic fixes
cschwan Oct 1, 2024
6f13cbd
Remove `x{1,2}_grid` methods
t7phy Oct 1, 2024
ab84b0f
Remove `Subgrid::mu2_grid`
t7phy Oct 1, 2024
4cc8094
Rename `LumiCache` to `ConvolutionCache`
t7phy Oct 3, 2024
f259f63
Run `cargo fmt`
t7phy Oct 3, 2024
cbdb528
Start generalizing `ConvolutionCache` to arbitrary dimensions
t7phy Oct 3, 2024
76cabc3
Generalize `ConvolutionCache` even further
t7phy Oct 3, 2024
cc798a8
Merge `Pdfs` into `ConvolutionCache`
cschwan Oct 4, 2024
59d52a9
Match convolution functions with convolutions
cschwan Oct 4, 2024
bf02084
Generalize `ConvolutionCache::fx_prod`
cschwan Oct 4, 2024
c196936
Add generalized constructor for `ConvolutionCache`
cschwan Oct 4, 2024
9d63ba7
Polish `PackedArray` a bit
cschwan Oct 4, 2024
6e3a578
Increase test coverage of `packed_array.rs`
cschwan Oct 4, 2024
2a4f79c
Save convolution type in `ConvolutionCache`
t7phy Oct 4, 2024
7569391
Add support for a fragmentation scale
t7phy Oct 4, 2024
a9c5784
Start generalizing evolution methods
t7phy Oct 7, 2024
f6587e9
Reformat `read_convolutions_from_metadata`
cschwan Oct 9, 2024
0632b03
Generalize `ndarray_from_subgrid_orders_slice_many` a bit
cschwan Oct 9, 2024
ae4b9a1
Start getting rid of `Convolution::None`
cschwan Oct 10, 2024
defd91e
Delete unused functions
t7phy Oct 10, 2024
461d536
Remove `Convolution::None` and start fixing the importing of DIS grids
t7phy Oct 10, 2024
0a66c20
Fix failing doctest and make DIS FK-table subgrids 2-dimensional
cschwan Oct 10, 2024
1e17155
Fix dimensionality of imported DIS fastNLO tables
cschwan Oct 10, 2024
1affcbb
Add support for `polarized` and `time_like` fields
cschwan Oct 11, 2024
a06503b
Rename `Convolution` to `Conv` and introduce `ConvType`
cschwan Oct 11, 2024
870eb26
Remove some traces of `Convolution::None`
t7phy Oct 11, 2024
5067abf
Add new method `Grid::evolve`
t7phy Oct 11, 2024
a401ca0
Reformat `Grid::evolve`
cschwan Oct 12, 2024
aeaefd9
Allow missing docs for tests
cschwan Oct 12, 2024
f09956d
Fix a few clippy warnings
cschwan Oct 12, 2024
823b20f
Add new method `PidBasis::translate`
cschwan Oct 12, 2024
d4d9ec1
Increase code coverage a bit
cschwan Oct 12, 2024
db0fafd
Disable carryforward to remove Python test coverage
cschwan Oct 14, 2024
2422392
Start fixing Python interface
Radonirinaunimi Oct 16, 2024
c396845
Fix `pineappl` Python module
Radonirinaunimi Oct 16, 2024
b140e65
Start fixing Python tests
Radonirinaunimi Oct 16, 2024
e32f543
Add preliminary Python interface to `packed_subgrid`
Radonirinaunimi Oct 16, 2024
d13e325
Simplify implementation of `ConvolutionCache::setup`
cschwan Oct 15, 2024
d728202
Merge alphas evaluation into other function
cschwan Oct 15, 2024
17e608e
Prepare `ConvolutionCache::setup` for multiple scales
cschwan Oct 15, 2024
35849fd
Add some trivial fixes to Python API tests
cschwan Oct 17, 2024
c795a24
Re-enable Python tests in CI
cschwan Oct 17, 2024
e4604f3
Add some small fixes
t7phy Oct 17, 2024
4e0214c
Add fragmentation scaling factor to `Grid::scale_by_order`
t7phy Oct 17, 2024
c134c7e
Rename `LagrangeSubgridV2` to `InterpSubgridV1`
t7phy Oct 17, 2024
9182bdb
Rename `PackedQ1X2SubgridV1` to `ImportSubgridV1`
t7phy Oct 17, 2024
aeab8d2
Make 7 and 9-pt variation dependent on scales in grid
t7phy Oct 17, 2024
d050130
Test more scale variations
cschwan Oct 17, 2024
11dcd8c
Change type of `Order` members from `u32` to `u8`
cschwan Oct 17, 2024
fdde7d3
Remove `NodeValues` type
cschwan Oct 17, 2024
63924e1
Add numerical tolerance in `ImportSubgridV1::merge`
cschwan Oct 17, 2024
49df463
Continue fixing `test_grid.py`
Radonirinaunimi Oct 17, 2024
90b836e
Propagate `PackedSubgrid` into the Python tests
Radonirinaunimi Oct 17, 2024
067d7f6
Make the Python tests pass
Radonirinaunimi Oct 17, 2024
bdfca60
Replace `PyPackedArray` -> `PyImportSubgridV1`
Radonirinaunimi Oct 18, 2024
5f68dcf
Add docstrings to Python Interface and clean tests
Radonirinaunimi Oct 18, 2024
f354849
Sort import modules for tests
Radonirinaunimi Oct 18, 2024
f5f46d6
Init general convolution for PyAPI
Radonirinaunimi Oct 18, 2024
cfc1edf
Fix type annotations for python tests
Radonirinaunimi Oct 18, 2024
bd3438a
Revert "Fix type annotations for python tests"
Radonirinaunimi Oct 18, 2024
c91c475
Fix object is not iterable in all `bins` argument
Radonirinaunimi Oct 18, 2024
cbc74ae
Rely on `typing` for type annotations (needed for old Python versions)
Radonirinaunimi Oct 18, 2024
ca1df43
Merge branch `master` into `v1-file-format`
Radonirinaunimi Oct 18, 2024
48be5a4
Use `into` instead of `try_into` when possible
cschwan Oct 18, 2024
f62412e
Fix numerical noise
cschwan Oct 18, 2024
a884201
Get rid of a few `unwrap` calls
cschwan Oct 18, 2024
f1574a3
Make Generalized convolution works
Radonirinaunimi Oct 18, 2024
92212a6
Implement generalized `convolve` and `evolve` (removes old `_with_`)
Radonirinaunimi Oct 19, 2024
b41d304
Revamp Python tests
Radonirinaunimi Oct 19, 2024
a46a9fb
Improve Python tests and their coverage
Radonirinaunimi Oct 20, 2024
a1fa114
Import DIS APPLgrids with correct dimensions
cschwan Oct 22, 2024
3a2372c
Refactor `ConvolutionCache`
cschwan Oct 22, 2024
6221536
Update PyO3 and Numpy from 0.21.x to 0.22.x
cschwan Oct 22, 2024
ee72972
Allow numpy-2
cschwan Oct 22, 2024
3fe8b62
Increase minimal Python version to 3.7
cschwan Oct 22, 2024
9dfdfcf
Test and release wheels for Python 3.13
cschwan Oct 22, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .github/workflows/capi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@ jobs:
- uses: actions/checkout@v4

- name: Install PineAPPL's C API
env:
# `-C link-dead-code` is needed to prevent 'warning: XX functions have mismatched data' warnings
RUSTFLAGS: '-Cinstrument-coverage -Clink-dead-code'
run: |
export RUSTFLAGS="-Cinstrument-coverage"
cargo cinstall --verbose --prefix=/usr/local/ --manifest-path pineappl_capi/Cargo.toml
cargo cinstall --verbose --prefix=/usr/local/ --libdir=lib --manifest-path pineappl_capi/Cargo.toml
ldconfig

- name: Test C++ example
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/msrv.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,5 @@ jobs:
- name: Run check
run: |
# enable the MSRV
rustup default 1.70.0
rustup default 1.80.1
cargo check --all-features --all-targets
4 changes: 3 additions & 1 deletion .github/workflows/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
push:
branches-ignore:
- pycli
- v1-file-format

jobs:
test:
Expand All @@ -24,7 +25,8 @@ jobs:
rustup component add llvm-tools
- name: Test
env:
RUSTFLAGS: '-Cinstrument-coverage'
# `-C link-dead-code` is needed to prevent 'warning: XX functions have mismatched data' warnings
RUSTFLAGS: '-Cinstrument-coverage -Clink-dead-code'
run: |
cd pineappl_py
python -m venv env
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --target=${{ matrix.target }}
cargo install --locked cargo-c
cd pineappl_capi
cargo cinstall --destdir=prefix --library-type=cdylib --locked --prefix=/ --target=${{ matrix.target }} --verbose
cargo cinstall --destdir=prefix --libdir=lib --library-type=cdylib --locked --prefix=/ --target=${{ matrix.target }} --verbose
cd prefix
tar czf ../../pineappl_capi-${{ matrix.target }}.tar.gz .
- name: Upload artifact
Expand Down Expand Up @@ -163,7 +163,7 @@ jobs:
- name: Compile library
run: |
cd pineappl_capi
cargo cinstall --destdir=prefix --library-type=cdylib --locked --prefix=/ --target=${{ matrix.target }} --verbose
cargo cinstall --destdir=prefix --libdir=lib --library-type=cdylib --locked --prefix=/ --target=${{ matrix.target }} --verbose
cd prefix
tar czf ../../pineappl_capi-${{ matrix.target }}.tar.gz .
# print the glibc version requirement
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ jobs:

- name: Run tests
env:
RUSTFLAGS: '-Cinstrument-coverage'
# `-C link-dead-code` is needed to prevent 'warning: XX functions have mismatched data' warnings
RUSTFLAGS: '-Cinstrument-coverage -Clink-dead-code'
run: |
# we need stderr, but we can't run test twice because it'll regenerate/modify the binaries which interferes with `llvm-cov`
cargo test --features=applgrid,evolve,fastnlo,fktable --no-fail-fast 2> >(tee stderr 1>&2)
Expand Down
5 changes: 4 additions & 1 deletion .readthedocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ build:
os: ubuntu-22.04
tools:
python: "3.10"
rust: "1.70"
commands:
- export RUST_WITHOUT=rust-docs,rustfmt
- asdf install rust latest
- asdf global rust latest

python:
install:
Expand Down
5 changes: 3 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- by default `pineappl plot` no longer shows a channel breakdown in the panel
with absolute PDF predictions. However, this feature can be enabled with via
a new array added at the start of the script
- raised MSRV to 1.80.1

### Removed

Expand Down Expand Up @@ -77,8 +78,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- added `PidBasis::charge_conjugate` and `PidBasis::guess`
- added `Grid::set_pid_basis` method
- added `Grid::subgrids` and `Grid::subgrids_mut` methods
- added new switch `conv_fun_uncert_from` to subcommand `plot` to allow
choosing with convolution function uncertainty should be plotted
- added new switch `--conv-fun-uncert-from` to subcommand `plot` to allow
choosing which convolution function uncertainty should be plotted

### Changed

Expand Down
Loading