UIMFLibrary 3.8.26
dotnet add package UIMFLibrary --version 3.8.26
NuGet\Install-Package UIMFLibrary -Version 3.8.26
<PackageReference Include="UIMFLibrary" Version="3.8.26" />
paket add UIMFLibrary --version 3.8.26
#r "nuget: UIMFLibrary, 3.8.26"
// Install UIMFLibrary as a Cake Addin
#addin nuget:?package=UIMFLibrary&version=3.8.26
// Install UIMFLibrary as a Cake Tool
#tool nuget:?package=UIMFLibrary&version=3.8.26
UIMF Library
This software package includes a library of C# functions to create, modify and extract data from UIMF files. UIMF files are SQLite databases of mass spectrometry data acquired at Pacific Northwest National Laboratory (PNNL).
NuGet
The UIMFLibrary is available on NuGet at:
Continuous Integration
The latest version of the application may be available on the AppVeyor CI server,
but builds are deleted after 6 months.
How to use the UIMFLibrary in C#:
- Use the NuGet package manager to add a reference to the UIMFLibrary
- Note that it depends on System.Data.SQLite
using UIMFLibrary;
- Declare the DataReader and DataWriter classes in your main code:
- Now the functions can be called as such:
UIMFReader DataReader = new UIMFReader(filePath);
DataReader.GetSpectrum(frameNumber, DataReader.FrameType.MS1, scanNumber, out var mzArray, out var intensityArray)
......
UIMFWriter DataWriter = new UIMFWriter(filePath);
DataWriter.CreateTables();
How to use the UIMFLibrary in C++:
- Copy UIMFLibrary.dll and System.Data.SQLite.DLL from either
- UIMFLibrary\bin\x86
- UIMFLibrary\bin\x64
- Open the Solution Explorer, add UIMFLibrary to your Project/References
- Add this using statement at the top of your code:
using namespace UIMFLibrary;
- In your .h file, declare the DataReader and DataWriter classes:
gcroot<UIMFReader*> ReadUIMF;
gcroot<UIMFWriter*> WriteUIMF;
In you .cpp file, instantantiate the reader and the writer:
Now the functions can be called as such:
ReadUIMF = new UIMFReader(filePath);
ReadUIMF->GetSpectrum(frameNumber, scanNumber, mzArray, intensityArray);
......
WriteUIMF = new UIMFWriter(filePath);
WriteUIMF->CreateTables();
Examples
To see examples of how to create, modify, and extract data out of the database, refer to the UIMFLibrary_Demo solution (see GitHub)
UIMF database structure:
Tables in a UIMF database file:
Table Name | Description | Comments |
---|---|---|
Global_Params | Global parameters | Parameters that apply to the entire UIMF file, with one row per parameter |
Frame_Param_Keys | Description of the frame parameters in Frame_Params | Each frame parameter has a unique parameter id |
Frame_Params | Parameters that apply to each frame | Each frame will have a series of parameters listed, with one parameter per row |
Frame_Scans | Description of each mass spectrum, including BPI and TIC plus the ion intensities | Intensities are stored as binary blobs |
Log_Entries | Log messages | Optional table |
Bin_Intensities | Selected ion chromatograms for each m/z bin | Optional Table tracking the intensity at a given m/z in every scan of every frame |
Global_Parameters | Legacy global parameters table | Wide table with a single row |
Frame_Parameters | Legacy frame parameters table | Wide table with one row per frame |
The UIMFWriter can optionally populate the legacy tables, but their use was phased out starting in 2015.
Global_Params
Column Name | Data Type | Comment |
---|---|---|
ParamID | int | Global parameter ID |
ParamName | string | Parameter name |
ParamValue | int | Parameter value |
ParamDataType | string | Data type for the parameter |
ParamDescription | string | Description of the parameter |
Frame_Param_Keys
Column Name | Data Type | Comment |
---|---|---|
ParamID | int | Frame parameter ID |
ParamName | string | Parameter name |
ParamDataType | string | Data type for the parameter |
ParamDescription | string | Description of the parameter |
Frame_Params
Column Name | Data Type | Comment |
---|---|---|
FrameNum | int | Frame number |
ParamID | int | Frame parameter ID |
ParamValue | int | Parameter value |
Frame_Scans table
Column Name | Data Type | Comment |
---|---|---|
FrameNum | int | Contains the frame number |
ScanNum | short | Contains the TOF pulse number the spectra are located in |
NonZeroCount | int | Nonzero intensities |
BPI | double/float/int | Base Peak Intensity per Scan |
BPI_MZ | double | m/z associated with BPI |
TIC | double/float/int | Total Ion Chromatogram per Scan |
Intensities | binary (BLOB) | Intensities in compressed binary format |
Log_Entries table
Column Name | Data Type | Comment |
---|---|---|
Entry_ID | int | Log entry ID |
Posted_By | string | Log source |
Posting_Time | string | DateTime |
Type | string | Message type |
Message | string | Log message |
Bin_Intensities table
Column Name | Data Type | Comment |
---|---|---|
MZ_BIN | integer | Bin number. Convert to m/z using ConvertBinToMZ in UIMFDataReader |
INTENSITIES | binary (BLOB) | Intensities for the given m/z across scans (for all frames) |
Legacy Global_Parameters table
Column Name | Data Type | Comment |
---|---|---|
DateStarted | string | Date Experiment was acquired |
NumFrames | int | Number of frames in dataset |
TimeOffset | int | Offset from 0. All bin numbers must be offset by this amount |
BinWidth | double | Width of TOF bins (in ns) |
Bins | int | Total TOF bins in a frame |
TOFCorrectionTime | float | Time Delay correction |
FrameDataBlobVersion | float | Version of FrameDataBlob in table Frame_Parameters |
ScanDataBlobVersion | float | Version of ScanInfoBlob in table Frame_Parameters |
TOFIntensityType | string | Data type of intensity in each TOF record (ADC is int/TDC is short/FOLDED is float) |
DatasetType | string | Type of dataset (HMS/HMSMS/HMS-MSn) |
Prescan_TOFPulses | int | Prescan TOP Pulses |
Prescan_Accumulations | int | Prescan Accumulations |
Prescan_TICThreshold | int | Prescan TIC Threshold |
Prescan_Continuous | bool | Prescan continous mode (True or False) |
Prescan_Profile | string | Prescan Profile File Name |
Instrument_Name | string | Instrument name |
Legacy Frame_Parameters table
Column Name | Data Type | Comment |
---|---|---|
FrameNum | int | (Primary Key) Frame number |
StartTime | double | Start time of frame |
Duration | double | Duration of frame |
Accumulations | short | Number of collected and summed acquisitions in a frame |
FrameType | short | Bitmap: 0=MS (Legacy); 1=MS (Regular); 2=MS/MS (Frag); 3=Calibration; 4=Prescan |
Scans | int | Number of TOF scans |
IMFProfile | string | File name for IMF Profile |
TOFLOsses | double | TOF Losses |
AverageTOFLength | double | Average time between TOF trigger pulses |
CalibrationSlope | double | Value of k0 |
CalibrationIntercept | double | Value of t0 |
a2 | double | secondary coefficients for residual mass error correction |
b2 | double | secondary coefficients for residual mass error correction |
c2 | double | secondary coefficients for residual mass error correction |
d2 | double | secondary coefficients for residual mass error correction |
e2 | double | secondary coefficients for residual mass error correction |
f2 | double | secondary coefficients for residual mass error correction |
Temperature | double | Ambient temperature |
voltHVRack1 | double | HVRack Voltage |
voltHVRack2 | double | HVRack Voltage |
voltHVRack3 | double | HVRack Voltage |
voltHVRack4 | double | HVRack Voltage |
voltCapInlet | double | Capilary Inlet Voltage |
voltEntranceIFTIn | double | IFT In Voltage |
voltEntranceIFTOut | double | IFT Out Voltage |
voltEntranceCondLmt | double | Cond Limit Voltage |
voltTrapOut | double | Trap Out Voltage |
voltTrapIn | double | Trap In Voltage |
voltJetDist | double | Jet Disruptor Voltage |
voltQuad1 | double | Fragmentation Quadrupole Voltage |
voltCond1 | double | Fragmentation Conductance Voltage |
voltQuad2 | double | Fragmentation Quadrupole Voltage |
voltCond2 | double | Fragmentation Conductance Voltage |
voltIMSOut | double | IMS Out Voltage |
voltExitIFTIn | double | IFT In Voltage |
voltExitIFTOut | double | IFT Out Voltage |
voltExitCondLimit | double | Cond Limit Voltage |
PressureFront | double | Pressure at front of Drift Tube |
PressureBack | double | Pressure at back of Drift Tube |
MPBitOrder | short | Determines original size of bit sequence |
FragmentationProfile | binary (BLOB) | Voltage profile used in fragmentation, Length number of Scans |
HighPressureFunnelPressure | double | High pressure funnel pressure |
IonFunnelTrapPressure | double | Ion funnel trap pressure |
QuadrupolePressure | double | Quadrupole pressure |
ESIVoltage | double | Electrospray voltage |
FloatVolage | double | Float voltage |
CALIBRATIONDONE | int | Set to 1 after a frame has been calibrated |
Decoded | int | Set to 1 after a frame has been decoded |
Contacts
Written by PNNL Staff for the Department of Energy (PNNL, Richland, WA)
Copyright 2009, Battelle Memorial Institute. All Rights Reserved.
Contributors include:
Kevin Crowell, Bill Danielson, Bryson Gibbons, Matthew Monroe, Spencer Prost, Yan Shi, Anuj Shah, Gordon Slysz
E-mail: matthew.monroe@pnnl.gov or proteomics@pnl.gov
Website: https://github.com/PNNL-Comp-Mass-Spec/UIMF-Library
License
Licensed under the Educational Community License, Version 2.0 (the "License"); you may not use this program except in compliance with the License. You may obtain a copy of the License at
https://opensource.org/licenses/ECL-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 is compatible. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.2
- System.Data.SQLite.Core (>= 1.0.111)
-
.NETFramework 4.7.2
- System.Data.SQLite.Core (>= 1.0.111)
-
.NETFramework 4.8
- System.Data.SQLite.Core (>= 1.0.111)
-
.NETStandard 2.0
- Microsoft.CSharp (>= 4.7.0)
- System.Data.SQLite.Core (>= 1.0.111)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
3.8.26 | 151 | 9/22/2023 |
3.8.23 | 136 | 9/22/2023 |
3.8.15 | 134 | 9/22/2023 |
3.8.9 | 103 | 9/22/2023 |
3.8.2 | 213 | 4/6/2023 |
3.8.1 | 300 | 1/31/2023 |
3.7.8 | 493 | 4/22/2022 |
3.7.7 | 378 | 8/25/2021 |
3.7.6 | 425 | 6/11/2021 |
3.7.5 | 375 | 6/7/2021 |
3.7.4 | 546 | 4/24/2020 |
3.7.3 | 605 | 8/28/2019 |
3.7.2 | 550 | 8/12/2019 |
3.7.1 | 578 | 8/8/2019 |
3.7.0 | 586 | 7/26/2019 |
3.6.9 | 594 | 5/28/2019 |
3.6.8 | 579 | 5/24/2019 |
3.6.7 | 588 | 3/20/2019 |
3.6.6 | 621 | 3/6/2019 |
3.6.5 | 709 | 2/16/2019 |
3.6.4 | 738 | 1/28/2019 |
3.6.3 | 685 | 1/24/2019 |
3.6.2 | 785 | 11/7/2018 |
3.6.1 | 1,065 | 5/21/2018 |
3.6.0 | 961 | 10/13/2017 |
3.5.7.7 | 925 | 9/28/2017 |
3.5.7.6 | 958 | 9/27/2017 |
3.5.7.5 | 913 | 9/27/2017 |
3.5.7.4 | 933 | 9/27/2017 |
3.5.7.3 | 926 | 9/26/2017 |
3.5.7.2 | 939 | 9/21/2017 |
1.0.21 | 963 | 9/7/2017 |
1.0.19 | 937 | 9/7/2017 |
1.0.18 | 938 | 8/26/2017 |
1.0.17 | 962 | 8/17/2017 |
1.0.16 | 952 | 8/17/2017 |
1.0.13 | 980 | 8/13/2017 |
1.0.12 | 925 | 8/13/2017 |
1.0.11 | 937 | 8/12/2017 |
1.0.10 | 976 | 8/5/2017 |
1.0.9 | 955 | 8/1/2017 |
1.0.8 | 975 | 7/26/2017 |
1.0.7 | 955 | 7/21/2017 |
1.0.5 | 969 | 4/27/2017 |
1.0.4 | 1,068 | 4/22/2017 |
1.0.3 | 932 | 3/31/2017 |
1.0.2 | 966 | 3/15/2017 |