Skip to main content

Messages

This section allows you to view all Messages made by this member. Note that you can only see Messages made in areas you currently have access to.

Messages - Hiroshi Tsugawa

62
MS-DIAL / Re: Gangliosides and Incorrect Charge Status
Hi Andrea,

we have already analyzed the standards by LC-MS/MS one year ago, but I had no time to implement these (I forgot them..). In this month, since I have much time to do source coding, we will address the implementation for the lipid classes! Maybe, within this week.

Hiroshi
64
MS-DIAL / Re: MS-DIAL on Supercomputer Failed to Annotate Metabolite
Hi,

I was also confusing... Maybe, the following source code for parsing parameter settings in the command line application is helpful for you?

Code: [Select]
private static void lcmsParamUpdate(AnalysisParametersBean param, string method, string value)
        {
            var f = 0.0F;
            var i = 0;
            switch (method)
            {
                //Data correction
                case "Retention time begin": if (float.TryParse(value, out f)) param.RetentionTimeBegin = f; return;
                case "Retention time end": if (float.TryParse(value, out f)) param.RetentionTimeEnd = f; return;
                case "Mass range begin": if (float.TryParse(value, out f)) param.MassRangeBegin = f; return;
                case "Mass range end": if (float.TryParse(value, out f)) param.MassRangeEnd = f; return;
                case "MS2 mass range begin": if (float.TryParse(value, out f)) param.Ms2MassRangeBegin = f; return;
                case "MS2 mass range end": if (float.TryParse(value, out f)) param.Ms2MassRangeEnd = f; return;

                //Centroid parameters
                case "MS1 tolerance for centroid": if (float.TryParse(value, out f)) param.CentroidMs1Tolerance = f; return;
                case "MS2 tolerance for centroid": if (float.TryParse(value, out f)) param.CentroidMs2Tolerance = f; return;

                //Retentiontime correction
                case "Excute RT correction": if (value == "TRUE" || value == "FALSE") param.RetentionTimeCorrectionCommon.RetentionTimeCorrectionParam.ExcuteRtCorrection = bool.Parse(value); return;
                case "RT correction with smoothing for RT diff": if (value == "TRUE" || value == "FALSE") param.RetentionTimeCorrectionCommon.RetentionTimeCorrectionParam.doSmoothing = bool.Parse(value); return;
                case "User setting intercept": if (float.TryParse(value, out f)) param.RetentionTimeCorrectionCommon.RetentionTimeCorrectionParam.UserSettingIntercept = f; return;
                case "RT diff calc method": if (value == "SampleMinusSampleAverage" || value == "SampleMinusReference")
                        param.RetentionTimeCorrectionCommon.RetentionTimeCorrectionParam.RtDiffCalcMethod = (Rfx.Riken.OsakaUniv.RetentionTimeCorrection.RtDiffCalcMethod)Enum.Parse(typeof(Rfx.Riken.OsakaUniv.RetentionTimeCorrection.RtDiffCalcMethod), value, true);
                    return;
                case "Interpolation Method":
                    if (value == "Linear")
                        param.RetentionTimeCorrectionCommon.RetentionTimeCorrectionParam.InterpolationMethod = Rfx.Riken.OsakaUniv.RetentionTimeCorrection.InterpolationMethod.Linear;
                    return;
                case "Extrapolation method (begin)":
                    if (value == "UserSetting" || value == "FirstPoint" || value == "LinearExtrapolation")
                        param.RetentionTimeCorrectionCommon.RetentionTimeCorrectionParam.ExtrapolationMethodBegin = (Rfx.Riken.OsakaUniv.RetentionTimeCorrection.ExtrapolationMethodBegin)Enum.Parse(typeof(Rfx.Riken.OsakaUniv.RetentionTimeCorrection.ExtrapolationMethodBegin), value, true);
                    return;
                case "Extrapolation method (end)":
                    if (value == "LastPoint" || value == "LinearExtrapolation")
                        param.RetentionTimeCorrectionCommon.RetentionTimeCorrectionParam.ExtrapolationMethodEnd = (Rfx.Riken.OsakaUniv.RetentionTimeCorrection.ExtrapolationMethodEnd)Enum.Parse(typeof(Rfx.Riken.OsakaUniv.RetentionTimeCorrection.ExtrapolationMethodEnd), value, true);
                    return;
                case "iSTD file":
                    if (System.IO.File.Exists(value)) {
                        var error = string.Empty;
                        param.RetentionTimeCorrectionCommon.StandardLibrary = TextLibraryParcer.StandardTextLibraryReader(value, out error);
                        if (error != string.Empty) {
                            Console.WriteLine(error);
                        }
                    }
                    return;

                //Peak detection param
                case "Smoothing method":
                    if (value == "SimpleMovingAverage" || value == "LinearWeightedMovingAverage" || value == "SavitzkyGolayFilter" || value == "BinomialFilter")
                        param.SmoothingMethod = (SmoothingMethod)Enum.Parse(typeof(SmoothingMethod), value, true);
                    return;
                case "Smoothing level": if (int.TryParse(value, out i)) param.SmoothingLevel = i; return;
                case "Minimum peak width": if (int.TryParse(value, out i)) param.MinimumDatapoints = i; return;
                case "Minimum peak height": if (int.TryParse(value, out i)) param.MinimumAmplitude = i; return;
                case "Mass slice width": if (float.TryParse(value, out f)) param.MassSliceWidth = f; return;

                //Deconvolution
                case "Sigma window value": if (float.TryParse(value, out f)) param.SigmaWindowValue = f; return;
                case "Amplitude cut off": if (float.TryParse(value, out f)) param.AmplitudeCutoff = f; return;
                case "Exclude after precursor": if (value.ToUpper() == "FALSE") param.RemoveAfterPrecursor = false; return;

                //Identification
                case "Retention time tolerance for identification": if (float.TryParse(value, out f)) param.RetentionTimeLibrarySearchTolerance = f; return;
                case "Accurate ms1 tolerance for identification": if (float.TryParse(value, out f)) param.Ms1LibrarySearchTolerance = f; return;
                case "Accurate ms2 tolerance for identification": if (float.TryParse(value, out f)) param.Ms2LibrarySearchTolerance = f; return;
                case "Identification score cut off": if (float.TryParse(value, out f)) param.IdentificationScoreCutOff = f; return;
                case "Use retention information for identification scoring": if (value == "TRUE" || value == "FALSE") param.IsUseRetentionInfoForIdentificationScoring = bool.Parse(value); return;
                case "Use retention information for identification filtering": if (value == "TRUE" || value == "FALSE") param.IsUseRetentionInfoForIdentificationFiltering = bool.Parse(value); return;

                //Post identification
                case "Retention time tolerance for post identification": if (float.TryParse(value, out f)) param.RetentionTimeToleranceOfPostIdentification = f; return;
                case "Accurate ms1 tolerance for post identification": if (float.TryParse(value, out f)) param.AccurateMassToleranceOfPostIdentification = f; return;
                case "Post identification score cut off": if (float.TryParse(value, out f)) param.PostIdentificationScoreCutOff = f; return;

                //Alignment parameters setting
                case "Retention time tolerance for alignment": if (float.TryParse(value, out f)) param.RetentionTimeAlignmentTolerance = f; return;
                case "MS1 tolerance for alignment": if (float.TryParse(value, out f)) param.Ms1AlignmentTolerance = f; return;
                case "Retention time factor for alignment": if (float.TryParse(value, out f)) param.RetentionTimeAlignmentFactor = f; return;
                case "MS1 factor for alignment": if (float.TryParse(value, out f)) param.Ms1AlignmentFactor = f; return;
                case "Peak count filter": if (float.TryParse(value, out f)) param.PeakCountFilter = f; return;
                case "QC at least filter": if (value == "TRUE" || value == "FALSE") param.QcAtLeastFilter = bool.Parse(value); return;
                case "Alignment reference file ID": if (int.TryParse(value, out i)) param.AlignmentReferenceFileID = i; return;
                case "Remove feature based on peak height fold-change": if (value == "TRUE" || value == "FALSE") param.IsRemoveFeatureBasedOnPeakHeightFoldChange = bool.Parse(value); return;
                case "Sample max / blank average": if (float.TryParse(value, out f)) param.SampleMaxOverBlankAverage = f; return;
                case "Sample average / blank average": if (float.TryParse(value, out f)) param.SampleAverageOverBlankAverage = f; return;
                case "Keep identified and annotated metabolites": if (value == "TRUE" || value == "FALSE") param.IsKeepIdentifiedMetaboliteFeatures = bool.Parse(value); return;
                case "Replace true zero values with 1/2 of minimum peak height over all samples": if (value == "TRUE" || value == "FALSE") param.IsReplaceTrueZeroValuesWithHalfOfMinimumPeakHeightOverAllSamples = bool.Parse(value); return;

                //Isotope tracking setting
                case "Tracking isotope label": if (value == "TRUE" || value == "FALSE") param.TrackingIsotopeLabels = bool.Parse(value); return;
                case "Set fully labeled reference file": if (value == "TRUE" || value == "FALSE") param.SetFullyLabeledReferenceFile = bool.Parse(value); return;
                case "Non labeled reference ID": if (int.TryParse(value, out i)) param.NonLabeledReferenceID = i; return;
                case "Fully labeled reference ID": if (int.TryParse(value, out i)) param.FullyLabeledReferenceID = i; return;
                case "Isotope tracking dictionary ID": if (int.TryParse(value, out i)) param.IsotopeTrackingDictionary.SelectedID = i; return;

                //CorrDec settings
                case "CorrDec excute":
                    if (value.ToUpper() == "FALSE") {
                        if (param.AnalysisParamOfMsdialCorrDec == null) param.AnalysisParamOfMsdialCorrDec = new AnalysisParamOfMsdialCorrDec();
                        param.AnalysisParamOfMsdialCorrDec.CanExcute = false;
                    }
                    return;                   
                case "CorrDec MS2 tolerance": if (param.AnalysisParamOfMsdialCorrDec == null) param.AnalysisParamOfMsdialCorrDec = new AnalysisParamOfMsdialCorrDec();
                    if (float.TryParse(value, out f)) param.AnalysisParamOfMsdialCorrDec.MS2Tolerance = f; return;
                case "CorrDec minimum MS2 peak height":
                    if (param.AnalysisParamOfMsdialCorrDec == null) param.AnalysisParamOfMsdialCorrDec = new AnalysisParamOfMsdialCorrDec();
                    if (int.TryParse(value, out i)) param.AnalysisParamOfMsdialCorrDec.MinMS2Intensity = i; return;
                case "CorrDec minimum number of detected samples":
                    if (param.AnalysisParamOfMsdialCorrDec == null) param.AnalysisParamOfMsdialCorrDec = new AnalysisParamOfMsdialCorrDec();
                    if (int.TryParse(value, out i)) param.AnalysisParamOfMsdialCorrDec.MinNumberOfSample = i; return;
                case "CorrDec exclude highly correlated spots":
                    if (param.AnalysisParamOfMsdialCorrDec == null) param.AnalysisParamOfMsdialCorrDec = new AnalysisParamOfMsdialCorrDec();
                    if (float.TryParse(value, out f)) param.AnalysisParamOfMsdialCorrDec.MinCorr_MS1 = f; return;
                case "CorrDec minimum correlation coefficient (MS2)":
                    if (param.AnalysisParamOfMsdialCorrDec == null) param.AnalysisParamOfMsdialCorrDec = new AnalysisParamOfMsdialCorrDec();
                    if (float.TryParse(value, out f)) param.AnalysisParamOfMsdialCorrDec.MinCorr_MS2 = f; return;
                case "CorrDec margin 1 (target precursor)":
                    if (param.AnalysisParamOfMsdialCorrDec == null) param.AnalysisParamOfMsdialCorrDec = new AnalysisParamOfMsdialCorrDec();
                    if (float.TryParse(value, out f)) param.AnalysisParamOfMsdialCorrDec.CorrDiff_MS1 = f; return;
                case "CorrDec margin 2 (coeluted precursor)":
                    if (param.AnalysisParamOfMsdialCorrDec == null) param.AnalysisParamOfMsdialCorrDec = new AnalysisParamOfMsdialCorrDec();
                    if (float.TryParse(value, out f)) param.AnalysisParamOfMsdialCorrDec.CorrDiff_MS2 = f; return;
                case "CorrDec minimum detected rate":
                    if (param.AnalysisParamOfMsdialCorrDec == null) param.AnalysisParamOfMsdialCorrDec = new AnalysisParamOfMsdialCorrDec();
                    if (float.TryParse(value, out f)) param.AnalysisParamOfMsdialCorrDec.MinDetectedPercentToVisualize = f; return;
                case "CorrDec minimum MS2 relative intensity":
                    if (param.AnalysisParamOfMsdialCorrDec == null) param.AnalysisParamOfMsdialCorrDec = new AnalysisParamOfMsdialCorrDec();
                    if (float.TryParse(value, out f)) param.AnalysisParamOfMsdialCorrDec.MinMS2RelativeIntensity = f; return;
                case "CorrDec remove peaks larger than precursor":
                    if (param.AnalysisParamOfMsdialCorrDec == null) param.AnalysisParamOfMsdialCorrDec = new AnalysisParamOfMsdialCorrDec();
                    if (value == "TRUE" || value == "FALSE") param.AnalysisParamOfMsdialCorrDec.RemoveAfterPrecursor = bool.Parse(value); return;

            }
        }

Code: [Select]
private static void projectPropertyUpdate(ProjectPropertyBean projectProp, string method, string value)
        {
            switch (method) {
                //Data type
                case "MS1 data type":
                    if (value == "Centroid" || value == "Profile")
                        projectProp.DataType = (DataType)Enum.Parse(typeof(DataType), value, true);
                    return;

                case "MS2 data type":
                    if (value == "Centroid" || value == "Profile")
                        projectProp.DataTypeMS2 = (DataType)Enum.Parse(typeof(DataType), value, true);
                    return;

                case "Ion mode":
                    if (value == "Positive" || value == "Negative")
                        projectProp.IonMode = (IonMode)Enum.Parse(typeof(IonMode), value, true);
                    return;

                //File paths
                case "DIA file": projectProp.ExperimentFilePath = value; return;
                case "MSP file": projectProp.LibraryFilePath = value; return;
                case "Text file": projectProp.PostIdentificationLibraryFilePath = value; return;
                case "Target compound file": projectProp.CompoundListInTargetModePath = value; return;

                // Private version
                case "Is private version of Tada":
                    if (value.ToUpper() == "TRUE")
                        projectProp.IsLabPrivateVersionTada = true;                   
                    return;
            }
        }
65
MS-DIAL / Re: Gangliosides and Incorrect Charge Status
Hi,

this is because the current MS-DIAL does not have the MS/MS spectra of GM3 [M-2H]2-.
As long as I checked your ppt, MS-DIAL recognizes the ion as double charge. However, since there is no spectral information for the GM3 double charged ion, the annotation is wrong. We will make the library for these ions as soon as possible. Please wait.
Thanks,

Hiroshi
66
MS-DIAL / Re: Unselected adduct appears in MS-DIAL peak table
Hi Xinsong,

maybe, there are several opinions to handle the multiple ions from one metabolite.
ESI will generate >10 ions (including isotopes) from one chemical actually. Therefore, some of software programs will "integrate" these ion's peak area/height. However, I do not like this because there is a possibility that not all of ions from the metabolite is grasped by the data processing step. Therefore, I am using the highest/robust/reliable adduct type to quantify a metabolite in the scan mode analysis. For instance, in your case, I will remove [M+2H]2+ for further analysis.
Thanks,

Hiroshi


67
MS-DIAL / Re: Not able to see MS2
Oh...I will ask Shimadzu persons to help you (because I am Japanese.:D
Please send me your private address.

Thanks

Hiroshi
68
MS-DIAL / Re: MS2 spectra merged or not merged in MSDIAL?
Hi Falco,

only one MS/MS spectrum is assigned to each precursor ion even though the multiple spectra are acquired in the experimental data for a precursor peak.
Currently, from the left to right edges of detected peak, the MS/MS spectrum having the highest basepeak intensity is assigned.
For the representative spectrum for alignment peak spot, see below.

http://www.metabolomics-forum.com/index.php?topic=1388.msg4061#msg4061
http://www.metabolomics-forum.com/index.php?topic=1396.msg4123#msg4123

Thanks,

Hiroshi
69
MS-DIAL / Re: MS-Finder search parameters
Hi Leon,

today, I had a time to see your data.
I do not know the reason, but your thermo-ms file contains the ms1/ms2 cycle as the following order:
CycleID   Type   m/z begin   m/z end
0   SWATH   75   108
1   SWATH   108   141
2   SWATH   141   174
3   SWATH   174   207
4   SWATH   207   240
5   SWATH   240   273
6   SCAN   75   273

I attached the experimental file that I modified. If you use this, you will be able to process your data correctly.
You can confirm this order actually by using SeeMS from proteowizard community.

Thanks,

Hiroshi
70
MS-DIAL / Re: MS-DIAL and MS-FINDER library limits
Hi,

I am not sure if I understood your issue correctly. Today, I just downloaded your test query/library files, and analyzed them by ms-finder program. I attached the result and parameter setting used. Could you please let me know where the incorrect thing is?
Also, the source code is available at: http://prime.psc.riken.jp/compms/msfinder/main.html (click "Core"). Here you can check where the bug is.
Thanks,

Hiroshi
73
MS-DIAL / Re: Not able to see MS2
w/o MS2 tag means that the peak was annotated without ms2 information. Therefore, the tag will be appeared even though your data does not have MS2 spectral information.

Hiroshi