Mass Spectra
JuChrom.AbstractMassSpectrum
— TypeAbstractMassSpectrum
Supertype for all mass spectrum implementations. All subtypes (e.g., MassSpectrum
) include fields to store ions, their associated intensities, and optionally, retention time, retention index, and metadata.
See also MassSpectrum
.
JuChrom.MassSpectrum
— TypeMassSpectrum(ions::AbstractVector{<:Real}, intensities::AbstractVector{<:Real};
retentiontime::Union{Unitful.Time, Nothing}=nothing,
retentionindexname::Union{AbstractString, Nothing}=nothing,
retentionindex::Union{<:Real, Nothing}=nothing, metadata::Dict=Dict())
Construct a ChromMS
object that includes scantimes
, ions
, intensities
, and metadata
. Note that scantimes
and ions
must be in ascending order, and intensities
must not contain any values less than zero. The retentiontime
must include a time unit. All time units supported by the Unitful.jl package(e.g., u"s"
, u"minute"
) are accepted.
See also AbstractMassSpectrum
, ions(::AbstractMassSpectrum)
, intensities(::AbstractMassSpectrum)
, retentiontime(::AbstractMassSpectrum; ::Unitful.TimeUnits, ::Bool)
, retentionindexname(::AbstractMassSpectrum)
, retentionindex(::AbstractMassSpectrum)
, metadata(::AbstractMassSpectrum)
, sharedions
, similarity
.
Examples
julia> MassSpectrum([85.1, 112.2, 124.1], Int64[13, 0, 67])
MassSpectrum {ions: Float64, intensities: Int64}
3 ions: m/z 85.1, 112.2, 124.1
intensity range: 0 - 67
metadata: 0 entries
julia> MassSpectrum([85.1, 112.2, 124.1], Int64[13, 0, 67], retentiontime=3.2u"minute")
MassSpectrum {ions: Float64, intensities: Int64}
3 ions: m/z 85.1, 112.2, 124.1
intensity range: 0 - 67
retention time: 3.2 minute
metadata: 0 entries
julia> MassSpectrum([1.2, 2.1], [1.1, 8.1], retentionindex=131, retentionindexname="Kovats")
MassSpectrum {ions: Float64, intensities: Float64}
2 ions: m/z 1.2, 2.1
intensity range: 1.1 - 8.1
retention index: 131 (Kovats)
metadata: 0 entries
julia> MassSpectrum([85.1, 112.2, 124.1], [13.0, 0.0, 67.0], metadata=Dict(:name=>"Hexane"))
MassSpectrum {ions: Float64, intensities: Float64}
3 ions: m/z 85.1, 112.2, 124.1
intensity range: 0.0 - 67.0
metadata: 1 entry
JuChrom.cosine
— Functioncosine(x::AbstractVector{<:Real}, y::AbstractVector{<:Real})
Return the angle between two non-zero vectors, which can be considered a measure of the similarity (i.e., cosine
similarity) between the two vectors.
See also similarity
.
Examples
julia> cosine([100, 500, 250], [200, 1000, 0]) ≈ 0.8978872704229618
true
julia> cosine([100, 0, 50], [0, 20, 0]) ≈ 0.0
true
julia> cosine([10, 50, 25], [100, 500, 250]) ≈ 1.0
true
JuChrom.intensities
— Methodintensities(ms::AbstractMassSpectrum)
Return the intensities.
See also AbstractMassSpectrum
, intensity(::AbstractMassSpectrum, ::Integer)
, maxintensity(::AbstractMassSpectrum)
, minintensity(::AbstractMassSpectrum)
.
Example
julia> ms = MassSpectrum(Int64[85, 112, 124], Int64[13, 0, 67])
MassSpectrum {ions: Int64, intensities: Int64}
3 ions: m/z 85, 112, 124
intensity range: 0 - 67
metadata: 0 entries
julia> intensities(ms)
3-element Vector{Int64}:
13
0
67
JuChrom.intensity
— Methodintensity(ms::AbstractMassSpectrum, ionindex::Integer)
Return the intensity for an ion by specifying its index.
See also AbstractMassSpectrum
, intensities(::AbstractMassSpectrum)
, maxintensity(::AbstractMassSpectrum)
, minintensity(::AbstractMassSpectrum)
.
Examples
julia> ms = MassSpectrum(Int64[85, 112, 124], Int64[13, 0, 67])
MassSpectrum {ions: Int64, intensities: Int64}
3 ions: m/z 85, 112, 124
intensity range: 0 - 67
metadata: 0 entries
julia> intensity(ms, 1)
13
julia> intensity(ms, 2)
0
julia> intensity(ms, 4)
ERROR: BoundsError: attempt to access 3-element Vector{Int64} at index [4]
[...]
JuChrom.intensitydifferences
— Functionintensitydifferences(ms₁::AbstractMassSpectrum, ms₂::AbstractMassSpectrum)
Return the intensity difference for each ion in ms₁ and ms₂, with any negative results set to zero. This function assumes both mass spectra contain data for the same set of ions.
See also AbstractMassSpectrum
, ions(::AbstractMassSpectrum)
, intensities(::AbstractMassSpectrum)
, intensitysums
, meanintensities
.
Examples
julia> ms₁ = MassSpectrum([80, 85, 90], [10, 80, 5]);
julia> ms₂ = MassSpectrum([80, 85, 90], [0, 10, 0]);
julia> intensitydifferences(ms₁, ms₂)
3-element Vector{Int64}:
10
70
5
julia> intensitydifferences(ms₂, ms₁)
3-element Vector{Int64}:
0
0
0
julia> ms₃ = MassSpectrum([80, 85, 90], [5.5, 20.1, 5]);
julia> intensitydifferences(ms₁, ms₃) ≈ [4.5, 59.9, 0.0]
true
julia> intensitydifferences(MassSpectrum([80], [5]), MassSpectrum([81], [5]))
ERROR: ArgumentError: mass spectra differ in ions
[...]
JuChrom.intensitysums
— Functionintensitysums(ms₁::AbstractMassSpectrum, ms₂::AbstractMassSpectrum)
Return the intensity sums for each ion in ms₁ and ms₂. This function assumes that both mass spectra contain data for the same set of ions.
See also AbstractMassSpectrum
, ions(::AbstractMassSpectrum)
, intensities(::AbstractMassSpectrum)
, meanintensities
.
Examples
julia> ms₁ = MassSpectrum([80, 85, 90], Int64[0, 10, 0]);
julia> ms₂ = MassSpectrum([80, 85, 90], Int64[10, 80, 5]);
julia> intensitysums(ms₁, ms₂)
3-element Vector{Int64}:
10
90
5
julia> ms₃ = MassSpectrum([80, 85, 90], Float64[10, 80, 5]);
julia> intensitysums(ms₁, ms₃) ≈ [10.0, 90.0, 5.0]
true
julia> intensitysums(MassSpectrum([80], [5]), MassSpectrum([81], [5]))
ERROR: ArgumentError: mass spectra differ in ions
[...]
JuChrom.ion
— Methodion(ms::AbstractMassSpectrum, ionindex::Integer)
Return the ion at the specified ionindex
.
See also AbstractMassSpectrum
, ions(::AbstractMassSpectrum)
, maxion(::AbstractMassSpectrum)
, minion(::AbstractMassSpectrum)
, ioncount(::AbstractMassSpectrum)
, ionindex(::AbstractMassSpectrum, ::Real)
, sharedions
.
Examples
julia> ms = MassSpectrum(Int64[85, 112, 124], Int64[13, 0, 67])
MassSpectrum {ions: Int64, intensities: Int64}
3 ions: m/z 85, 112, 124
intensity range: 0 - 67
metadata: 0 entries
julia> ion(ms, 1)
85
julia> ion(ms, 2)
112
julia> ion(ms, 3)
124
julia> ion(ms, 4)
ERROR: BoundsError: attempt to access 3-element Vector{Int64} at index [4]
[...]
julia> ion.(ms, 1:2) # broadcasting across multiple ion indices
2-element Vector{Int64}:
85
112
See also AbstractMassSpectrum
, ions(::AbstractMassSpectrum)
, ionindex(::AbstractMassSpectrum, ::Real)
, minion(::AbstractMassSpectrum)
, maxion(::AbstractMassSpectrum)
, ioncount(::AbstractMassSpectrum)
.
JuChrom.ionindex
— Methodionindex(ms::AbstractMassSpectrum, ion::Real) -> Int
Return the index of the ion
. If the ion
is not present in the mass spectrum, an error is raised.
See also AbstractMassSpectrum
, ion(::AbstractMassSpectrum, ::Integer)
, ions(::AbstractMassSpectrum)
, ioncount(::AbstractMassSpectrum)
, maxion(::AbstractMassSpectrum)
, minion(::AbstractMassSpectrum)
.
Example
julia> ms = MassSpectrum([85.1, 112.0, 124.2], Int64[13, 0, 67])
MassSpectrum {ions: Float64, intensities: Int64}
3 ions: m/z 85.1, 112.0, 124.2
intensity range: 0 - 67
metadata: 0 entries
julia> ionindex(ms, 124.2)
3
julia> ionindex(ms, 124)
ERROR: ArgumentError: ion 124 does not exist
[...]
See also AbstractMassSpectrum
, ions(::AbstractMassSpectrum)
, ion(::AbstractMassSpectrum, ::Integer)
, minion(::AbstractMassSpectrum)
, maxion(::AbstractMassSpectrum)
, ioncount(::AbstractMassSpectrum)
.
JuChrom.ions
— Methodions(ms::AbstractMassSpectrum)
Return the ions.
See also AbstractMassSpectrum
, ion(::AbstractMassSpectrum, ::Integer)
, maxion(::AbstractMassSpectrum)
, minion(::AbstractMassSpectrum)
, ioncount(::AbstractMassSpectrum)
, ionindex(::AbstractMassSpectrum, ::Real)
, sharedions
.
Example
julia> ms = MassSpectrum(Int64[85, 112, 124], Int64[13, 0, 67])
MassSpectrum {ions: Int64, intensities: Int64}
3 ions: m/z 85, 112, 124
intensity range: 0 - 67
metadata: 0 entries
julia> ions(ms)
3-element Vector{Int64}:
85
112
124
JuChrom.ioncount
— Methodioncount(ms::AbstractMassSpectrum) -> Int
Return the number of ions.
See also AbstractMassSpectrum
, ions(::AbstractMassSpectrum)
, ion(::AbstractMassSpectrum, ::Integer)
, ionindex(::AbstractMassSpectrum, ::Real)
, minion(::AbstractMassSpectrum)
, maxion(::AbstractMassSpectrum)
, sharedions
.
Example
julia> ms = MassSpectrum(Int64[85, 112, 124], Int64[13, 0, 67])
MassSpectrum {ions: Int64, intensities: Int64}
3 ions: m/z 85, 112, 124
intensity range: 0 - 67
metadata: 0 entries
julia> ioncount(ms)
3
JuChrom.massspectrum
— Functionmassspectrum(chrom::AbstractChromMS, scanindex::Integer;
retentionindexname::Union{AbstractString, Nothing}=nothing,
retentionindex::Union{Real, Nothing}=nothing, metadata::Dict=Dict())
Returns a MassSpectrum
containing the intensity values for all ions at the specified scan index. The optional keyword arguments, retentionindexname
and retentionindex
, allow the mass spectrum to be associated with a retention index. Note that both retentionindexname
and retentionindex
must always be provided together. The optional keyword argument metadata
allows the mass spectrum to be associated with additional metadata.
See also AbstractChromMS
, MassSpectrum
, ions(::AbstractMassSpectrum)
, intensities(::AbstractMassSpectrum)
, retentiontime(::AbstractMassSpectrum; ::Unitful.TimeUnits, ::Bool)
.
Examples
julia> chrom = ChromMS([1, 2, 3]u"s", [85, 100], [0 12; 34 956; 23 1])
ChromMS {scan times: Int64, ions: Int64, intensities: Int64}
3 scans; scan times: 1 s, 2 s, 3 s
2 ions: m/z 85, 100
intensity range: 0 - 956
metadata: 0 entries
julia> massspectrum(chrom, 2)
MassSpectrum {ions: Int64, intensities: Int64}
2 ions: m/z 85, 100
intensity range: 34 - 956
retention time: 2 s
metadata: 0 entries
julia> massspectrum(chrom, 2, retentionindexname="Kovats", retentionindex=123.21)
MassSpectrum {ions: Int64, intensities: Int64}
2 ions: m/z 85, 100
intensity range: 34 - 956
retention time: 2 s
retention index: 123.21 (Kovats)
metadata: 0 entries
julia> ms = massspectrum(chrom, 2, metadata=Dict(:compound => "hexane"))
MassSpectrum {ions: Int64, intensities: Int64}
2 ions: m/z 85, 100
intensity range: 34 - 956
retention time: 2 s
metadata: 1 entry
julia> metadata(ms)
Dict{Any, Any} with 1 entry:
:compound => "hexane"
massspectrum(chrom::AbstractChromMS, time::Unitful.Time; precisetime::Bool=false,
retentionindexname::Union{AbstractString, Nothing}=nothing,
retentionindex::Union{Real, Nothing}=nothing, metadata::Dict=Dict())
Return a MassSpectrum containing the intensity values for all ions in the scan with a scan time closest to the specified time
. All time units defined in the package Unitful.jl (e.g., u"s"
, u"minute"
) are supported. In case of a tie, the larger scan time is selected. If the optional parameter precisetime
is set to true, the specified time must match exactly, otherwise an error will be thrown. The optional keyword arguments, retentionindexname
and retentionindex
, allow the mass spectrum to be associated with a retention index. Note that both retentionindexname
and retentionindex
must always be provided together. The optional keyword argument metadata
allows the mass spectrum to be associated with additional metadata.
See also AbstractChromMS
, MassSpectrum
, ions(::AbstractMassSpectrum)
, intensities(::AbstractMassSpectrum)
, retentiontime(::AbstractMassSpectrum; ::Unitful.TimeUnits, ::Bool)
.
Examples
julia> chrom = ChromMS([1, 2, 3]u"s", [85, 100], [0 12; 34 956; 23 1])
ChromMS {scan times: Int64, ions: Int64, intensities: Int64}
3 scans; scan times: 1 s, 2 s, 3 s
2 ions: m/z 85, 100
intensity range: 0 - 956
metadata: 0 entries
julia> massspectrum(chrom, 2u"s")
MassSpectrum {ions: Int64, intensities: Int64}
2 ions: m/z 85, 100
intensity range: 34 - 956
retention time: 2 s
metadata: 0 entries
julia> massspectrum(chrom, 2.5u"s")
MassSpectrum {ions: Int64, intensities: Int64}
2 ions: m/z 85, 100
intensity range: 1 - 23
retention time: 3 s
metadata: 0 entries
julia> massspectrum(chrom, 3.5u"s")
MassSpectrum {ions: Int64, intensities: Int64}
2 ions: m/z 85, 100
intensity range: 1 - 23
retention time: 3 s
metadata: 0 entries
julia> massspectrum(chrom, 2.1u"s", precisetime=true)
ERROR: ArgumentError: scantime 2.1 s does not exist
[...]
julia> massspectrum(chrom, 2.5u"s", retentionindexname="Kovats", retentionindex=123.21)
MassSpectrum {ions: Int64, intensities: Int64}
2 ions: m/z 85, 100
intensity range: 1 - 23
retention time: 3 s
retention index: 123.21 (Kovats)
metadata: 0 entries
julia> ms = massspectrum(chrom, 2.5u"s", metadata=Dict(:compound => "hexane"))
MassSpectrum {ions: Int64, intensities: Int64}
2 ions: m/z 85, 100
intensity range: 1 - 23
retention time: 3 s
metadata: 1 entry
julia> metadata(ms)
Dict{Any, Any} with 1 entry:
:compound => "hexane"
JuChrom.maxintensity
— Methodmaxintensity(ms::AbstractMassSpectrum)
Return the maximum intensity.
See also AbstractMassSpectrum
, minintensity(::AbstractMassSpectrum)
, intensities(::AbstractMassSpectrum)
, intensity(::AbstractMassSpectrum, ::Integer)
`](@ref).
Example
julia> ms = MassSpectrum(Int64[85, 112, 124], Int64[13, 0, 67])
MassSpectrum {ions: Int64, intensities: Int64}
3 ions: m/z 85, 112, 124
intensity range: 0 - 67
metadata: 0 entries
julia> maxintensity(ms)
67
JuChrom.maxion
— Methodmaxion(ms::AbstractMassSpectrum)
Return the largest ion.
See also AbstractMassSpectrum
, minion(::AbstractMassSpectrum)
, ions(::AbstractMassSpectrum)
, ioncount(::AbstractMassSpectrum)
, ion(::AbstractMassSpectrum, ::Integer)
, ionindex(::AbstractMassSpectrum, ::Real)
.
Example
julia> ms = MassSpectrum(Int64[85, 112, 124], Int64[13, 0, 67])
MassSpectrum {ions: Int64, intensities: Int64}
3 ions: m/z 85, 112, 124
intensity range: 0 - 67
metadata: 0 entries
julia> maxion(ms)
124
JuChrom.meanintensities
— Functionmeanintensities(mss::AbstractVector{<:AbstractMassSpectrum}) -> Vector{Float64}
Return a vector of the average intensities for all ions in the provided mass spectra. This function assumes that each mass spectrum contains data for the same set of ions.
See also AbstractMassSpectrum
, ions(::AbstractMassSpectrum)
, intensities(::AbstractMassSpectrum)
, intensitydifferences
, intensitysums
.
Example
julia> ms₁ = MassSpectrum([80, 85, 90], [0, 10, 0]);
julia> ms₂ = MassSpectrum([80, 85, 90], [10, 80, 5]);
julia> meanintensities([ms₁, ms₂]) ≈ Float64[5.0, 45.0, 2.5]
true
julia> meanintensities([MassSpectrum([80], [5]), MassSpectrum([81], [5])])
ERROR: ArgumentError: mass spectra differ in ions
[...]
JuChrom.metadata
— Methodmetadata(ms::AbstractMassSpectrum) -> Dict{Any, Any}
Return the metadata.
See also AbstractMassSpectrum
.
Examples
julia> ms = MassSpectrum([85.1], [13.0], metadata=Dict(:name=>"unknown"))
MassSpectrum {ions: Float64, intensities: Float64}
1 ion: m/z 85.1
intensity: 13.0
metadata: 1 entry
julia> metadata(ms)
Dict{Any, Any} with 1 entry:
:name => "unknown"
julia> ms = MassSpectrum([85.1], [13.0])
MassSpectrum {ions: Float64, intensities: Float64}
1 ion: m/z 85.1
intensity: 13.0
metadata: 0 entries
julia> metadata(ms)
Dict{Any, Any}()
julia> metadata(ms)[:species] = "Polistes dominula"
"Polistes dominula"
julia> metadata(ms)[:id] = 123
123
julia> metadata(ms)
Dict{Any, Any} with 2 entries:
:species => "Polistes dominula"
:id => 123
julia> ms
MassSpectrum {ions: Float64, intensities: Float64}
1 ion: m/z 85.1
intensity: 13.0
metadata: 2 entries
julia> delete!(metadata(ms), :species)
Dict{Any, Any} with 1 entry:
:id => 123
julia> ms
MassSpectrum {ions: Float64, intensities: Float64}
1 ion: m/z 85.1
intensity: 13.0
metadata: 1 entry
JuChrom.minintensity
— Methodminintensity(ms::AbstractMassSpectrum)
Return the minimum intensity.
See also AbstractMassSpectrum
, maxintensity(::AbstractMassSpectrum)
, intensities(::AbstractMassSpectrum)
, intensity(::AbstractMassSpectrum, ::Integer)
`](@ref).
Example
julia> ms = MassSpectrum(Int64[85, 112, 124], Int64[13, 0, 67])
MassSpectrum {ions: Int64, intensities: Int64}
3 ions: m/z 85, 112, 124
intensity range: 0 - 67
metadata: 0 entries
julia> minintensity(ms)
0
JuChrom.minion
— Methodminion(ms::AbstractMassSpectrum)
Return the smallest ion.
See also AbstractMassSpectrum
, maxion(::AbstractMassSpectrum)
, ions(::AbstractMassSpectrum)
, ioncount(::AbstractMassSpectrum)
, ion(::AbstractMassSpectrum, ::Integer)
, ionindex(::AbstractMassSpectrum, ::Real)
.
Example
julia> ms = MassSpectrum(Int64[85, 112, 124], Int64[13, 0, 67])
MassSpectrum {ions: Int64, intensities: Int64}
3 ions: m/z 85, 112, 124
intensity range: 0 - 67
metadata: 0 entries
julia> minion(ms)
85
JuChrom.retentionindex
— Methodretentionindex(ms::AbstractMassSpectrum)
Return the retention index. If no retention index is associated with the mass spectrum, the function returns the value nothing.
See also AbstractMassSpectrum
, retentionindexname(::AbstractMassSpectrum)
.
Example
julia> ms = MassSpectrum([1.2], [1.1], retentionindex=131.1, retentionindexname="Kovats")
MassSpectrum {ions: Float64, intensities: Float64}
1 ion: m/z 1.2
intensity: 1.1
retention index: 131.1 (Kovats)
metadata: 0 entries
julia> retentionindex(ms) ≈ 131.1
true
julia> ms = MassSpectrum(Int64[85, 112, 124], Int64[13, 0, 67])
MassSpectrum {ions: Int64, intensities: Int64}
3 ions: m/z 85, 112, 124
intensity range: 0 - 67
metadata: 0 entries
julia> retentionindex(ms) === nothing
true
JuChrom.retentionindexname
— Methodretentionindexname(ms::AbstractMassSpectrum)
Return the retention index name. If the mass spectrum has no associated retention index, the function returns the value nothing.
See also AbstractMassSpectrum
, retentionindex(::AbstractMassSpectrum)
.
Example
julia> ms = MassSpectrum([1.2], [1.1], retentionindex=131.1, retentionindexname="Kovats")
MassSpectrum {ions: Float64, intensities: Float64}
1 ion: m/z 1.2
intensity: 1.1
retention index: 131.1 (Kovats)
metadata: 0 entries
julia> retentionindexname(ms)
"Kovats"
julia> ms = MassSpectrum(Int64[85, 112, 124], Int64[13, 0, 67])
MassSpectrum {ions: Int64, intensities: Int64}
3 ions: m/z 85, 112, 124
intensity range: 0 - 67
metadata: 0 entries
julia> retentionindexname(ms) === nothing
true
JuChrom.retentiontime
— Functionretentiontime(ms::AbstractMassSpectrum; timeunit::Unitful.TimeUnits,
ustripped::Bool=false)
Return the retention time. If no retention time is associated with the mass spectrum, the function returns the value nothing. The optional keyword argument timeunit
lets you change the unit of the returned scan time. All time units defined in the package Unitful.jl (e.g., u"s"
, u"minute"
) are supported. The optional keyword argument ustripped
lets you choose whether to include the unit in the returned value.
See also AbstractMassSpectrum
, massspectrum
.
Examples
julia> ms = MassSpectrum([85.1, 112.2, 124.1], Int64[13, 0, 67], retentiontime=3.2u"minute")
MassSpectrum {ions: Float64, intensities: Int64}
3 ions: m/z 85.1, 112.2, 124.1
intensity range: 0 - 67
retention time: 3.2 minute
metadata: 0 entries
julia> retentiontime(ms) ≈ 3.2u"minute"
true
julia> retentiontime(ms, timeunit=u"s") ≈ 192.0u"s"
true
julia> retentiontime(ms, timeunit=u"s", ustripped=true) ≈ 192.0
true
julia> retentiontime(ms, ustripped=true) ≈ 3.2
true
julia> ms = MassSpectrum([85.1, 112.2, 124.1], Int64[13, 0, 67])
MassSpectrum {ions: Float64, intensities: Int64}
3 ions: m/z 85.1, 112.2, 124.1
intensity range: 0 - 67
metadata: 0 entries
julia> retentiontime(ms) === nothing
true
julia> retentiontime(ms, timeunit=u"ms", ustripped=true) === nothing
true
JuChrom.sharedions
— Functionsharedions(ms₁::AbstractMassSpectrum, ms₂::AbstractMassSpectrum)
Return the ions present in both mass spectra.
See also MassSpectrum
, ions(::AbstractMassSpectrum)
, ion(::AbstractMassSpectrum, ::Integer)
, ioncount(::AbstractMassSpectrum)
.
Example
julia> ms₁ = MassSpectrum([80, 85, 90], [100, 500, 250])
MassSpectrum {ions: Int64, intensities: Int64}
3 ions: m/z 80, 85, 90
intensity range: 100 - 500
metadata: 0 entries
julia> ms₂ = MassSpectrum([80, 85], [100, 500])
MassSpectrum {ions: Int64, intensities: Int64}
2 ions: m/z 80, 85
intensity range: 100 - 500
metadata: 0 entries
julia> sharedions(ms₁, ms₂)
2-element Vector{Int64}:
80
85
JuChrom.similarity
— Functionsimilarity(ms₁::AbstractMassSpectrum, ms₂::AbstractMassSpectrum, f::Function)
Compute the similarity between the two mass spectra by applying the similarity function f
(e.g., cosine
) to the intensity values of the ions shared between ms₁
and ms₂
.
See also AbstractMassSpectrum
, cosine
, sharedions
, ions(::AbstractMassSpectrum)
, intensities(::AbstractMassSpectrum)
.
Examples
julia> ms₁ = MassSpectrum(Int64[80, 85, 90], Int64[100, 500, 250]);
julia> ms₂ = MassSpectrum(Int32[80, 85], Int32[200, 1000]);
julia> similarity(ms₁, ms₂, cosine) ≈ 1.0
true
julia> ms₁ = MassSpectrum(Float64[80, 85, 90], Float32[100, 500, 250]);
julia> ms₂ = MassSpectrum(Int64[80, 85, 90], Int32[200, 1000, 0]);
julia> similarity(ms₁, ms₂, cosine) ≈ 0.8978873122816586
true