Mnova for metabonomics

Top  Previous  Next

Mnova for metabonomics

mestrelab-logom-horz-white_tiny prev-chm next-chm

Mnova 可让您以最佳质量轻松处理大型数据集,从而获得最精确的结果。一旦数据集增加到 20-200 个波谱, 手动处理就不再是一种选择

Mnova 可以自动处理 生物流体的大型数据集,提取 ASCII 文件用于统计测量。

Mnova 包括功能强大的特定 相位和基线校正算法,适用于 一维和二维 生物流体波谱 ,以获得正确的量化结果。

 

开始使用

根据数据集的大小,Mnova 可通过两种主要方式用于大型生物流体波谱数据集。

图形模式(<100 个波谱):该模式允许在一组波谱上同时执行所有处理命令,从而可以同时与所有波谱进行交互。

脚本(>100 个波谱): ,用户只需打开数据集中的单个波谱,并使用 Mnova 中的脚本功能优化处理,以便将其应用于其余波谱。

 

处理基础

让我们来看看 "图形方法"。

1.当数据集较小时,我们可以将波谱文件夹拖到 Mnova 中,以便对所有波谱进行完全处理(也可以使用 multiOpen 脚本)。在本例中,我将 16 个波谱文件夹拖到了 Mnova 图标上。大约 5 秒钟后,我完全处理了所有波谱,如下图所示

1

2.2. 在页面导航器中选择所有波谱,以创建堆叠波谱。我们可以按下 "Ctrl/Cmd+A "键,或者点击 "Stack/Stack Spectra(堆叠/叠加波谱)"菜单。

 

代谢学1

 

3.选择其中之一(在左侧垂直按钮的堆栈下拉菜单中选择 "活动波谱"),并进行必要的处理和分析(相位和基线校正、分档、信号抑制......)。对第一个频谱的操作将同时应用于整个数据集。

 

3

 

Mnova 为生物流体样本提供了几项特殊功能,如自动相位 和基线校正算法溶剂抑制 (例如去除水的色散信号)、自动调谐参考 分档 (或分桶)、归一化全局波谱解卷积 (正在进行中)。

 

4.4. 处理和分析完成后,我们可以导出 ASCII 文件用于 PCA 或 PLS,只需按照菜单 "File/Save As/NMR CSV File (*.csv *.txt)"(文件/另存为/核磁共振 CSV 文件 (*.csv *.txt))操作即可;确保在文件名字段中输入扩展名 *.txt:

 

4

 

选中堆叠波谱,然后按照菜单 "Stack/Superimpose Spectra(堆叠/叠加波谱)"进行叠加(例如,检查所有波谱是否完全对齐非常有用):

 

Imagen3

 

脚本方法

 

Mnova 包含脚本功能,可创建处理模板,与我们的脚本引擎配合使用,执行批量处理,从而实现前一流程的自动化。

Mnova具有强大而灵活的功能,可让用户轻松实现一维和二维 NMR 数据集的全自动处理。这非常适合批量处理同一类型的波谱,还可将分析操作纳入其中。

 

例如,假设您获取了 20 个质子波谱,希望使用相同的处理操作对其进行处理。处理过程非常简单:

 

1.加载一个波谱并按要求进行处理。

2.2. 转到处理/处理模板出现以下对话框:

FullProcessing.zoom77

此对话框包含Mnova 实现的所有处理和分析功能。您可以通过选择复选框来选择所需的选项,必要时还可以单击相应命令旁边的按钮来指定选项。

 

3.3. 对结果满意后,单击对话框中的保存按钮,将脚本文件保存为 Mnova 处理文件 (*.mnp)。

保存此模板后,您就可以运行脚本以相同方式处理所有波谱。

如果数据集数量过多,Mnova 可以打开、处理(apodization、FT、Zero Filling、LP、相位和基线校正......)、分析(binning 等)、保存到 ASCII 文件并关闭波谱,以便打开下一个数据集并继续处理(避免过度使用内存)。如果数量不多,Mnova 可以在屏幕上保留所有已完全处理的波谱。

5

您可以使用以下脚本自动完成上述过程,并将所有结果保存到同一个 ASCII 文件中。您可以在此处下载

 

将该脚本复制到 Mnova 的脚本文件夹中(通过菜单 "File/Preferences/Scripts/Directories"(文件/首选项/脚本/目录)进行选择),重新启动软件,脚本将出现在 "Scripts"(脚本)菜单下。

 

6

请注意,您可以使用 "工具栏自定义 "功能("视图/自定义用户界面/自定义工具栏")将此脚本引入工具栏。

 

要了解有关 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(); // 关闭已处理频谱的文档窗口

 }

}