File size: 6,510 Bytes
5e00643
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
---
license: cc-by-4.0
library_name: scitomo
tags: [cryo-electron-tomography, denoising, missing-wedge, safetensors, scitomo]
---

# DeepDeWedge tutorial checkpoint for scitomo

This repository contains the official DeepDeWedge tutorial checkpoint converted
to a scitomo-native, non-executable Safetensors package. It reinstantiates the
scitomo `UNet3D` used by the `deepdewedge` restoration method. It is not a
PyTorch Lightning trainer-resume checkpoint and does not contain optimizer,
scheduler, callback, random-number-generator, or dataloader state.

Package identity:

- scitomo catalog name: `deepdewedge_tutorial`
- native package id: `deepdewedge_tutorial`
- package revision: `1`
- minimum scitomo version: `0.5.4`
- learned-checkpoint format: `1`
- method: restoration / `deepdewedge`
- construction fingerprint:
  `sha256:c9da7decd489f0f4f893dce565f37db25abc63d0d3efcacad9835305ffd97cb2`
- inference fingerprint:
  `sha256:c2c5eba72579510265258dcfce3a5be2f851f9276c7e53d92330d78eb37720dd`

## Source and attribution

The original checkpoint is part of **DeepDeWedge Tutorial Data**, authored by
Simon Wiedemann and published on Figshare under CC BY 4.0:

- DOI: <https://doi.org/10.6084/m9.figshare.25043435.v1>
- Figshare file id: `45582309`
- archive: `tutorial_data.zip`
- archive member: `tutorial_data/fitted_model.ckpt`
- archive SHA-256:
  `7c871342e51f5a66a773fe427d72944b5d2cc8ff41c5b7415ab38dbfc9ac6d58`
- original checkpoint SHA-256:
  `5262f6c11e85fd662b02e59efe936fa7b69913758e841235be2683f7bd03ec76`

The method and upstream implementation are described by:

> Simon Wiedemann and Reinhard Heckel. “A deep learning method for
> simultaneous denoising and missing wedge reconstruction in cryogenic
> electron tomography.” Nature Communications 15, 8255 (2024).
> <https://doi.org/10.1038/s41467-024-51438-y>

Upstream code:
<https://github.com/MLI-lab/DeepDeWedge/tree/072075692a44a8f17394214369e6e762abe52bc3>

The conversion changed the serialization, state names, and executable
construction mechanism. It did not intentionally alter tensor values. Two
learned normalization values that upstream stored as non-trainable parameters
are native scitomo buffers with identical values. See `ATTRIBUTION.md`,
`conversion/conversion-record.json`, and `LICENSES/`.

## Native construction and inference

`construction.json` specifies a residual single-input/single-output 3D U-Net
with 64 initial channels, three downsampling blocks, strided-convolution
downsampling, transposed-convolution upsampling, leaky-ReLU activations, and
the learned input-normalization location and scale from the tutorial
checkpoint.

Volume tensors use scitomo's canonical trailing-axis layout `(..., Z, Y, X)`.
The network layout is `(..., C, Z, Y, X)`, with one scalar volume channel.
The canonical rotation axis is `Z`; at theta zero the beam axis is `Y`, and
detector `(V, U)` corresponds to `(Z, X)`.

The frozen DeepDeWedge inference profile requires:

- paired half-tomograms, refined separately and averaged;
- a 50-degree full-width missing-wedge Fourier mask on each half;
- `96 x 96 x 96` patches with overlap `32 x 32 x 32`;
- trailing reflection padding for full coverage;
- patch-statistic normalization and network denormalization;
- linear-ramp weighted patch reassembly; and
- no full-tomogram standardization.

The package was converted from the tutorial's fitted network. It assumes the
same scientific meaning, preprocessing, normalization, missing-wedge
convention, and paired-half workflow. It is not a general-purpose cryo-ET
foundation model.

## Files and identities

| File | Bytes | SHA-256 |
| --- | ---: | --- |
| `construction.json` | 2,175 | `d4c7eced057042438827de168d47b7900311fba742ce52445675be7f40343432` |
| `inference.json` | 968 | `217636919d17d9332aa49474e893064ed1dfb29f016a468cf22d439cf16887a0` |
| `weights.safetensors` | 109,294,940 | `2a34aeb61dba5da5c7b78f4cc26de9b8a9134ac12dc08876a8e93bf02776c795` |
| `conversion/conversion-record.json` | 13,953 | `e55c35f9e233e0ba04ea1332306b179b96db12158b4eb0cd8d5dcd3609ac8e54` |
| `validation/validation-record.json` | 1,946 | `eb2f9153d49e7124a8aeb1951230b6124f5fdc18ea1f53b2c9e28db55273cc3f` |

`manifest.json` binds these files plus this model card, attribution, and
license resources by exact size and SHA-256. The immutable Hugging Face commit
and scitomo learned-weight catalog bind the complete distribution, including
the manifest and documentation resources, without a self-referential checksum
inside this README.

## Validation

All 56 source tensors were mapped one-to-one and exactly matched after native
assignment.

Predetermined CPU float32 checks:

| Case | Tolerance | Result |
| --- | --- | --- |
| Synthetic forward parity | `atol=1e-6`, `rtol=1e-5` | bit-exact; max absolute error `0`; relative L2 `0` |
| Real tutorial-volume crop | relative L2 `<=1e-4` | max absolute error `7.152557373046875e-7`; relative L2 `1.2612566990810592e-7` |

The real-data case used a centered `32 x 32 x 32` crop from
`tutorial_data/tomo_even_frames.rec`. Vendor and native outputs were finite,
had identical shapes, and had the same absolute-peak spatial landmark at
`(Z, Y, X) = (25, 13, 0)`.

The evidence proves native network-state and reviewed forward parity for the
frozen inputs. It does not establish accuracy on every microscope, specimen,
acquisition protocol, missing-wedge angle, or preprocessing pipeline, nor does
it replace validation of a complete user workflow.

## Safe loading

The repository contains declared data files only. Loading does not execute
remote code, import the vendor project, or use Python pickle. scitomo requires
the exact catalog commit and verifies every declared size and SHA-256 before
opening `weights.safetensors`. Hugging Face `trust_remote_code` is never used.

Install the learned and catalog extras before resolving the catalog package:

```text
pip install "scitomo[learned,catalog]"
```

Normal runtime loading is owned by scitomo's central learned-checkpoint API.
Do not load the original Lightning checkpoint in an ordinary runtime.

## Licenses

- Converted weights and their source tutorial dataset: CC BY 4.0. See
  `LICENSES/DeepDeWedge-Tutorial-Data-CC-BY-4.0.txt`.
- Upstream DeepDeWedge code and behavior used for construction/conversion:
  BSD 2-Clause. See `LICENSES/DeepDeWedge-Code-BSD-2-Clause.txt`.

The CC BY 4.0 attribution and modification notice are provided in
`ATTRIBUTION.md`. No endorsement by the original authors or rights holders is
implied.