Skip to content

Commit beba0bd

Browse files
Fix Rust documentation
1 parent 666f86b commit beba0bd

1 file changed

Lines changed: 26 additions & 37 deletions

File tree

‎docs/examples/rust.md‎

Lines changed: 26 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ the internal **subgrid structure**, similar to what the CLI `read` commands expo
190190
use neopdf::pdf::PDF;
191191

192192
fn main() {
193-
let pdf_name = "NNPDF40_nnlo_as_01180.neopdf.lz4";
193+
let pdf_name = "NNPDF40_nnlo_as_01180";
194194
let member = 0usize;
195195
let pdf = PDF::load(pdf_name, member);
196196

@@ -219,19 +219,15 @@ fn main() {
219219
println!(" x knots: len = {}", sg.xs.len());
220220
println!(" Q2 knots: len = {}", sg.q2s.len());
221221
}
222-
223-
// --- Parameter ranges ---
224-
let ranges = pdf.param_ranges();
225-
println!("\nParameter ranges: {:?}", ranges);
226222
}
227223
```
228224

229225
This is the Rust equivalent of running commands such as:
230226

231227
```bash
232-
neopdf read metadata NNPDF40_nnlo_as_01180.neopdf.lz4
233-
neopdf read num_subgrids NNPDF40_nnlo_as_01180.neopdf.lz4
234-
neopdf read subgrid-info NNPDF40_nnlo_as_01180.neopdf.lz4 --member=0 --subgrid-index=0
228+
neopdf read metadata NNPDF40_nnlo_as_01180
229+
neopdf read num_subgrids NNPDF40_nnlo_as_01180
230+
neopdf read subgrid-info NNPDF40_nnlo_as_01180 --member=0 --subgrid-index=0
235231
```
236232

237233
---
@@ -245,7 +241,7 @@ use neopdf::gridpdf::ForcePositive;
245241
use neopdf::pdf::PDF;
246242

247243
fn main() {
248-
let pdf_name = "NNPDF40_nnlo_as_01180.neopdf.lz4";
244+
let pdf_name = "NNPDF40_nnlo_as_01180";
249245
let mut pdf = PDF::load(pdf_name, 0);
250246

251247
// Set positivity clipping for a single member.
@@ -277,9 +273,6 @@ compressed `NeoPDF` grid with the extension `.neopdf.lz4`.
277273
that actually fill the grid are highlighted.
278274

279275
```rust linenums="1"
280-
use std::env;
281-
282-
use ndarray::Array1;
283276
use neopdf::gridpdf::GridArray;
284277
use neopdf::metadata::{InterpolatorType, MetaData, SetType};
285278
use neopdf::pdf::PDF;
@@ -327,7 +320,8 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
327320
let q2s = sg.q2s.clone();
328321

329322
// Compute grid_data as [nucleon][alpha][pid][kt][x][q2].
330-
// Here we assume a standard LHAPDF-like grid: no explicit A or alpha_s dependence.
323+
// Here we assume a standard LHAPDF-like grid: no explicit
324+
// A or alpha_s dependence.
331325
let n_nuc = nucleons.len().max(1);
332326
let n_alp = alphas.len().max(1);
333327
let n_kt = kts.len().max(1);
@@ -338,29 +332,23 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
338332
let mut data = vec![0.0_f64; n_nuc * n_alp * n_pid * n_kt * n_x * n_q2];
339333
let mut idx = 0;
340334

341-
for _ in 0..n_nuc {
342-
for _ in 0..n_alp {
343-
for pid in pids.iter() {
344-
for _kt in 0..n_kt {
345-
for &x in &xs {
346-
for &q2 in &q2s {
347-
let val = pdf.xfxq2(*pid, &[x, q2]);
348-
data[idx] = val;
349-
idx += 1;
350-
}
351-
}
352-
}
353-
}
354-
}
355-
}
356-
357-
let grid = GridData::Grid6D(
358-
ndarray::Array::from_shape_vec(
359-
(n_nuc, n_alp, n_pid, n_kt, n_x, n_q2),
360-
data,
361-
)?
362-
.into_dyn(),
363-
);
335+
data.iter_mut()
336+
.zip(
337+
(0..n_nuc)
338+
.flat_map(|_| (0..n_alp))
339+
.flat_map(|_| pids.iter())
340+
.flat_map(|pid| (0..n_kt).map(move |_| pid))
341+
.flat_map(|pid| xs.iter().map(move |&x| (pid, x)))
342+
.flat_map(|(pid, x)| q2s.iter().map(move |&q2| (pid, x, q2))),
343+
)
344+
.for_each(|(slot, (pid, x, q2))| {
345+
*slot = pdf.xfxq2(*pid, &[x, q2]);
346+
});
347+
348+
let grid = GridData::Grid6D(ndarray::Array::from_shape_vec(
349+
(n_nuc, n_alp, n_pid, n_kt, n_x, n_q2),
350+
data,
351+
)?);
364352

365353
// Build parameter ranges for this subgrid.
366354
let nucleons_range = ParamRange::new(
@@ -375,7 +363,8 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
375363
kts.first().copied().unwrap_or(0.0),
376364
kts.last().copied().unwrap_or(0.0),
377365
);
378-
let x_range = ParamRange::new(xs.first().copied().unwrap(), xs.last().copied().unwrap());
366+
let x_range =
367+
ParamRange::new(xs.first().copied().unwrap(), xs.last().copied().unwrap());
379368
let q2_range =
380369
ParamRange::new(q2s.first().copied().unwrap(), q2s.last().copied().unwrap());
381370

0 commit comments

Comments
 (0)