<< Click to Display Table of Contents >> Navigation: Manual_HTML_Mnova_15 > Mnova for metabonomics |
Mnova 可让您以最佳质量轻松处理大型数据集,从而获得最精确的结果。一旦数据集增加到 20-200 个波谱, 手动处理就不再是一种选择。 Mnova 可以自动处理 生物流体的大型数据集,提取 ASCII 文件用于统计测量。 Mnova 包括功能强大的特定 相位和基线校正算法,适用于 一维和二维 生物流体波谱 ,以获得正确的量化结果。
开始使用 根据数据集的大小,Mnova 可通过两种主要方式用于大型生物流体波谱数据集。 图形模式(<100 个波谱):该模式允许在一组波谱上同时执行所有处理命令,从而可以同时与所有波谱进行交互。 脚本(>100 个波谱): ,用户只需打开数据集中的单个波谱,并使用 Mnova 中的脚本功能优化处理,以便将其应用于其余波谱。
处理基础 让我们来看看 "图形方法"。 1.当数据集较小时,我们可以将波谱文件夹拖到 Mnova 中,以便对所有波谱进行完全处理(也可以使用 multiOpen 脚本)。在本例中,我将 16 个波谱文件夹拖到了 Mnova 图标上。大约 5 秒钟后,我完全处理了所有波谱,如下图所示 2.2. 在页面导航器中选择所有波谱,以创建堆叠波谱。我们可以按下 "Ctrl/Cmd+A "键,或者点击 "Stack/Stack Spectra(堆叠/叠加波谱)"菜单。
3.选择其中之一(在左侧垂直按钮的堆栈下拉菜单中选择 "活动波谱"),并进行必要的处理和分析(相位和基线校正、分档、信号抑制......)。对第一个频谱的操作将同时应用于整个数据集。
Mnova 为生物流体样本提供了几项特殊功能,如自动相位 和基线校正算法、溶剂抑制 (例如去除水的色散信号)、自动调谐参考、 分档 (或分桶)、归一化、全局波谱解卷积 (正在进行中)。
4.4. 处理和分析完成后,我们可以导出 ASCII 文件用于 PCA 或 PLS,只需按照菜单 "File/Save As/NMR CSV File (*.csv *.txt)"(文件/另存为/核磁共振 CSV 文件 (*.csv *.txt))操作即可;确保在文件名字段中输入扩展名 *.txt:
选中堆叠波谱,然后按照菜单 "Stack/Superimpose Spectra(堆叠/叠加波谱)"进行叠加(例如,检查所有波谱是否完全对齐非常有用):
脚本方法
Mnova 包含脚本功能,可创建处理模板,与我们的脚本引擎配合使用,执行批量处理,从而实现前一流程的自动化。 Mnova具有强大而灵活的功能,可让用户轻松实现一维和二维 NMR 数据集的全自动处理。这非常适合批量处理同一类型的波谱,还可将分析操作纳入其中。
例如,假设您获取了 20 个质子波谱,希望使用相同的处理操作对其进行处理。处理过程非常简单:
1.加载一个波谱并按要求进行处理。 2.2. 转到处理/处理模板。 出现以下对话框: 此对话框包含Mnova 实现的所有处理和分析功能。您可以通过选择复选框来选择所需的选项,必要时还可以单击相应命令旁边的按钮来指定选项。
3.3. 对结果满意后,单击对话框中的保存按钮,将脚本文件保存为 Mnova 处理文件 (*.mnp)。 保存此模板后,您就可以运行脚本以相同方式处理所有波谱。 如果数据集数量过多,Mnova 可以打开、处理(apodization、FT、Zero Filling、LP、相位和基线校正......)、分析(binning 等)、保存到 ASCII 文件并关闭波谱,以便打开下一个数据集并继续处理(避免过度使用内存)。如果数量不多,Mnova 可以在屏幕上保留所有已完全处理的波谱。 您可以使用以下脚本自动完成上述过程,并将所有结果保存到同一个 ASCII 文件中。您可以在此处下载
将该脚本复制到 Mnova 的脚本文件夹中(通过菜单 "File/Preferences/Scripts/Directories"(文件/首选项/脚本/目录)进行选择),重新启动软件,脚本将出现在 "Scripts"(脚本)菜单下。
请注意,您可以使用 "工具栏自定义 "功能("视图/自定义用户界面/自定义工具栏")将此脚本引入工具栏。
要了解有关 Mnova 脚本的更多信息,请单击此处
//<GUI menuname="import_process_saveOneAscii_loop "快捷方式="Ctrl+I "工具提示="自动处理并保存为 ASCII"/> /****************************************************************************** 版权所有 (C) 2008 Mestrelab Research S.L. 保留所有权利。 本文件是 MNova 脚本工具包的一部分。MNova 软件的授权用户可自由使用本文件,但本文件按原样提供,不附带任何形式的保证,包括对设计、适销性和特定用途适用性的保证。 ******************************************************************************/ // 本示例函数演示了如何对一组波谱文件进行处理,并将处理结果保存为一个 ASCII 文件。 函数 import_process_saveOneAscii_loop() { const procName = "c:/procTemplates/proc.mnp"; // 处理文件。必须在 MestReNova 的处理模板对话框中创建。 const fileMask = "fid"; // 该掩码指定要处理的文件。 const dirMask = "*"; // 该掩码指定要扫描的波谱目录。
// 选择包含波谱数据的目录 const specDirKey = "import_process_saveOneAscii_loop/SpectraDir"; var dirName = FileDialog.getExistingDirectory(settings.value(specDirKey, Dir.home()), "Select Spectra Directory"); 如果 (!dirName) 返回; var dir = new Dir(dirName); dir.cdUp();
// 选择要保存输出的文件 const outDirKey = "import_process_saveOneAscii_loop/OutputDir"; var saveDir = settings.value(outDirKey, Dir.home()); // 获取上次使用的目录名 var fileName = FileDialog.getSaveFileName("ASCII 文件 (*.txt)", "选择输出文件",saveDir); 如果 (!fileName) 返回;
// 打开所选文件并创建映射到该文件的文本流 var fout = new File(fileName); settings.setValue(outDirKey, fout.absDirPath); // 保存目录名,以便下次调用脚本时使用 var sout = new TextStream(fout); sout.precision = 10;
// 临时文件名 const lastOutName = Dir.temp() + "/import_process_saveOneAscii_loop.lastOut.tmp"; 如果 (File.exists(lastOutName)) File.remove(lastOutName);
// 下面的函数 getMaskFiles 位于 files.qs 脚本中。 var files = getMaskFiles(dirName, dir.absPath, fileMask, dirMask, true); for(var fi = 0, length = files.length; fi < length; fi++) { var dw = new DocumentWindow(Application.mainWindow.newWindow()); // 创建新文档窗口 if (serialization.open(files[fi])) { nmr.process(procName); // 应用处理模板 var spec = new NMRSpectrum(nmr.activeSpectrum());
fout.open(File.WriteOnly);
var flastOut = new File(lastOutName); var slastOut = new TextStream(flastOut); if (!fi) { // 将文件的拳头列以 ppm 为单位。刻度取自第一个频谱。 flastOut.open(File.WriteOnly); slastOut.precision = 10;
var ppm = spec.hz()/spec.frequency(); var dPpm = spec.scaleWidth()/spec.count()/spec.frequency(); for(var si = spec.count()-1; si >= 0; si--) { slastOut.write(ppm, "\n"); ppm += dPpm; } flastOut.close(); } flastOut.open(File.ReadOnly);
for(var si = spec.count()-1; si >= 0; si--) sout.write(slastOut.readLine(), "\t\t", spec.real(si), "\n");
fout.close(); flastOut.close(); flastOut.remove(); if (fi < length-1) File.copy(fileName, lastOutName); } dw.close(); // 关闭已处理频谱的文档窗口 } }
|