Input / Output (IO)
Plex employs a streamlined approach to input and output data management, facilitating consistency and transparency throughout the computation process.
Plex begins its IO process with plex_init
, which creates an io.json
file. This file serves as the cornerstone of instruction for the Bacalhau compute cluster, dictating the parameters and expected outputs for each computational job.
Key components of the initialized io.json
- Input Data: lists the provided input files, detailing their filename and corresponding CID
- Output Data Placeholder: lays out the expected outputs, as defined by the tool config
- Tool Information: indicates the computational tool to be used, along with the CID of its config
- Job State: initially set to
created
, it tracks the job's progression - Bacalhau Job ID Placeholder: reserved for the unique job identifier once submitted to the Bacalhau compute cluster
Initialized io.json
[
{
"outputs": {
"best_docked_small_molecule": {
"class": "File",
"filepath": "",
"ipfs": ""
},
"protein": {
"class": "File",
"filepath": "",
"ipfs": ""
}
},
"tool": {
"name": "equibind",
"ipfs": "QmZ2HarAgwZGjc3LBx9mWNwAQkPWiHMignqKup1ckp8NhB"
},
"inputs": {
"protein": {
"class": "File",
"filepath": "6d08_protein_processed.pdb",
"ipfs": "QmeTreLhxMmBaRqHemJcStvdyHZThdzi4gTmvTyY1igeCk"
},
"small_molecule": {
"class": "File",
"filepath": "6d08_ligand.sdf",
"ipfs": "QmPErdymxLwpXcEHnWXYqEVHvRBVnh7kr3Uu5DNt2Y8wMR"
}
},
"state": "created",
"errMsg": "",
"bacalhauJobId": ""
}
]
Execution with plex_run
The action commences with plex_run
. Upon its call, the computational job(s) outlined in the io.json
are dispatched to the Bacalhau cluster for processing.
As the computations unfold and conclude, the io.json
undergoes real-time updates
- Output Data: once a job completes, the
io.json
populates with the resultant data and its CID - Bacalhau Job ID: the unique identifier for the job is added, facilitating traceability; useful in cases when a job fails to run
- Updated Job State: reflects the final status of the job, transitioning to
completed
if successful
Completed io.json
[
{
"outputs": {
"best_docked_small_molecule": {
"class": "File",
"filepath": "6d08_protein_processed_6d08_ligand_docked.sdf",
"ipfs": "QmWdzgrt5wtUJPyCrcKycU3voKGmT59FZXMasuaa1XCbkk"
},
"protein": {
"class": "File",
"filepath": "6d08_protein_processed.pdb",
"ipfs": "QmeTreLhxMmBaRqHemJcStvdyHZThdzi4gTmvTyY1igeCk"
}
},
"tool": {
"name": "equibind",
"ipfs": "QmZ2HarAgwZGjc3LBx9mWNwAQkPWiHMignqKup1ckp8NhB"
},
"inputs": {
"protein": {
"class": "File",
"filepath": "6d08_protein_processed.pdb",
"ipfs": "QmeTreLhxMmBaRqHemJcStvdyHZThdzi4gTmvTyY1igeCk"
},
"small_molecule": {
"class": "File",
"filepath": "6d08_ligand.sdf",
"ipfs": "QmPErdymxLwpXcEHnWXYqEVHvRBVnh7kr3Uu5DNt2Y8wMR"
}
},
"state": "completed",
"errMsg": "",
"bacalhauJobId": "7a01e92a-877e-4d1b-ba91-9effec6f170e"
}
]