
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
Javascript Package for the Molecular International Prognostic Scoring System (IPSS-M) for Myelodysplastic Syndromes.
Javascript/Node Package for the Molecular International Prognostic Scoring System (IPSS-M) for Myelodysplastic Syndromes.
For the R package, see papaemmelab/ipssm.
For the Online Web Calculator, visit https://mds-risk-model.com.
# Using npm
npm install ipssm
Having a patient's data in a dictionary, you can compute the IPSS-M.
const { ipssm } from 'ipssm'
// Add patient data to an object with the following fields
const patientFields = {
// Clinical Data
BM_BLAST: 0,
HB: 8.2,
PLT: 239,
// Optional IPSS-R fields
ANC: 0.72,
AGE: 63.5,
// Cytogenetic Data
del5q: 0,
del7_7q: 0,
del17_17p: 0,
complex: 0,
CYTO_IPSSR: 'Good',
// Molecular Data
TP53mut: 0,
TP53maxvaf: 0,
TP53loh: 0,
MLL_PTD: 0,
FLT3: 0,
ASXL1: 1,
CBL: 0,
DNMT3A: 0,
ETV6: 0,
EZH2: 1,
IDH2: 0,
KRAS: 0,
NPM1: 0,
NRAS: 0,
RUNX1: 1,
SF3B1: 0,
SRSF2: 0,
U2AF1: 0,
BCOR: 0,
BCORL1: 0,
CEBPA: 0,
ETNK1: 0,
GATA2: 0,
GNB1: 0,
IDH1: 0,
NF1: 0,
PHF6: 0,
PPM1D: 0,
PRPF8: 0,
PTPN11: 0,
SETBP1: 0,
STAG2: 0,
WT1: 0,
}
const ipssmResult = ipssm(patientFields)
console.log(ipssmResult)
// Result
{
means: {
riskScore: 0.09,
riskCat: 'Moderate High',
contributions: {...}
},
best: {
riskScore: 0.09,
riskCat: 'Moderate High',
contributions: {...}
},
worst: {
riskScore: 0.09,
riskCat: 'Moderate High',
contributions: {...}
},
}
Additionally, you may find an implementation to compute the IPPS-R and IPSS-R (Age adjusted) in this module:
import { ipssr } from 'ipssm'
// using the same patient data
patientFields = {
HB: 8.2,
ANC: 0.72,
PLT: 239,
BM_BLAST: 0,
CYTOVEC: 1,
AGE: 63.5,
...
}
const ipssrResult = ipssr({
hb: patientFields.HB,
anc: patientFields.ANC,
plt: patientFields.PLT,
bmblast: patientFields.BM_BLAST,
cytovec: patientFields.CYTOVEC,
age: patientFields.AGE,
})
console.log(ipssrResult)
Which outputs a risk score (means), with a best and worst scenario risk score to account for missing genetic data.
// Result
{
IPSSR_SCORE: 2.5,
IPSSR: 'Low',
IPSSRA_SCORE: 2.2563,
IPSSRA: 'Low',
}
The following code will annotate a CSV file with the IPSS-M and IPSS-M Risks.
import { annotateFile } from 'ipssm'
const inputFile = './test/data/IPSSMexample.csv'
const outputFile = 'IPSSMexample.annotated.csv'
await annotateFile(inputFile, outputFile)
or with an excel file:
import { annotateFile } from 'ipssm'
const inputFile = './test/data/IPSSMexample.xlsx'
const outputFile = 'IPSSMexample.annotated.xlsx'
await annotateFile(inputFile, outputFile)
You can use the command line interface to annotate a file with patients, where each row is a patient and each column is a variable.
$ ipssm --help
Annotate a file of patients with IPSS-M and IPSS-R risk scores and categories.
It supports .csv, .tsv, .xlsx files.
Usage: ipssm <inputFile> <outputFile>
Positionals:
inputFile File to be annotated (rows: patients, columns: variables).[string]
outputFile Path for the annotated output file. [string]
Options:
--version Show version number [boolean]
-h, --help Show help [boolean]
| Category | Variable Explanation | Variable | Unit | Possible Value |
|---|---|---|---|---|
| clinical | Hemoglobin | HB | numerical, in g/dL | [4-20] |
| clinical | Platelets | PLT | numerical, in Giga/L | [0-2000] |
| clinical | Bone Marrow Blasts | BM_BLAST | numerical, in % | [0-30] |
| clinical (only for IPSS-R) | Absolute Neutrophil Count | ANC | numerical, in Giga/L | [0-15] |
| clinical (only for IPSS-RA) | Bone Marrow Blasts | AGE | numerical, in years | [18-120] |
| cytogenetics | Presence of del(5q) | del5q | binary | 0/1 |
| cytogenetics | Presence of -7/del(7q) | del7_7q | binary | 0/1 |
| cytogenetics | Presence of -17/del(17p) | del17_17p | binary | 0/1 |
| cytogenetics | Complex karyotype | complex | binary | 0/1 |
| cytogenetics | Cytogenetics Category | CYTO_IPSSR | categorical | Very Good/Good/Intermediate/Poor/Very Poor |
| TP53 locus | Number of TP53 mutations | TP53mut | categorical | 0/1/2 or more |
| TP53 locus | Maximum TP53 VAF | TP53maxvaf | numerical, between 0 and 1 | [0-1] |
| TP53 locus | Loss of heterozygosity at TP53 | TP53loh | binary | 0/1 |
| MLL and FLT3 mutations | MLL PTD | MLL_PTD | binary | 0/1 |
| MLL and FLT3 mutations | FLT3 ITD or TKD | FLT3 | binary | 0/1 |
| gene main effect | ASXL1 | ASXL1 | binary | 0/1/NA |
| gene main effect | CBL | CBL | binary | 0/1/NA |
| gene main effect | DNMT3A | DNMT3A | binary | 0/1/NA |
| gene main effect | ETV6 | ETV6 | binary | 0/1/NA |
| gene main effect | EZH2 | EZH2 | binary | 0/1/NA |
| gene main effect | IDH2 | IDH2 | binary | 0/1/NA |
| gene main effect | KRAS | KRAS | binary | 0/1/NA |
| gene main effect | NPM1 | NPM1 | binary | 0/1/NA |
| gene main effect | NRAS | NRAS | binary | 0/1/NA |
| gene main effect | RUNX1 | RUNX1 | binary | 0/1/NA |
| gene main effect | SF3B1 | SF3B1 | binary | 0/1/NA |
| gene main effect | SRSF2 | SRSF2 | binary | 0/1/NA |
| gene main effect | U2AF1 | U2AF1 | binary | 0/1/NA |
| gene residual | BCOR | binary | 0/1/NA | |
| gene residual | BCORL1 | binary | 0/1/NA | |
| gene residual | CEBPA | binary | 0/1/NA | |
| gene residual | ETNK1 | binary | 0/1/NA | |
| gene residual | GATA2 | binary | 0/1/NA | |
| gene residual | GNB1 | binary | 0/1/NA | |
| gene residual | IDH1 | binary | 0/1/NA | |
| gene residual | NF1 | binary | 0/1/NA | |
| gene residual | PHF6 | binary | 0/1/NA | |
| gene residual | PPM1D | binary | 0/1/NA | |
| gene residual | PTPN11 | binary | 0/1/NA | |
| gene residual | PRPF8 | binary | 0/1/NA | |
| gene residual | SETBP1 | binary | 0/1/NA | |
| gene residual | STAG2 | binary | 0/1/NA | |
| gene residual | WT1 | binary | 0/1/NA |
Any questions feel free to add an issue to this repo or to contact ElsaB.
FAQs
Javascript Package for the Molecular International Prognostic Scoring System (IPSS-M) for Myelodysplastic Syndromes.
The npm package ipssm receives a total of 11 weekly downloads. As such, ipssm popularity was classified as not popular.
We found that ipssm demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.