@@ -1494,21 +1494,30 @@ private SpectrumType ConstructMSSpectrum(int scanNumber)
14941494 basePeakMass = scan . ScanStatistics . BasePeakMass ;
14951495 basePeakIntensity = scan . ScanStatistics . BasePeakIntensity ;
14961496
1497- // If the spectrum is profile perform centroiding
1498- var segmentedScan = scanEvent . ScanData == ScanDataType . Profile
1499- ? Scan . ToCentroid ( scan ) . SegmentedScan
1500- : scan . SegmentedScan ;
1501-
1502- masses = segmentedScan . Positions ;
1503- raw_masses = ( double [ ] ) masses . Clone ( ) ;
1504- intensities = segmentedScan . Intensities ;
1505-
1506- if ( segmentedScan . PositionCount > 0 )
1497+ if ( scan . SegmentedScan . PositionCount > 0 )
1498+ {
1499+ // If the spectrum is profile perform centroiding
1500+ var segmentedScan = scanEvent . ScanData == ScanDataType . Profile
1501+ ? Scan . ToCentroid ( scan ) . SegmentedScan
1502+ : scan . SegmentedScan ;
1503+
1504+ masses = segmentedScan . Positions ;
1505+ raw_masses = ( double [ ] ) masses . Clone ( ) ;
1506+ intensities = segmentedScan . Intensities ;
1507+
1508+ if ( segmentedScan . PositionCount > 0 )
1509+ {
1510+ //Sort masses
1511+ Array . Sort ( masses ) ;
1512+ lowestObservedMz = segmentedScan . Positions [ 0 ] ;
1513+ highestObservedMz = segmentedScan . Positions [ segmentedScan . PositionCount - 1 ] ;
1514+ }
1515+ }
1516+ else
15071517 {
1508- //Sort masses
1509- Array . Sort ( masses ) ;
1510- lowestObservedMz = segmentedScan . Positions [ 0 ] ;
1511- highestObservedMz = segmentedScan . Positions [ segmentedScan . PositionCount - 1 ] ;
1518+ masses = Array . Empty < double > ( ) ;
1519+ intensities = Array . Empty < double > ( ) ;
1520+ raw_masses = Array . Empty < double > ( ) ;
15121521 }
15131522 }
15141523 }
@@ -1538,6 +1547,7 @@ private SpectrumType ConstructMSSpectrum(int scanNumber)
15381547
15391548 basePeakMass = scan . ScanStatistics . BasePeakMass ;
15401549 basePeakIntensity = scan . ScanStatistics . BasePeakIntensity ;
1550+
15411551 masses = scan . SegmentedScan . Positions ;
15421552 raw_masses = ( double [ ] ) masses . Clone ( ) ;
15431553 intensities = scan . SegmentedScan . Intensities ;
@@ -1623,6 +1633,12 @@ private SpectrumType ConstructMSSpectrum(int scanNumber)
16231633 // Set the spectrum default array length
16241634 spectrum . defaultArrayLength = masses . Length ;
16251635
1636+ if ( masses . Length == 0 )
1637+ {
1638+ Log . WarnFormat ( "Spectrum {0} has no m/z data" , scanNumber ) ;
1639+ ParseInput . NewWarn ( ) ;
1640+ }
1641+
16261642 var massesBinaryData =
16271643 new BinaryDataArrayType
16281644 {
0 commit comments