Basic Usage
Here’s a quick example of how to create and use phenopacket objects with this library:
const pps = require('@berntpopp/phenopackets-js');
// Create a V2 Phenopacket
const phenopacket = new pps.v2.Phenopacket();
phenopacket.setId('my-phenopacket-1');
// Create and set the subject (Individual)
const subject = new pps.v2.core.Individual();
subject.setId('patient-alpha');
subject.setSex(pps.v2.core.Sex.FEMALE);
// Add a phenotypic feature
const feature = new pps.v2.core.PhenotypicFeature();
const featureType = new pps.v2.core.OntologyClass();
featureType.setId('HP:0001250');
featureType.setLabel('Seizure');
feature.setType(featureType);
phenopacket.addPhenotypicFeatures(feature);
// Add MetaData (required)
const metaData = new pps.v2.core.MetaData();
const createdTs = pps.jsonUtils.dateToTimestamp(new Date());
metaData.setCreated(createdTs);
metaData.setCreatedBy('example-creator');
metaData.setPhenopacketSchemaVersion('2.0.0');
phenopacket.setMetaData(metaData);
// Convert to JSON
console.log(pps.jsonUtils.phenopacketToJSON(phenopacket, { pretty: true }));
Working with JSON
You can convert phenopackets to and from JSON:
// Convert to JSON
const jsonString = pps.jsonUtils.phenopacketToJSON(phenopacket, { pretty: true });
// Parse from JSON
const parsedPhenopacket = pps.jsonUtils.jsonToPhenopacket(jsonString, {
Phenopacket: pps.v2.Phenopacket,
Individual: pps.v2.core.Individual,
PhenotypicFeature: pps.v2.core.PhenotypicFeature,
OntologyClass: pps.v2.core.OntologyClass,
MetaData: pps.v2.core.MetaData,
});
Using Timestamps
The library uses Google’s Protocol Buffer Timestamp for date/time fields:
const { dateToTimestamp } = pps.jsonUtils;
// Convert JavaScript Date to Timestamp
const timestamp = dateToTimestamp(new Date());
metaData.setCreated(timestamp);
// Or create timestamp manually
const ts = new pps.google.protobuf.Timestamp();
ts.setSeconds(Math.floor(Date.now() / 1000));
ts.setNanos(0);
For more detailed examples and API documentation, see the API Reference.