Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
a0c4ebf
Added variant ions and more complex satelitte ion definitions to the …
douweschulte Mar 19, 2025
29510b4
Implemented variant ions
douweschulte Mar 19, 2025
7b66d4a
Allowed more complex neutral loss definition and some refactoring
douweschulte Mar 20, 2025
061afb0
Handle side chain losses from any ion series
douweschulte Mar 20, 2025
3f90caa
Bug fix
douweschulte Mar 20, 2025
d83debf
Added missing variant ion for EtHCD
douweschulte Mar 20, 2025
4fc82e5
Added small tool to examples to look at framentation over a whole dat…
douweschulte Mar 21, 2025
d6a0747
Small figure improvements
douweschulte Mar 21, 2025
b51a164
Merge branch 'main' into model-extension
douweschulte Mar 24, 2025
1439e54
Some clippy love
douweschulte Mar 24, 2025
25ea39f
Fixed issues with multiple neutral losses and small other fixes
douweschulte Mar 31, 2025
1a329c5
Refactored fragmentation model and added more control for neutral los…
douweschulte Apr 1, 2025
0d83d2d
Merge branch 'main' into model-extension
douweschulte Apr 1, 2025
892bf5b
Fix for bug in snijderlab/annotator#43
douweschulte Apr 2, 2025
698df12
Small fix
douweschulte Apr 2, 2025
8db219a
Fix the same issue but now for neutral losses instead of diagnostic ions
douweschulte Apr 2, 2025
d64d28f
Initial mzPAF export for fragments
douweschulte Apr 2, 2025
788229c
Fix for display of ambiguous labels
douweschulte Apr 2, 2025
cc89628
Handle mzPAF z ions export
douweschulte Apr 2, 2025
e092bd9
Worked on more complex glycan fragmentation model WIP
douweschulte Apr 3, 2025
60c1fdc
More work on glycan core fragmentation on peptide fragments WIP
douweschulte Apr 4, 2025
e0493df
Got glycan peptide fragments to work
douweschulte Apr 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ jobs:
cargo build -p rustyms --no-default-features --features rand
cargo build -p rustyms --no-default-features --features rayon
cargo build -p rustyms --no-default-features --features mzdata
cargo build -p rustyms --no-default-features --features glycan-render
cargo build -p rustyms --no-default-features --features glycan-render-bitmap

fmt:
runs-on: ubuntu-latest
Expand Down
6 changes: 2 additions & 4 deletions .github/workflows/scripts/update-all-databases.sh
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,9 @@ function make-ontologies {
curl https://raw.githubusercontent.com/HUPO-PSI/mzIdentML/master/cv/XLMOD.obo \
> ${db_data}/XLMOD.obo
curl -L http://purl.obolibrary.org/obo/gno.obo \
| sed '/(property_value: GNO:00000(022|023|041|042|101|102) .*$\n)|(def: .*$\n)/d' \
| gzip -c \
> ${db_data}/GNOme.obo.gz
> ${db_data}/GNOme.obo
curl -L https://glycosmos.org/download/glycosmos_glycans_list.csv \
| gzip -c > ${db_data}/glycosmos_glycans_list.csv.gz
> ${db_data}/glycosmos_glycans_list.csv


echo "Serializing the other databases..."
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Cargo.lock
errors.dat
*.dat.Z
*.dat
*.html
GNOme.obo
glycosmos_glycans_list.csv
.venv/
Expand Down
8 changes: 6 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,17 @@ codegen-units = 1

[workspace.dependencies]
afl = "0.15"
base64 = "0.22"
bincode = "1.3"
clap = { version = "4.5", features = ["derive", "cargo"] }
directories = "6.0"
flate2 = "1.0"
iai-callgrind = "0.14"
itertools = "0.14"
mzdata = "0.44"
mzdata = {version="0.49", default-features = false, features = ["miniz_oxide"]}
ndarray = "0.16"
ordered-float = { version = "4.6", features = ["serde"] }
png = "0.17"
probability = "0.20"
pyo3 = "0.23"
rand = "0.9"
Expand All @@ -45,8 +47,10 @@ roxmltree = "0.20"
serde = { version = "1.0", features = ["derive", "rc"] }
serde_json = "1.0"
similar = "2.7"
swash = "0.2"
thin-vec = { version = "0.2", features = ["serde"] }
uom = { version = "0.36", features = ["use_serde", "usize", "isize"] }
uom = { version = "0.36", default-features = false, features = ["use_serde", "usize", "isize", "f64"] }
zeno = {version = "0.3.2" }

[workspace.lints.rust]
unexpected_cfgs = { level = "allow", check-cfg = [
Expand Down
2 changes: 1 addition & 1 deletion examples/de-novo-align/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ license.workspace = true
publish = false

[dependencies]
rustyms = { path = "../../rustyms" }
rustyms = { path = "../../rustyms", default-features=false, features = ["align", "identification"] }
clap = { workspace = true }
itertools = { workspace = true }
rayon = { workspace = true }
Expand Down
21 changes: 21 additions & 0 deletions examples/ion-explorer/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
[package]
name = "ion-explorer"
version = "0.1.0"
authors.workspace = true
edition.workspace = true
license.workspace = true
publish = false

[dependencies]
clap = { workspace = true }
directories = { workspace = true }
itertools = { workspace = true }
mzdata = { workspace = true, features = ["mgf", "mzml", "thermo"] }
rustyms = { path = "../../rustyms", default-features = false, features = [
"mzdata",
"identification",
] }
serde_json = { workspace = true }

[lints]
workspace = true
7 changes: 7 additions & 0 deletions examples/ion-explorer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Ion explorer

```
argo run -p ion-explorer --release -- --in-path /home/douwe/Downloads/raw_data/COVID19_IgG_14_DENOVO_5.csv --raw-file-directory /home/douwe/Downloads/raw_data/ --out-path .
```

This takes an identified peptides file and extracts and bins all peaks surrounding the main fragment series. This helps in discovering which fragments and neutral losses are actually generated by the used fragmentation method. It returns a separate csv file for all fragments with the mz, count, and average intensity for all detected peaks.
33 changes: 33 additions & 0 deletions examples/ion-explorer/figure.r
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
library(ggplot2)

for (file in c("start", "fragment_b", "fragment_y", "fragment_v_0", "fragment_w_0", "fragment_w_1", "fragment_w_2", "fragment_w_3", "fragment_w_4", "fragment_w_5", "fragment_w_6", "fragment_precursor")) {
data = read.csv(paste(file, ".csv", sep=""), header=TRUE);
# data = data[data$count > 1000,];

plot = ggplot(data, aes(x=mz, y=count, size=avg_intensity, colour=avg_intensity)) +
geom_point() +
scale_size_continuous(range = c(0.25, 3)) +
xlab("Difference to theoretical ion") +
theme_bw()

if (file == "fragment_y") {
plot = plot + geom_vline(xintercept=0, linetype="dashed") + geom_vline(xintercept=+18.011-0.984, linetype="dashed") + geom_vline(xintercept=-25.979+18.011, linetype="dashed")
}

ggsave(paste(file, ".png", sep=""), plot)
}

for (file in c("comparison_b_N_N[U:Deamidated]", "comparison_y_N_N[U:Deamidated]")) {
data = read.csv(paste(file, ".csv", sep=""), header=TRUE);
data = data[data$count_a > 20 | data$count_b > 20,];
max_a = max(data$avg_intensity_a);
max_b = max(data$avg_intensity_b);

ggplot(data, aes(x=mz, y=log2(count_a/count_b), colour=rgb(avg_intensity_a / max_a, 0, avg_intensity_b / max_b), size=avg_intensity_a)) +
geom_point() +
scale_size_continuous(range = c(0.25, 3)) +
theme_bw() +
guides(colour="none")

ggsave(paste(file, ".png", sep=""))
}
Loading