let full_csv_file = path.with_file_name(base_name.to_owned() + "_report_full_spectrum.csv"); let csv_strings: Vec<String> = time_axis.iter().zip(&intensity_axis).map(|(t, i)| format!("{},{}", t, i)).collect(); let mut file = std::fs::File::create(full_csv_file).unwrap(); // scope / file dropped at end of fn writeln!(file, "{}", csv_strings.join("\n")).unwrap(); plot.to_html(spectrum_file);
时间: 2024-04-17 15:23:03 浏览: 14
这部分代码用于创建一个完整质谱数据的 CSV 文件,并将时间轴和强度轴的数据写入文件中。首先,根据给定的路径和基础文件名生成完整的 CSV 文件名。然后,使用 `time_axis` 和 `intensity_axis` 的数据生成一个包含时间和强度的字符串向量 `csv_strings`。接下来,创建一个文件对象并将 `csv_strings` 中的数据写入文件中。最后,将绘图对象保存为 HTML 文件。
注意:代码中的 `unwrap()` 用于在发生错误时立即终止程序并打印错误信息。在实际应用中,可能需要适当处理错误情况。
相关问题
pub fn plotly_spectra(path: &std::path::Path, tof_len: Option<i64>) -> Result<(), Box<dyn Error>> { let base_name = path.file_stem().unwrap().to_str().unwrap(); let spectrum_file = path.with_file_name(base_name.to_owned() + "_report_spectrum.html"); let mut plot = Plot::new(); let layout = Layout::new() .x_axis(Axis::new().title(Title::new("Time (ns)"))) .y_axis(Axis::new().title(Title::new("Pixels activated"))); plot.set_layout(layout); // this is backwards -> TODO: we should pass the data to this function let (time_axis, intensity_axis) = mass::spectrum(path, tof_len)?; let (time_axis, intensity_axis) = mass::zero_pad(&time_axis, &intensity_axis); let trace1 = Scatter::new(time_axis.clone(), intensity_axis.clone()) .name("Full spectrum") .mode(Mode::Lines); plot.add_trace(trace1); let full_csv_file = path.with_file_name(base_name.to_owned() + "_report_full_spectrum.csv"); let csv_strings: Vec<String> = time_axis.iter().zip(&intensity_axis).map(|(t, i)| format!("{},{}", t, i)).collect(); let mut file = std::fs::File::create(full_csv_file).unwrap(); // scope / file dropped at end of fn writeln!(file, "{}", csv_strings.join("\n")).unwrap(); plot.to_html(spectrum_file); Ok(()) }
这段代码定义了一个名为 `plotly_spectra` 的公共函数,用于绘制质谱图。
函数接受一个 `path` 参数,表示文件路径,以及一个可选的 `tof_len` 参数,表示 TOF(飞行时间)的长度。
首先,通过 `path.file_stem()` 获取文件名的 stem(不包含扩展名部分),然后通过 `to_str()` 转换为字符串类型,并使用 `unwrap()` 解包获取字符串值,并将其赋值给 `base_name` 变量。
接下来,通过将 `base_name` 和 "_report_spectrum.html" 拼接起来,创建一个新的文件路径 `spectrum_file`。
然后,创建一个 `Plot` 对象,并创建一个包含 x 轴和 y 轴标题的 `Layout` 对象,***
//获取文件名字后缀 let file_ext = file.originalname.subString(file.originalname.lastIndexOf(".") + 1)
你可以使用JavaScript中的`substring`和`lastIndexOf`方法来获取文件名的后缀。请注意,你的代码中有个小错误,应该是`substring`而不是`subString`。修正后的代码如下:
```javascript
let file_ext = file.originalname.substring(file.originalname.lastIndexOf(".") + 1);
```
这段代码将返回文件名的后缀,例如,如果文件名是"example.jpg",那么`file_ext`的值将是"jpg"。