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