| """ |
| Simple example of using Sybil for lung cancer risk prediction |
| """ |
|
|
| import sys |
| import os |
|
|
| |
| |
|
|
| |
| from modeling_sybil_wrapper import SybilHFWrapper |
| from configuration_sybil import SybilConfig |
|
|
| def predict_cancer_risk(dicom_paths): |
| """ |
| Predict lung cancer risk from DICOM files. |
| |
| Args: |
| dicom_paths: List of paths to DICOM files from a CT scan |
| |
| Returns: |
| Risk scores for years 1-6 |
| """ |
| |
| print("Loading Sybil model...") |
| config = SybilConfig() |
| model = SybilHFWrapper.from_pretrained("Lab-Rasool/sybil") |
|
|
| |
| print(f"Processing {len(dicom_paths)} DICOM files...") |
| output = model(dicom_paths=dicom_paths, return_attentions=False) |
|
|
| |
| risk_scores = output.risk_scores.numpy() |
|
|
| return risk_scores |
|
|
|
|
| def main(): |
| |
| |
| demo_dicom_paths = [ |
| "path/to/slice001.dcm", |
| "path/to/slice002.dcm", |
| |
| ] |
|
|
| |
| |
|
|
| print("=" * 50) |
| print("Sybil Lung Cancer Risk Prediction") |
| print("=" * 50) |
|
|
| |
| |
|
|
| |
| |
| |
| |
| |
| |
|
|
| print("\nNote: This example requires actual DICOM files.") |
| print("Please provide paths to LDCT scan DICOM files.") |
| print("\nFor more information:") |
| print("- Original paper: https://doi.org/10.1200/JCO.22.01345") |
| print("- GitHub: https://github.com/reginabarzilaygroup/Sybil") |
|
|
|
|
| if __name__ == "__main__": |
| main() |