Cannot Roundtrip Small Molecule Transition List damien ready  2020-09-17 14:57
 

Greetings,
We are looking into using Skyline for some of our small molecule processing, and I ran into a rough edge I thought could be improved around managing transition lists. If I graphically build a small molecule transition list in Skyline and export it, Skyline fails to import the list into a new document.

If you follow the below, I was able to manipulate the exported document into a format that Skyline would import, but the workflow is cumbersome for something that feels like it should be natively handled by the GUI.

If you do intend to investigate the issue, I should be clear that my actual interest is in automating the creation of Skyline documents + transition lists through the Skyline Commandline runner. This work through the GUI was just to establish POC.

Skyline Daily 20.1.9.234
To reproduce:

  • Start Skyline
  • Select Small Molecule workflow
  • Edit->Insert-Transition List
    • Molecule List Name: aspirin
    • Precursor Name: aspirin
    • Precursor Formula: C9H8O4
    • Precursor Adduct: [M+H]
    • Precursor m/z: 181.0495348
    • Precursor Charge: 1
  • Insert molecule
  • File->Export->Transition List
  • File->New
  • File->Import->Transition List
    Results in following error message:
System.IO.InvalidDataException: Failed to find peptide column., line 1. ---> System.IO.InvalidDataException: Failed to find peptide column., line 1. ---> pwiz.Skyline.Model.LineColNumberedIoException: Failed to find peptide column., line 1.
   at pwiz.Skyline.Model.MassListImporter.Import(IProgressMonitor progressMonitor, String sourceFile, ColumnIndices indices, IDictionary`2 dictNameSeq, List`1& irtPeptides, List`1& librarySpectra, List`1& errorList) in C:\proj\skyline_20_2_x64\pwiz_tools\Skyline\Model\Import.cs:line 485
   at pwiz.Skyline.Model.MassListImporter.Import(IProgressMonitor progressMonitor, String sourceFile, List`1& irtPeptides, List`1& librarySpectra, List`1& errorList) in C:\proj\skyline_20_2_x64\pwiz_tools\Skyline\Model\Import.cs:line 423
   --- End of inner exception stack trace ---
   at pwiz.Skyline.Model.MassListImporter.Import(IProgressMonitor progressMonitor, String sourceFile, List`1& irtPeptides, List`1& librarySpectra, List`1& errorList) in C:\proj\skyline_20_2_x64\pwiz_tools\Skyline\Model\Import.cs:line 427
   at pwiz.Skyline.Model.SrmDocument.ImportMassList(MassListInputs inputs, IProgressMonitor progressMonitor, IdentityPath to, IdentityPath& firstAdded, List`1& irtPeptides, List`1& librarySpectra, List`1& errorList, List`1& peptideGroups) in C:\proj\skyline_20_2_x64\pwiz_tools\Skyline\Model\SrmDocument.cs:line 1454
   at pwiz.Skyline.SkylineWindow.<>c__DisplayClass1079_0.<ImportMassList>b__2(IProgressMonitor longWaitBroker) in C:\proj\skyline_20_2_x64\pwiz_tools\Skyline\SkylineFiles.cs:line 1925
   at pwiz.Skyline.Controls.LongWaitDlg.RunWork(Action`1 performWork) in C:\proj\skyline_20_2_x64\pwiz_tools\Skyline\Controls\LongWaitDlg.cs:line 254
   --- End of inner exception stack trace ---
   at pwiz.Skyline.Util.Helpers.WrapAndThrowException(Exception x) in C:\proj\skyline_20_2_x64\pwiz_tools\Skyline\Util\Util.cs:line 1940
   at pwiz.Skyline.Controls.LongWaitDlg.PerformWork(Control parent, Int32 delayMillis, Action`1 performWork) in C:\proj\skyline_20_2_x64\pwiz_tools\Skyline\Controls\LongWaitDlg.cs:line 202
   at pwiz.Skyline.Controls.LongWaitDlg.PerformWork(Control parent, Int32 delayMillis, Action`1 performWork) in C:\proj\skyline_20_2_x64\pwiz_tools\Skyline\Controls\LongWaitDlg.cs:line 140
   at pwiz.Skyline.SkylineWindow.ImportMassList(MassListInputs inputs, String description, Boolean assayLibrary) in C:\proj\skyline_20_2_x64\pwiz_tools\Skyline\SkylineFiles.cs:line 1923
   at pwiz.Skyline.SkylineWindow.ImportMassList(String fileName) in C:\proj\skyline_20_2_x64\pwiz_tools\Skyline\SkylineFiles.cs:line 1902

Consulting the Help on the "Transition List" window, I attempted to hand-edit the exported CSV to include the columns (MoleculeGroup, PrecursorName, ProductName, PrecursorFormula, ProductFormula, PrecursorMz, ProductMz, PrecursorCharge, ProductCharge, PrecursorAdduct, ProductAdduct, PrecursorRT, PrecursorRTWindow, PrecursorCE, PrecursorDT, HighEnergyDTOffset, PrecursorIM, HighEnergyIMOffset, IMUnits, PrecursorCCS, SLens, ConeVoltage, CompensationVoltage, DeclusteringPotential, Note, LabelType, InChiKey, CAS, HMDB, InChi, SMILES, KEGG, ProductNeutralLoss), added the required data, but this too failed to import. Lastly, I added the suggested columns, filled in the extra data, and deleted the originally exported columns - this worked.

Attached:

  • small_molecule_ts_export.csv - failed to import - Skyline small molecule built and exported transition list
  • small_molecule_ts_export_extracolumns.csv - failed to import - Skyline small molecule export + manually added suggested columns
  • small_molecule_ts_export_extracolumns_only.csv - successful import - Skyline small molecule export + manually added suggested columns only

Thanks for your attention. Happy to give any more details that you require.

 
 
Brian Pratt responded:  2020-09-17 15:15

Hi Damien,

This is a bit tricky since the transition list formats that the mass specs want to see don't generally contain enough detail to round trip a small molecule. In the case of peptides, the name is the chemical description, but with generalized molecules there's no where to stash the formula information, so we leave it our when generating the transition list.

Certainly you're on the right track with adding appropriately named column headers, but it's not clear that the mass spec front end software will accept them. And, as you've seen, the mix of columns is confusing to Skyline as well.

I'm eager to see if we can work something out that allows the round trip - that is, a more detailed format that both Skyline and your mass spec can understand. This is highly dependent on your instrument, of course, and possibly it's easy to add this information if we know what your machine expects it to look like. Hopefully you can discover more about that and report back?

Thanks for using the Skyline support board,

Brian Pratt

 
damien ready responded:  2020-09-18 07:18

Brian,

I have had such tunnel vision on getting this data loaded into Skyline I was not considering the intended destination was ultimately for a MS. I understand how the wild west of vendor tooling is a difficult target for you support.

Maybe my focus has put me down the entirely wrong path? I am not interested in building a transition list for an instrument - this is already handled by other software/manually. Our present use case is streamlining the analysis experience by pre-building as much of the Skyline document as possible. The transition list mechanism seemed the most straight-forward to construct a computer-generated and human-editable package of data that would populate the Skyline target list.

While I do think the lack of round tripping is unfortunate, it seems there is a viable path forward, so long as I utilize the "secondary" header list for small molecules. Unless there is a superior alternative at hand that would work through both the GUI and the command line? Directly inserting targets into the .sky XML seems possible, but fraught with peril.

Thanks again for your thoughts.

 
Brian Pratt responded:  2020-09-18 08:54

Hi Damien,

In that case you'll want to look into Skyline's report capabilities - that should make it easy to generate a detailed CSV transition list that Skyline will happily read back in again.

Please feel free to follow up with any questions.

Brian