Code Monkey home page Code Monkey logo

flashlfq's Introduction

Current Version

Download from GitHub:

Install with bioconda

install with bioconda

Docker Image

About

FlashLFQ is an ultrafast label-free quantification algorithm for mass-spectrometry proteomics.

This repository is for the stand-alone application of FlashLFQ. FlashLFQ is also bundled into MetaMorpheus.

Requirements

The command-line version of FlashLFQ is cross-platform (Windows, macOS, or Linux). The GUI is Windows-only.

.NET 6 is required for both the command-line and GUI version:

Windows: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-6.0.4-windows-x64-installer

Mac: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-6.0.4-macos-x64-installer

Linux: https://docs.microsoft.com/dotnet/core/install/linux?WT.mc_id=dotnet-35129-website

Download

To download FlashLFQ, go here. Click the FlashLFQ.zip file and extract the contents to a desired location on your computer.

FlashLFQ is also available as a Docker container.

Alternatively, FlashLFQ is bundled into MetaMorpheus, which can be downloaded here. MetaMorpheus is a full-featured GUI proteomics software suite that includes mass calibration, PTM discovery, search algorithms, and FlashLFQ.

Input

  • Tab-separated text file of MS/MS identifications (.tsv, .psmtsv., .txt)
  • One or more bottom-up mass spectra files. Supported formats are .raw (Windows/Linux) or .mzML (Windows/Linux/macOS) file formats. You can convert other formats to .mzML using MSConvert.
  • Direct use of Thermo raw files requires acceptance of a Thermo License. If you would like to process Thermo .raw data files directly, you must agree to the Thermo license. This is accomplished by creating a text file with the name "LicenseAgreements.toml" with the text below. This file should be placed in the same directory as the executable program.

HasAcceptedThermoLicence = true

Usage

FlashLFQ can be used as a command-line program or in a graphical user interface (GUI). It is also built into the MetaMorpheus GUI (see MetaMorpheus).

Tutorial

To get started using FlashLFQ, please try the vignette. This is a helpful tutorial that provides the necessary input (spectra files, etc.) for you to try FlashLFQ. If you want to learn more about how FlashLFQ works, please check out the Wiki.

Help

The Wiki contains a lot of useful information including a description of FlashLFQ's settings, how to get started with our vignette, and how to interpret the results in the Bayesian quantification file. Check it out!

There are two methods to contact us. You can create a new issue on the GitHub Issues page if you are comfortable with your question being public. This helps other people, because it is likely that someone else has the same question. For private correspondance, please email mm_support at chem dot wisc dot edu.

Development Version Build Status

Build status

flashlfq's People

Contributors

rmillikin avatar stefanks avatar trishorts avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

flashlfq's Issues

SILAC quantification task crashing

Hello!

I've been using MetaMorpheus for some SILAC DDA quantification (K and R). It's been crashing when I try to run it on an experiment of 42 acquisitions (but runs fine with equivalent acquisitions of just 20 files) and the search goes fine, just the quantification step crashes. I've tried both the Multiplex option and the Turnover After Day 0 option, both crash so I assume this is due to my computer not being up to spec to run this kind of computational task! Do you have any advice, besides trying to source a better computer?

Thanks
Lindsay

Issue Running with .mzML file

Hello,

I'm having a problem trying to run FlashLFQ. Here is my command line execution and error message:

& '..\FlashLFQ\FlashLFQ\FlashLFQExecutable' --idt flashLFQinput.psmtsv --raw FileName.mzML --rep . --chg false

Opening PSM file flashLFQinput.psmtsv
Done reading PSMs
Setup is OK; read in 12894 identifications; starting FlashLFQ engine
Assigning MS1 peaks to bins
Quantifying peptides for FileName
Unhandled Exception: System.AggregateException: One or more errors occurred. ---> System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
at FlashLFQ.FlashLFQEngine.FilterPeaksByIsotopicDistribution(IEnumerable1 peaks, Identification identification, Int32 chargeState, Boolean lookForBadIsotope, Dictionary2 allMs1Scans)
at FlashLFQ.FlashLFQEngine.<>c__DisplayClass31_0.b__4(Tuple2 range, ParallelLoopState loopState) at System.Threading.Tasks.Parallel.<>c__DisplayClass42_02.b__1()
at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
at System.Threading.Tasks.Task.<>c__DisplayClass176_0.b__0(Object )
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](Partitioner1 source, ParallelOptions parallelOptions, Action1 simpleBody, Action2 bodyWithState, Action3 bodyWithStateAndIndex, Func4 bodyWithStateAndLocal, Func5 bodyWithEverything, Func1 localInit, Action1 localFinally)
at System.Threading.Tasks.Parallel.ForEach[TSource](Partitioner1 source, ParallelOptions parallelOptions, Action2 body)
at FlashLFQ.FlashLFQEngine.QuantifyMS2IdentifiedPeptides(RawFileInfo fileInfo, Dictionary2 mzBins, Dictionary2 allMs1Scans)
at FlashLFQ.FlashLFQEngine.Run()
at FlashLFQExecutable.FlashLFQExecutable.Main(String[] args) in C:\Users\rmillikin\Source\Repos\FlashLFQ\FlashLFQ Executable\FlashLFQExecutable.cs:line 112

Also, your GitHub page says that this supports a custom filetype with the headers "File Name", "Base Sequence", "Full Sequence", "Peptide Monoisotopic Mass", "Scan Retention Time", "Precursor Charge", and "Protein Accession". When I tried to build an input file with these parameters, it failed saying that it was an Unknown file type. I don't see anywhere in the PsmReader.cs source code where this would be supported either.

Please let me know if you can help me with this issue.

Thanks,
Danny

help printed twice on Linux

A minor thing -- the help text is printed twice when run on Linux using Mono (this is with 0.1.108):

jvolkening@samson:~$ mono ~/scratch/FlashLFQ/CMD.exe --help
Valid arguments:
--idt [string|identification file path (TSV format)]
--rep [string|directory containing spectrum data files]
--out [string|output directory]
--ppm [double|ppm tolerance]
--iso [double|isotopic distribution tolerance in ppm]
--sil [bool|silent mode]
--int [bool|integrate features]
--mbr [bool|match between runs]
--mrt [double|maximum MBR window in minutes]
--chg [bool|use only precursor charge state]
--rmm [bool|require observed monoisotopic mass peak]
--nis [int|number of isotopes required to be observed]
--nor [bool|normalize intensity results]
--pro [bool|advanced protein quantification]

Valid arguments:
--idt [string|identification file path (TSV format)]
--rep [string|directory containing spectrum data files]
--out [string|output directory]
--ppm [double|ppm tolerance]
--iso [double|isotopic distribution tolerance in ppm]
--sil [bool|silent mode]
--int [bool|integrate features]
--mbr [bool|match between runs]
--mrt [double|maximum MBR window in minutes]
--chg [bool|use only precursor charge state]
--rmm [bool|require observed monoisotopic mass peak]
--nis [int|number of isotopes required to be observed]
--nor [bool|normalize intensity results]
--pro [bool|advanced protein quantification]

Support for Percolator output files

It would be great if Percolator PSM-level tab-delimited output files could be supported by FlashLFQ. I looked into this, and there are two major and several minor challenges associated with making this happen.

The first major issue is that Percolator does not include the mzML file name, but only an integer file index, in the output file. This is obviously problematic, and it's something we can look into fixing on the Percolator end of things.

The second major issue is that Percolator does not include retention time. This is harder for us to fix, because this information is also not included in the outputs of many common search engines. It seems like, if you have the scan numbers in the Percolator output, it should be feasible for FlashLFQ to grab the RT from the mzML file. Is this doable?

The other minor issues are that Percolator does not have a "Base Sequence" column and that Percolator uses comma-delimited protein ID lists, rather than semi-colon delimited lists. These latter ones, along with differences in column naming, should be easy to handle.

Here is a tiny sample Percolator output file.
sample.txt

read .mzID

might help us with using data from other search engines (b/c you can do a good job specifiying the sequence compositon) in a clear format.

RT alignment?

Hello,

For MBR, does FlashLFQ perform retention time alignment between runs internally, or does this need to be done separately prior to running? Tried to find this in the manuscript or wiki but couldn't be sure.

Thanks,
Jeremy

Advice on parameter setting

Not sure if this qualifies as a software issue per se, but I am hoping to get some advice about how to appropriately set parameters for FlashLFQ. I input a set of 9800 PSMs into the software, all of which were accepted at 1% FDR by Percolator. FlashLFQ only returned 5567 quants. I thought this seemed low, and I noticed that the default ppm tolerance is 10. Our param-medic software estimates a precursor window size of 37 ppm for this data, so just to be safe I tried running flashlfq with --ppm 50 --iso 20. I was surprised that the same run then yielded slightly fewer quants (5543). I assumed that if I loosened the threshold I would get more quants. Am I misunderstanding? Is this rate of successful quantification to be expected? If not, can you advise me on what I might should do differently?

I can send the files if that's helpful, though the mzml is too big to attach here.

Thanks.
Bill

FlashLFQ.FlashLFQEngine.RetentionTimeCalibrationAndErrorCheckMatchedFeatures FATAL UNHANDLED EXCEPTION

I'm not sure if this is an error in my run of FlashLFQ or if this just happened to have an empty list.

([email protected]) galaxy@galaxy [~/tmp/test] % ln -s '/panfs/roc/risdb/galaxy/libdata/proteomics/UW/PASS00470/Mouse_XML/B6.PSMs.tsv' 'B6.PSMs.psmtsv' && mkdir spectrum_dir && ln -s '/panfs/roc/website/galaxyp.msi.umn.edu/GALAXYP/database/files/000/190/dataset_190425.dat' 'spectrum_dir/04-29-13_B6_Frac1_9uL.mzML' && ln -s '/panfs/roc/website/galaxyp.msi.umn.edu/GALAXYP/database/files/000/190/dataset_190426.dat' 'spectrum_dir/04-29-13_B6_Frac2_9p5uL.mzML' && ln -s '/panfs/roc/website/galaxyp.msi.umn.edu/GALAXYP/database/files/000/190/dataset_190427.dat' 'spectrum_dir/04-29-13_B6_Frac3_9p5uL.mzML' && ln -s '/panfs/roc/website/galaxyp.msi.umn.edu/GALAXYP/database/files/000/190/dataset_190428.dat' 'spectrum_dir/04-29-13_B6_Frac4_8uL.mzML' && ln -s '/panfs/roc/website/galaxyp.msi.umn.edu/GALAXYP/database/files/000/190/dataset_190429.dat' 'spectrum_dir/04-29-13_B6_Frac5_4uL.mzML' && ln -s '/panfs/roc/website/galaxyp.msi.umn.edu/GALAXYP/database/files/000/190/dataset_190430.dat' 'spectrum_dir/04-29-13_B6_Frac6_5uL.mzML' && ln -s '/panfs/roc/website/galaxyp.msi.umn.edu/GALAXYP/database/files/000/190/dataset_190431.dat' 'spectrum_dir/04-29-13_B6_Frac7_5uL.mzML' && ln -s '/panfs/roc/website/galaxyp.msi.umn.edu/GALAXYP/database/files/000/190/dataset_190432.dat' 'spectrum_dir/04-29-13_B6_Frac8_9p5uL.mzML' && ln -s '/panfs/roc/website/galaxyp.msi.umn.edu/GALAXYP/database/files/000/190/dataset_190433.dat' 'spectrum_dir/04-29-13_B6_Frac9_9p5uL.mzML' && FlashLFQ --idt 'B6.PSMs.psmtsv' --rep spectrum_dir --ppm 10.0 --iso 5.0 --nis 2 --rmm true --mbr true --pau false && cat *_FlashLFQ_Log.txt | sed 's/(Analysis summary for:).*working./\1 /' > '/panfs/roc/website/galaxyp.msi.umn.edu/GALAXYP/database/files/000/196/dataset_196360.dat' && cp *_FlashLFQ_QuantifiedBaseSequences.tsv '/panfs/roc/website/galaxyp.msi.umn.edu/GALAXYP/database/files/000/196/dataset_196362.dat' && cp *_FlashLFQ_QuantifiedModifiedSequences.tsv '/panfs/roc/website/galaxyp.msi.umn.edu/GALAXYP/database/files/000/196/dataset_196363.dat' && cp *_FlashLFQ_QuantifiedPeaks.tsv '/panfs/roc/website/galaxyp.msi.umn.edu/GALAXYP/database/files/000/196/dataset_196361.dat' && grep -v '^test$' *_FlashLFQ_QuantifiedProteins.tsv > '/panfs/roc/website/galaxyp.msi.umn.edu/GALAXYP/database/files/000/196/dataset_196364.dat'
Opening PSM file B6.PSMs.psmtsv
Done reading PSMs
Setup is OK - running FlashLFQ engine
Assigning MS1 peaks to bins
Quantifying peptides for 04-29-13_B6_Frac7_5uL
Finding possible matched peptides for 04-29-13_B6_Frac7_5uL
Checking errors
Finished 04-29-13_B6_Frac7_5uL
Assigning MS1 peaks to bins
Quantifying peptides for 04-29-13_B6_Frac1_9uL
Finding possible matched peptides for 04-29-13_B6_Frac1_9uL
Checking errors
Finished 04-29-13_B6_Frac1_9uL
Assigning MS1 peaks to bins
Quantifying peptides for 04-29-13_B6_Frac3_9p5uL
Finding possible matched peptides for 04-29-13_B6_Frac3_9p5uL
Checking errors
Finished 04-29-13_B6_Frac3_9p5uL
Assigning MS1 peaks to bins
Quantifying peptides for 04-29-13_B6_Frac4_8uL
Finding possible matched peptides for 04-29-13_B6_Frac4_8uL
Checking errors
Finished 04-29-13_B6_Frac4_8uL
Assigning MS1 peaks to bins
Quantifying peptides for 04-29-13_B6_Frac8_9p5uL
Finding possible matched peptides for 04-29-13_B6_Frac8_9p5uL
Checking errors
Finished 04-29-13_B6_Frac8_9p5uL
Assigning MS1 peaks to bins
Quantifying peptides for 04-29-13_B6_Frac6_5uL
Finding possible matched peptides for 04-29-13_B6_Frac6_5uL
Checking errors
Finished 04-29-13_B6_Frac6_5uL
Assigning MS1 peaks to bins
Quantifying peptides for 04-29-13_B6_Frac2_9p5uL
Finding possible matched peptides for 04-29-13_B6_Frac2_9p5uL
Checking errors
Finished 04-29-13_B6_Frac2_9p5uL
Assigning MS1 peaks to bins
Quantifying peptides for 04-29-13_B6_Frac9_9p5uL
Finding possible matched peptides for 04-29-13_B6_Frac9_9p5uL
Checking errors
Finished 04-29-13_B6_Frac9_9p5uL
Assigning MS1 peaks to bins
Quantifying peptides for 04-29-13_B6_Frac5_4uL
Finding possible matched peptides for 04-29-13_B6_Frac5_4uL
Checking errors
Finished 04-29-13_B6_Frac5_4uL
Running retention time calibration

Unhandled Exception:
System.InvalidOperationException: Sequence contains no elements
at System.Linq.Enumerable.Average (System.Collections.Generic.IEnumerable1[T] source) [0x0006a] in <5f01f5aacbb346938d6f9b4e69d4383a>:0 at FlashLFQ.FlashLFQEngine.RetentionTimeCalibrationAndErrorCheckMatchedFeatures () [0x00436] in <e213ab8aae014a9999378ef2acd8f5fc>:0 at FlashLFQ.FlashLFQEngine.Run () [0x002cb] in <e213ab8aae014a9999378ef2acd8f5fc>:0 at FlashLFQExecutable.FlashLFQExecutable.Main (System.String[] args) [0x00547] in <5426307fba1e49e7a0c9affc907f11d0>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidOperationException: Sequence contains no elements at System.Linq.Enumerable.Average (System.Collections.Generic.IEnumerable1[T] source) [0x0006a] in <5f01f5aacbb346938d6f9b4e69d4383a>:0
at FlashLFQ.FlashLFQEngine.RetentionTimeCalibrationAndErrorCheckMatchedFeatures () [0x00436] in :0
at FlashLFQ.FlashLFQEngine.Run () [0x002cb] in :0
at FlashLFQExecutable.FlashLFQExecutable.Main (System.String[] args) [0x00547] in <5426307fba1e49e7a0c9affc907f11d0>:0
([email protected]) galaxy@galaxy [~/tmp/test] %

Commandline version dependent on Microsoft.WindowsDesktop.App Framework

Hi there,

I'm trying to update FlashLFQ in bioconda to use dotnet, and it looks like it's dependent on the Microsoft.WindowsDesktop.App Framework that's only available for Windows.

bioconda/bioconda-recipes#28166

https://app.circleci.com/pipelines/github/bioconda/bioconda-recipes/45191/workflows/21a44685-ce3d-43ec-8bf3-fa02914ec5a6/jobs/151515

Digging into FlashLFQ, it looks like this is even the case for Utils class library, in addition to CMD, and I can't for the life of me figure out where it's dependent on the WindowsDesktop (WPF/Win Forms) namespace. Do you have any clue where to look?

AC

linux absolute paths don't work

FlashLFQ on Linux doesn't seem to like absolute filepaths:

Invalid arguments - type "--help" for valid arguments

I suspect this is related to fclp/fluent-command-line-parser#42. Using the modification suggested at the end of that issue may solve this once FCLP 1.5 is available. In the meantime, it may be worth mentioning in the README. Relative paths work just fine on Linux.

quantification of glycopeptides with multiple peaks

Hi Guys,

I'm doing quite a bit of glycopeptidomics and we've noticed that there are multiple peaks per ID, most probably due to structural differences in the glycans. can you detect and quantify them separately?

Cheers,
D.

Crash with header / PSM identification issues

Hi Guys,

got the following error:
Data files were processed on a VMware, Inc. VMware Virtual Platform computer using Windows version 6.1.7601.65536 with a 64-Bit processor and 26 cores operating at 2.2GHz and 128GB installed RAM.
.NET Framework Version: 4.7 or laterThermo MSFileReader Fileio DLL Version: 3.0
Thermo MSFileReader Fregistry DLL Version: 3.0
Thermo MSFileReader Rawfile Com Interface Version: 3.0.31.0

e: System.Exception: Could not interpret PSM header labels from file: D:\fass\Qsox1 ox. FlashLFQ data.txt
at CMD.PsmReader.ReadPsms(String filepath, Boolean silent, List1 rawfiles) at GUI.MainWindow.RunFlashLfq() in C:\Users\rmillikin\Source\Repos\FlashLFQ_Master\GUI\MainWindow.xaml.cs:line 305e.Message: Could not interpret PSM header labels from file: D:\fass\Qsox1 ox. FlashLFQ data.txte.InnerException: e.Source: CMDe.StackTrace: at CMD.PsmReader.ReadPsms(String filepath, Boolean silent, List1 rawfiles)
at GUI.MainWindow.RunFlashLfq() in C:\Users\rmillikin\Source\Repos\FlashLFQ_Master\GUI\MainWindow.xaml.cs:line 305e.TargetSite: System.Collections.Generic.List1[FlashLFQ.Identification] ReadPsms(System.String, Boolean, System.Collections.Generic.List1[FlashLFQ.SpectraFileInfo])

attached is the ID file
Qsox1 ox. FlashLFQ data.txt

thanks!
D.

Support for more conditions

Hi,
I have an experimental design with 5 conditions + control. The bayesian quantification file only lists 3 of my conditions. Is there no support for more conditions? What can I do?

ArgumentOutOfRangeException

Hello,

My name is Kai and I used FlashLFQ for several weeks. Recently I encountered a problem when using the latest version of FlashLFQ (0.1.101).

FlashLFQExecutable.exe --idt "D:\Data\test.tsv" --rep "D:\Data\raw" --mbr true
Opening PSM file D:\Data\test.tsv
Done reading PSMs
Setup is OK - running FlashLFQ engine
Assigning MS1 peaks to bins
Quantifying peptides for Run1_C1_2000ng

Unhandled Exception: System.AggregateException: One or more errors occurred. ---> System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
at FlashLFQ.FlashLFQEngine.FilterPeaksByIsotopicDistribution(IEnumerable1 peaks, Identification identification, Int32 chargeState, Boolean lookForBadIsotope, Dictionary2 allMs1Scans)
at FlashLFQ.FlashLFQEngine.<>c__DisplayClass31_0.b__4(Tuple2 range, ParallelLoopState loopState) at System.Threading.Tasks.Parallel.<>c__DisplayClass42_02.b__1()
at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
at System.Threading.Tasks.Task.<>c__DisplayClass176_0.b__0(Object )
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](Partitioner1 source, ParallelOptions parallelOptions, Action1 simpleBody, Action2 bodyWithState, Action3 bodyWithStateAndIndex, Func4 bodyWithStateAndLocal, Func5 bodyWithEverything, Func1 localInit, Action1 localFinally)
at System.Threading.Tasks.Parallel.ForEach[TSource](Partitioner1 source, ParallelOptions parallelOptions, Action2 body)
at FlashLFQ.FlashLFQEngine.QuantifyMS2IdentifiedPeptides(RawFileInfo fileInfo, Dictionary2 mzBins, Dictionary2 allMs1Scans)
at FlashLFQ.FlashLFQEngine.Run()
at FlashLFQExecutable.FlashLFQExecutable.Main(String[] args) in C:\Users\rmillikin\Source\Repos\FlashLFQ_Master\FlashLFQ Executable\FlashLFQExecutable.cs:line 98

I generated the tsv file by myself so I supposed that there were some problems within it. Does anyone know the reason of this exception?

Thank you for your time.

Kai

mass calibrated mzML or Thermo raw files

This is not an issue but I am curious which files are selected by default within a folder which has raw files and mass recalibrated mzML files via msconvert mzRefiner? Should FlashLFQ have an option to specify the file extension? I am running FlashLFQ on windows for now.

format input to allow pfind results

File_Name Scan_No Exp.MH+ Charge Q-value Sequence Calc.MH+ Mass_Shift(Exp.-Calc.) Raw_Score Final_Score Modification Specificity Proteins Positions Label Target/Decoy Miss.Clv.Sites Avg.Frag.Mass.Shift Others
QEPlus2_05042018_12_YY2.45169.45169.4.0.dta 45169 3121.401119 4 0 VLDPEDYGPNGLDIEWMQVNSDPAHHR 3121.395466 0.005653 34.984453 1.18871e-009 10,Deamidated[N];17,Oxidation[M]; 1 sp|P0DPA2|VSIG8_HUMAN/ 46,Y,E/ 1|0|0| target 0 1.569639 22027004 0 0 0 33554422 0 0 0 36
QEPlus2_05042018_12_YY2.44527.44527.4.0.dta 44527 3120.412257 4 0 VLDPEDYGPNGLDIEWMQVNSDPAHHR 3120.411450 0.000807 32.991729 1.4656e-009 17,Oxidation[M]; 1 sp|P0DPA2|VSIG8_HUMAN/ 46,Y,E/ 1|0| target 0 0.474375 7908 0 0 0 33554428 0 0 0 36
QEPlus2_05042018_6_X1.13283.13283.2.0.dta 13283 2383.953905 2 0 GGGGGGYGSGGSSYGSGGGSYGSGGGGGGGR 2383.951741 0.002164 35.872558 2.31698e-009 3 sp|P04264|K2C1_HUMAN/ 518,R,G/ 1| target 0 0.401425 33554424 0 0 0 1073741823 0 0 0 0
QEPlus2_05042018_12_YY2.44927.44927.4.0.dta 44927 3121.407331 4 0 VLDPEDYGPNGLDIEWMQVNSDPAHHR 3121.395466 0.011865 34.343263 2.33793e-009 10,Deamidated[N];17,Oxidation[M]; 1 sp|P0DPA2|VSIG8_HUMAN/ 46,Y,E/ 1|0|0| target 0 1.420738 4284148 0 0 0 33554422 0 0 0 100
QEPlus2_05042018_12_YY2.49313.49313.3.0.dta 49313 2635.375994 3 0 LISPESTVMLLEAQAATGGIIDPHR 2635.375852 0.000142 32.448126 2.64366e-009 9,Oxidation[M]; 3 sp|P15924|DESP_HUMAN/ 2038,K,N/ 1|0| target 0 0.110548 32694 0 0 0 8388574 0 0 0 36
QEPlus2_05042018_12_YY2.45087.45087.4.0.dta 45087 3121.402781 4 0 VLDPEDYGPNGLDIEWMQVNSDPAHHR 3121.395466 0.007315 33.260955 3.79759e-009 10,Deamidated[N];17,Oxidation[M]; 1 sp|P0DPA2|VSIG8_HUMAN/ 46,Y,E/ 1|0|0| target 0 1.671968 5250804 0 0 0 33554422 0 0 0 36
QEPlus2_05042018_12_YY2.45008.45008.4.0.dta 45008 3121.401347 4 0 VLDPEDYGPNGLDIEWMQVNSDPAHHR 3121.395466 0.005881 33.065695 3.97715e-009 10,Deamidated[N];17,Oxidation[M]; 1 sp|P0DPA2|VSIG8_HUMAN/ 46,Y,E/ 1|0|0| target 0 1.299155 1055996 0 0 0 33554420 0 0 0 36
QEPlus2_05042018_12_YY2.45631.45631.2.0.dta 45631 2228.118254 2 0 AKLEAAVAEAEQQGEAALSDAR 2228.115223 0.003031 30.403223 4.89721e-009 3 sp|P78386|KRT85_HUMAN/tr|F5GYI5|F5GYI5_HUMAN/ 360,R,C/148,R,C/ 1| target 1 1.467041 786430 0 0 0 2097151 0 0 0 0
QEPlus2_05042018_12_YY2.45556.45556.2.0.dta 45556 2228.119265 2 0 AKLEAAVAEAEQQGEAALSDAR 2228.115223 0.004042 30.423535 5.15757e-009 3 sp|P78386|KRT85_HUMAN/tr|F5GYI5|F5GYI5_HUMAN/ 360,R,C/148,R,C/ 1| target 1 2.164531 1835006 0 0 0 2097151 0 0 0 0
QEPlus2_05042018_12_YY2.39788.39788.2.0.dta 39788 2726.326707 2 0 QITSGPSAIGGSITVVAPDSCAPCQPR 2726.323501 0.003206 27.620032 1.10592e-008 21,Carbamidomethyl[C];24,Carbamidomethyl[C]; 3 sp|P78386|KRT85_HUMAN/tr|F5GYI5|F5GYI5_HUMAN/ 465,R,S/253,R,S/ 1|0|0| target 0 0.348042 19004894 0 0 0 33554430 0 0 0 36
QEPlus2_05042018_12_YY2.44603.44603.4.1.dta 44603 3120.412690 4 0 VLDPEDYGPNGLDIEWMQVNSDPAHHR 3120.411450 0.001240 30.134968 1.12488e-008 17,Oxidation[M]; 1 sp|P0DPA2|VSIG8_HUMAN/ 46,Y,E/ 1|0| target 0 0.275210 530148 0 0 0 33554420 0 0 0 36
QEPlus2_05042018_12_YY2.44842.44842.4.1.dta 44842 3120.417818 4 0 VLDPEDYGPNGLDIEWMQVNSDPAHHR 3120.411450 0.006368 30.973896 1.18232e-008 17,Oxidation[M]; 1 sp|P0DPA2|VSIG8_HUMAN/ 46,Y,E/ 1|0| target 0 0.614369 1578980 0 0 0 33554373 0 0 0 36
QEPlus2_05042018_10_YY3.44367.44367.4.1.dta 44367 3121.407147 4 0 VLDPEDYGPNGLDIEWMQVNSDPAHHR 3121.395466 0.011681 36.644597 1.24892e-008 10,Deamidated[N];17,Oxidation[M]; 1 sp|P0DPA2|VSIG8_HUMAN/ 46,Y,E/ 1|0|0| target 0 1.631976 5261564 0 0 0 33554422 0 0 0 100
QEPlus2_05042018_12_YY2.39861.39861.2.0.dta 39861 2726.328600 2 0 QITSGPSAIGGSITVVAPDSCAPCQPR 2726.323501 0.005099 27.598331 1.29406e-008 21,Carbamidomethyl[C];24,Carbamidomethyl[C]; 3 sp|P78386|KRT85_HUMAN/tr|F5GYI5|F5GYI5_HUMAN/ 465,R,S/253,R,S/ 1|0|0| target 0 1.953556 19267070 0 0 0 33554430 0 0 0 36
QEPlus2_05042018_12_YY2.39708.39708.2.0.dta 39708 2726.326054 2 0 QITSGPSAIGGSITVVAPDSCAPCQPR 2726.323501 0.002553 26.999267 1.57851e-008 21,Carbamidomethyl[C];24,Carbamidomethyl[C]; 3 sp|P78386|KRT85_HUMAN/tr|F5GYI5|F5GYI5_HUMAN/ 465,R,S/253,R,S/ 1|0|0| target 0 0.214438 19004926 0 0 0 33554430 0 0 0 36
QEPlus2_05042018_12_YY2.30113.30113.3.0.dta 30113 3344.429584 3 0 GEPTSCQPVHCETGNLETSCGSSTAYYVPR 3344.425124 0.004460 30.752626 1.58404e-008 6,Carbamidomethyl[C];11,Carbamidomethyl[C];20,Carbamidomethyl[C]; 1 sp|Q6PEX3|KR261_HUMAN/ 60,C,P/ 1|0|0|0| target 0 0.363459 152043132 0 0 0 268431834 0 0 0 36
QEPlus2_05042018_10_YY3.44900.44900.4.0.dta 44900 3121.396576 4 0 VLDPEDYGPNGLDIEWMQVNSDPAHHR 3121.395466 0.001110 35.305410 1.73756e-008 10,Deamidated[N];17,Oxidation[M]; 1 sp|P0DPA2|VSIG8_HUMAN/ 46,Y,E/ 1|0|0| target 0 1.826215 1122036 0 0 0 33554420 0 0 0 36
QEPlus2_05042018_12_YY2.44742.44742.4.2.dta 44742 3120.416308 4 0 VLDPEDYGPNGLDIEWMQVNSDPAHHR 3120.411450 0.004858 29.993634 1.77656e-008 17,Oxidation[M]; 1 sp|P0DPA2|VSIG8_HUMAN/ 46,Y,E/ 1|0| target 0 -0.369678 7652 0 0 0 33554400 0 0 0 36
QEPlus2_05042018_12_YY2.39938.39938.2.0.dta 39938 2726.330625 2 0 QITSGPSAIGGSITVVAPDSCAPCQPR 2726.323501 0.007124 27.035905 1.97542e-008 21,Carbamidomethyl[C];24,Carbamidomethyl[C]; 3 sp|P78386|KRT85_HUMAN/tr|F5GYI5|F5GYI5_HUMAN/ 465,R,S/253,R,S/ 1|0|0| target 0 0.508439 2227678 0 0 0 33554430 0 0 0 36

An assembly specified in the application dependencies manifest (CMD.deps.json) was not found

Running this command:

/home/ijmiller2/.dotnet/dotnet CMD.dll

I'm getting this error:

Error:
  An assembly specified in the application dependencies manifest (CMD.deps.json) was not found:
    package: 'FluentCommandLineParser', version: '1.5.0.20-commands'
    path: 'lib/net35/FluentCommandLineParser.dll'

In case it's relevant, this is with the latest release and here's what: /home/ijmiller2/.dotnet/dotnet --info produces:

 Version:   2.1.802
 Commit:    177d0b2525

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  18.04
 OS Platform: Linux
 RID:         ubuntu.18.04-x64
 Base Path:   /home/ijmiller2/.dotnet/sdk/2.1.802/

Host (useful for support):
  Version: 2.1.13
  Commit:  1a165a1588

.NET Core SDKs installed:
  2.1.802 [/home/ijmiller2/.dotnet/sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.13 [/home/ijmiller2/.dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.13 [/home/ijmiller2/.dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.1.13 [/home/ijmiller2/.dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download```

peptide quantification and rop-down quantification

Hi,

Can the software do integration of the quantification data on the peptide level?
can I use it for middle and top down quantification? can it use isotopic envelopes of protein - either resolved and non-resolved?

Crash after/during Bayesian protein quant

Hi,

I'm trying to analyze a fairly large dataset with FlashLFQ but after quantification for all the file is done (including MBR and normalization), it prints the line
"How did we get an object larger than the card table?"
And then it crashes.
I am using version 1.1.1 and am running on a linux (CentOS) system, so I'm using Mono, which isn't always perfectly stable, and the error prints aren't very clear to me.
Have you seen this before or any idea what the cause could be?
I can also send the full printouts or more about the files, if needed.

[...]
Finished MBR for File100
Normalizing fractions
Normalizing bioreps and conditions
Normalizing techreps
Running Bayesian protein quantification analysis
How did we get an object larger than the card table?

Native Crash Reporting

Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.

Native stacktrace:

0x4c15f3 - mono : (null)
0x4c18fc - mono : (null)
0x46d751 - mono : (null)
0x4c0bf8 - mono : (null)
0x2aaaab3005f0 - /lib64/libpthread.so.0 : (null)
0x2aaaabd63337 - /lib64/libc.so.6 : gsignal
0x2aaaabd64a28 - /lib64/libc.so.6 : abort
0x735794 - mono : (null)
0x71b1d1 - mono : (null)
0x73567b - mono : (null)
0x735aa3 - mono : monoeg_g_logv
0x735b5f - mono : monoeg_g_log
0x6d3e60 - mono : (null)
0x6d3f25 - mono : (null)
0x5d67b6 - mono : (null)
0x5e7b0b - mono : (null)
0x400269cf - Unknown

Telemetry Dumper:

  • Assertion: should not be reached at threads.c:6254
    Pkilling 0x2aaab4f67700 from 0x2aaaaaaef080
    Entering thread summarizer pause from 0x2aaaaaaef080
    Finished thread summarizer pause from 0x2aaaaaaef080.

Waiting for dumping threads to resume

Basic Fault Address Reporting

Memory around native instruction pointer (0x2aaaabd63337):0x2aaaabd63327 48 63 d7 48 63 f6 48 63 f9 b8 ea 00 00 00 0f 05 Hc.Hc.Hc........
0x2aaaabd63337 48 3d 00 f0 ff ff 77 1e f3 c3 0f 1f 80 00 00 00 H=....w.........
0x2aaaabd63347 00 85 c9 7f db 89 c8 f7 d8 81 e1 ff ff ff 7f 0f ................
0x2aaaabd63357 44 c6 89 c1 eb ca 48 8b 15 ec 0a 39 00 f7 d8 64 D.....H....9...d

Managed Stacktrace:

at <0xffffffff>
at System.Array:FastCopy <0x0009e>
at System.Array:Copy <0x000b5>
at System.Collections.Generic.Dictionary2:Resize <0x000aa> at System.Collections.Generic.Dictionary2:Resize <0x0004a>
at System.Collections.Generic.Dictionary2:TryInsert <0x007ba> at System.Collections.Generic.Dictionary2:Add <0x00062>
at FlashLFQ.ProteinQuantificationEngine:Setup <0x0149a>
at FlashLFQ.ProteinQuantificationEngine:Run <0x00027>
at FlashLFQ.FlashLfqEngine:Run <0x0075b>
at CMD.FlashLfqExecutable:Run <0x013d3>
at <>c:

b__1_1 <0x00027>
at CommandLine.ParserResultExtensions:WithParsed <0x0006a>
at CMD.FlashLfqExecutable:Main <0x0022b>
at :runtime_invoke_void_object <0x00085>

Thanks for any help,
Stefan

PS: It didn't seem related to #87 so I open a new issue, but of course feel free to merge if it actually is related.

multiple ID files

Hi,

I noted that you write I can use multiple Raw files, but not multiple tsv files? is there an ability to run LFQ for multiple files? if yes, does the program does normalization between files?

Thanks!
David.

Caution messafe in running

Hi,

I've recieved the following message - "Caution! PSM with sequence ******** could not be read; a peptide with the same modified sequence but with different monoisotopic mass has already been added

I'm guessing itis the consolidation of PSMs to a single peptide?

Thanks!
David.

Duplicated column names in BayesianFoldChangeAnalysis.tsv

Hi all,

I used MetaMorpheus to analyse some data and after putting the results into FlashLFQ, I end up with a bayesianFoldChangeAnalysis File with duplicated columns names:

My metamorpheus tomls are these ones here: smith-chem-wisc/MetaMorpheus#2082

['Protein Group',
 'Gene',
 'Organism',
 'Control Condition',
 'Treatment Condition',
 'Null Hypothesis Width',
 'Protein Log2 Fold-Change',
 'Uncertainty in Protein Log2 Fold-Change',
 'Standard Deviation of Peptide Log2 Fold-Changes',
 'Protein Intensity in Control Condition',
 'Protein Intensity in Treatment Condition',
 'Number of Peptides',
 'Number of Control Condition Measurements',
 'Number of Treatment Condition Measurements',
 'Control Measurements',
 'Treatment Measurements',
 'Bayes Factor',
 'Posterior Error Probability',
 'False Discovery Rate',
 'Unnamed: 19',
 'Protein Group.1',
 'Gene.1',
 'Organism.1',
 'Control Condition.1',
 'Treatment Condition.1',
 'Null Hypothesis Width.1',
 'Protein Log2 Fold-Change.1',
 'Uncertainty in Protein Log2 Fold-Change.1',
 'Standard Deviation of Peptide Log2 Fold-Changes.1',
 'Protein Intensity in Control Condition.1',
 'Protein Intensity in Treatment Condition.1',
 'Number of Peptides.1',
 'Number of Control Condition Measurements.1',
 'Number of Treatment Condition Measurements.1',
 'Control Measurements.1',
 'Treatment Measurements.1',
 'Bayes Factor.1',
 'Posterior Error Probability.1',
 'False Discovery Rate.1',
 'Unnamed: 39',
 'Unnamed: 40']

I run FlashLFQ with all standard parameter except specifying --bay and --ctr
And then read the data as following:

bay = pd.read_csv(results_dir / "BayesianFoldChangeAnalysis.tsv", sep="\t")

After checking 'Protein Log2 Fold-Change' and 'Protein Log2 Fold-Change.1' I realized the values are not the same, which is bothering me since I don't know if I can continue and if yes, which columns is the right one.

Best,
Manuel

Fail in the command-line mode

Hello,

When I was using the label-free quantification by the CMD.exe, I found a little problem. If the spectra file repository contains more raw files than that are in the "ExperimentalDesign.tsv" file, which means I only using part of the raw files in this folder for the quantification, an Exception will be throw.

Unhandled exception. System.Collections.Generic.KeyNotFoundException: The given key 'fileName' was not present in the dictionary.
at System.Collections.Generic.Dictionary2.get_Item(TKey key) at CMD.FlashLfqExecutable.Run(FlashLfqSettings settings) in C:\projects\flashlfq\CMD\FlashLFQExecutable.cs:line 267 at CMD.FlashLfqExecutable.<>c.<Main>b__1_1(FlashLfqSettings options) in C:\projects\flashlfq\CMD\FlashLFQExecutable.cs:line 23 at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult1 result, Action`1 action)
at CMD.FlashLfqExecutable.Main(String[] args) in C:\projects\flashlfq\CMD\FlashLFQExecutable.cs:line 22

I'm not sure if the reason for the problem is the raw files in the folder and in the "ExperimentalDesign.tsv" file are not exactly matched.

Thank you.

settings, toml, prose

I just ran FlashLFQ v. 112 and it ran just fine. However, i did notice that there was no settings, or toml or prose in the output. It would be good to store all that stuff with the output so we know what we did later. Even better if there was prose that could be copy/pasted into a manuscript (including references to flashlfq).

Undetermined issue with peak detection?

Hi guys,

So I've ran the software against some data I've got from Byonic. despite seeing good peaks in the raw files, I get "Identified and not quantified" or "Not detected" in the output.
The only thing I'm not sure about is the monoisotopic mass - is it the deconvoluted one? if not should I add to the ID table the same sequence with other isotopes?
please let me know if you'd like any files.

Thanks!
D.

numpress?

Hello all. I was getting the rather vague error

Problem opening mzml file spectra/Ctrl1_5min_total.mzML; One or more errors occurred.

When I re-converted my files using different settings, I was able to get things to work.

Am I right in thinking that mzLib (and thus FlashLFQ) does not support Numpress compression in mzML?

FlashLFQ: psm missing information?

Hi,

Using some example data and "playing" with FlashLFQ Galaxy wrapper, we were reviewing results given by FlashLFQ comparing them with moFF's ones, but we have found that FlashLFQ does not include into its "QuantifiedPeaks" file anything similar to moFF's "Spectrum Title", which is key for us in order to map the table row to the specific PSM (ie: in moFF you can find data like "controllerType=0 controllerNumber=1 scan=9870"). FlashLFQ just gives a "PSMs Mapped" which is just a count of the number of PSMs mapped.
Would it be possible to add that information to FlashLFQ?

Greetings,
Carlos from Barsnes Group at the UiB

cv terms

[Term]
id: MS:1001583
name: MaxQuant
def: "MaxQuant is a quantitative proteomics software package designed for analyzing large mass spectrometric data sets. It is specifically aimed at high resolution MS data." [PSI:MS]
is_a: MS:1001139 ! quantitation software name
is_a: MS:1001456 ! analysis software

[Term]
id: MS:1001897
name: MaxQuant:peptide counts (unique)
def: "The data type peptide counts (unique) produced by MaxQuant." [PSI:MS]
xref: value-type:xsd:int "The allowed value-type for this CV term."
is_a: MS:1002737 ! peptide-level quantification datatype

[Term]
id: MS:1001898
name: MaxQuant:peptide counts (all)
def: "The data type peptide counts (all) produced by MaxQuant." [PSI:MS]
xref: value-type:xsd:int "The allowed value-type for this CV term."
is_a: MS:1002737 ! peptide-level quantification datatype

[Term]
id: MS:1001899
name: MaxQuant:peptide counts (razor+unique)
def: "The data type peptide counts (razor+unique) produced by MaxQuant." [PSI:MS]
xref: value-type:xsd:int "The allowed value-type for this CV term."
is_a: MS:1002737 ! peptide-level quantification datatype

[Term]
id: MS:1001900
name: MaxQuant:sequence length
def: "The data type sequence length produced by MaxQuant." [PSI:MS]
xref: value-type:xsd:int "The allowed value-type for this CV term."
is_a: MS:1002737 ! peptide-level quantification datatype

[Term]
id: MS:1001901
name: MaxQuant:PEP
def: "The data type PEP (posterior error probability) produced by MaxQuant." [PSI:MS]
xref: value-type:xsd:double "The allowed value-type for this CV term."
is_a: MS:1001805 ! quantification datatype

[Term]
id: MS:1001902
name: MaxQuant:LFQ intensity
def: "The data type LFQ intensity produced by MaxQuant." [PSI:MS]
xref: value-type:xsd:double "The allowed value-type for this CV term."
is_a: MS:1001805 ! quantification datatype

[Term]
id: MS:1001903
name: MaxQuant:feature intensity
def: "The data type feature intensity produced by MaxQuant." [PSI:MS]
xref: value-type:xsd:double "The allowed value-type for this CV term."
is_a: MS:1002735 ! feature-level quantification datatype

[Term]
id: MS:1001904
name: MaxQuant:MS/MS count
def: "The data type MS2 count produced by MaxQuant." [PSI:MS]
xref: value-type:xsd:int "The allowed value-type for this CV term."
is_a: MS:1001805 ! quantification datatype

Error in running FlashLFQ on a server

Hello,

I encountered an exception when I was running FlashLFQ in a server with a Windows Server 2008 system. Below are the details:

Unhandled Exception: System.AggregateException: One or more errors occurred. ---

System.IO.FileNotFoundException: Could not load file or assembly 'System.Value
Tuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one
of its dependencies. The system cannot find the file specified.
at FlashLFQ.FlashLFQEngine.FilterPeaksByIsotopicDistribution(IEnumerable1 pe aks, Identification identification, Int32 chargeState, Boolean lookForBadIsotope , Dictionary2 allMs1Scans)
at FlashLFQ.FlashLFQEngine.<>c__DisplayClass31_0.b__4(Tuple2 range, ParallelLoopState loopState) at System.Threading.Tasks.Parallel.<>c__DisplayClass42_02.b__1()
at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
at System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating
b__0(Object )
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceled
Exceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationTo
ken cancellationToken)
at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](P
artitioner1 source, ParallelOptions parallelOptions, Action1 simpleBody, Actio
n2 bodyWithState, Action3 bodyWithStateAndIndex, Func4 bodyWithStateAndLocal, Func5 bodyWithEverything, Func1 localInit, Action1 localFinally)
at System.Threading.Tasks.Parallel.ForEach[TSource](Partitioner1 source, Par allelOptions parallelOptions, Action2 body)
at FlashLFQ.FlashLFQEngine.QuantifyMS2IdentifiedPeptides(RawFileInfo fileInfo
, Dictionary2 mzBins, Dictionary2 allMs1Scans)
at FlashLFQ.FlashLFQEngine.Run()
at FlashLFQExecutable.FlashLFQExecutable.Main(String[] args) in C:\Users\rmil
likin\Source\Repos\FlashLFQ_Master\FlashLFQ Executable\FlashLFQExecutable.cs:lin
e 98

The system and software information are below:

error_flashlfq_2
error_flashlfq_1

FlashLFQ runs well on my computer (windows 10 system), but when I'm quantifying 24 raw files and set the --mbr as true, it was totally stuck after about 14-15 files were finished. I'm also wondering if I'd like to quantifying about 20-30 raw files simultaneously, what's the recommended hardware environment?

Thank you for your time.

Unkown psm file error

Hi,

I'm trying to use the attached file - getting an error for unknown format. I've manipulated an excel file output from Byonic for it. What's wrong with it? can you provide me with an example file for future reference?
SpikeIn_Quant_Ecoli.txt

Thanks!
David.

add reset button

after analysis finishes, i'd like to be able to hit reset and do another run with different parameters rather than close up and hunt down all the old files.

Questions about the generic input format

Hi folks,

I'm trying to add support for generating a FlashLFQ input from mokapot and I had a couple questions about the generic input format:

  1. Should path be included or specifically excluded from the File Name column?
  2. How should multiple proteins be delimited in the Protein Accession format? The example file uses |, but I was wondering if other delimiters could be used. Specifically, I want to be able to handle cases where folks provide the full UniProt ID from a FASTA file (<database>|<accession>|<identifier>) in their protein lists.

Thank you creating and maintaining a great open-source proteomics tool with awesome documentation!

How important is the base sequence format?

Hi guys,

I'm using Byonic results, and the peptide format is K.LVNEVTEFAK[+162.053]TC[+57.021]VADESAENC[+57.021]DK.S

removal of the flanking AA with the "." isn't very easy... is there any requirement to remove this?

Thanks!
David.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.