{"id":34815610,"url":"https://github.com/mschubert/pepitope","last_synced_at":"2026-05-25T02:03:14.610Z","repository":{"id":282915839,"uuid":"625226162","full_name":"mschubert/pepitope","owner":"mschubert","description":null,"archived":false,"fork":false,"pushed_at":"2025-12-30T15:18:15.000Z","size":5309,"stargazers_count":2,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-01T19:04:57.195Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://mschubert.github.io/pepitope/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mschubert.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-04-08T13:05:15.000Z","updated_at":"2025-12-29T15:23:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"84d067d9-acea-4d62-a45e-9935d0d48039","html_url":"https://github.com/mschubert/pepitope","commit_stats":null,"previous_names":["mschubert/pepitope"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/mschubert/pepitope","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mschubert%2Fpepitope","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mschubert%2Fpepitope/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mschubert%2Fpepitope/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mschubert%2Fpepitope/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mschubert","download_url":"https://codeload.github.com/mschubert/pepitope/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mschubert%2Fpepitope/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33457339,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-24T19:21:36.376Z","status":"online","status_checked_at":"2026-05-25T02:00:05.812Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-25T13:10:07.175Z","updated_at":"2026-05-25T02:03:14.604Z","avatar_url":"https://github.com/mschubert.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"pepitope: extract, qc and screen *pep*tide ep*itope*s\n=====================================================\n\nPeptide-TCR co-culture screens support the development of personalized\nimmunotherapy by revealing the specific reactivity of patient-derived T cell\nreceptors to patient-specific (neo-)antigens. Here, we provide a software tool\nto assist in the creation of patient-specific antigen libraries, as well as\nin analyzing the result of co-culture screening data.\n\nThis R package is used to:\n\n* [**Extract peptides**](#generating-minigene-constructs) with flanking region around mutations\n* Run [**quality control**](#performing-quality-control-on-construct-library-sequencing) on sequencing of these libraries\n* Perform [**differential abundance**](#differential-abundance-testing-of-co-culture-screens) testing of co-culture screens\n\nInstallation\n------------\n\nThe package is currently only available on Github, use the`remotes` package to\ninstall:\n\n```r\n# run this in R \u003e= 4.5.0\n# note that we need Rust, Cargo, and cmake to compile the dependencies\nif (!requireNamespace(\"remotes\", quietly=TRUE))\n    install.packages(\"remotes\")\nremotes::install_github(\"mschubert/pepitope\", dependencies=TRUE, timeout=300)\n```\n\nUsage\n-----\n\n### Generating minigene constructs\n\nHere we have sequenced the DNA (and optionally RNA) of a patient and\nidentified the variants in a `.vcf` file. We now want to extract the\nreference and mutated alternative sequences including their flanking\nregions into a summary report. The steps are:\n\n* Load a genome and annotation, usually GRCh38 and Ensembl\n* Load a VCF variants file as `VRanges` object and annotate the protein-coding mutations\n* Optionally, load a fusion VCF and annotating those\n* Subset the peptide context around each mutation\n* Make a report of variants, coding changes, and tiled peptides\n\nMore information can be found in the [*Minigene report* vignette 🔗](https://mschubert.github.io/pepitope/articles/minigene.html).\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCode example\u003c/b\u003e\u003c/summary\u003e\n\n```r\nlibrary(pepitope)\n\n# genome and annotation\nens106 = AnnotationHub::AnnotationHub()[[\"AH100643\"]]\nasm = BSgenome.Hsapiens.UCSC.hg38::BSgenome.Hsapiens.UCSC.hg38\nseqlevelsStyle(ens106) = \"UCSC\"\n\n# read variants from VCF file, apply filters and annotate\nvariant_vcf_file = system.file(\"my_variants.vcf\", package=\"pepitope\")\nvr = readVcfAsVRanges(variant_vcf_file) |\u003e\n    filter_variants(min_cov=2, min_af=0.05, pass=TRUE)\nann = annotate_coding(vr, ens106, asm)\nsubs = ann |\u003e\n#    filter_expressed(rna_sample, min_reads=1, min_tpm=0) |\u003e\n    subset_context(15)\n\n# read fusion variants, apply filters and annotate\nfusion_vcf_file = system.file(\"my_fusions.vcf\", package=\"pepitope\")\nvr2 = readVcfAsVRanges(fusion_vcf_file) |\u003e\n    filter_fusions(min_reads=2, min_split_reads=1, min_tools=1)\nseqlevelsStyle(vr2) = \"UCSC\"\nfus = annotate_fusions(vr2, ens106, asm) |\u003e\n    subset_context_fusion(15)\n\n# create construct tables and make a report\ntiled = make_peptides(subs, fus) |\u003e\n    pep_tile() |\u003e\n    remove_cutsite(BbsI=\"GAAGAC\")\n\nreport = make_report(ann, subs, fus, tiled)\nwritexl::write_xlsx(report, \"my_variants.xlsx\")\n```\n\n\u003c/details\u003e\n\n### Creating construct library (wetlab)\n\nWe want to express the sequences (minigenes) including their flanking regions\n(context) in target cells that will be used in a co-culture screen with T-cells.\nFor this, we first need to add a barcode to each construct and then order\nthem as gene blocks and transduce them into the target cells. The steps are:\n\n* Add Barcodes in the annotation sheets as `barcode` or `barcode_{1,2}` columns\n* Order these constructs as gene blocks and clone them into expression vectors\n* Transduce target cells with this peptide construct library\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCode example\u003c/b\u003e (runnable without external data)\u003c/summary\u003e\n\n```r\n# creating barcoded constructs\nlib = \"https://raw.githubusercontent.com/hawkjo/freebarcodes/master/barcodes/barcodes12-1.txt\"\nvalid_barcodes = readr::read_tsv(lib, col_names=FALSE)$X1\nall_constructs = example_peptides(valid_barcodes)\nplot_barcode_overlap(all_constructs, valid_barcodes)\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCode example\u003c/b\u003e (loading from \u003ccode\u003e.xlsx\u003c/code\u003e)\u003c/summary\u003e\n\n```r\n# this file is manually created from the output of step 1\nfname = \"my_combined_barcoded_file.xlsx\"\nsheets = readxl::excel_sheets(fname)\nall_constructs = sapply(sheets, readxl::read_xlsx, path=fname, simplify=FALSE)\nplot_barcode_overlap(all_constructs, valid_barcodes)\n```\n\n\u003c/details\u003e\n\n### Performing quality control on construct library sequencing\n\nIn each step of generating the target cells expressing the reference and mutated\nversions of each peptide, we want to make sure our library is well-represented.\nFor this, we will check if all constructs that should be in there are, and whether\nthey are present in a similar enough amount. The steps are:\n\n* Check the quality of the construct libraries\n* Check the quality of the transduced target cells\n* Check the quality of the co-culture screens\n\nMore information can be found in the [*Quality Control* vignette 🔗](https://mschubert.github.io/pepitope/articles/qc.html)\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCode example\u003c/b\u003e\u003c/summary\u003e\n\n```r\n# demultiplexing and counting example data\nsample_sheet = system.file(\"my_samples.tsv\", package=\"pepitope\")\nfastq_file = example_fastq(sample_sheet, all_constructs)\ntemp_dir = demux_fq(fastq_file, sample_sheet, read_structures=\"7B+T\")\ndset = count_bc(temp_dir, all_constructs, valid_barcodes)\n\n# quality control plots\nplot_reads(dset)\nplot_distr(dset)\n```\n\n\u003c/details\u003e\n\n### Differential abundance testing of co-culture screens\n\nFinally, we co-culture our target cells with T-cells expressing a variety of\nTCRs with our expressed peptide libraries to find the reactive ones. Those will\nbe visible by decreasing in abundance more than the reference peptides compared\nto a mock-transduced population that was cultured the same way. The steps are:\n\n* Calculate the differential abundance of peptide barcodes\n* Plot the results to identify peptides recognized by T-cells\n\nMore information can be found in the [*Co-culture screen* vignette 🔗](https://mschubert.github.io/pepitope/articles/screen.html).\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCode example\u003c/b\u003e\u003c/summary\u003e\n\n```r\n# perform abundance testing and plot results\nres = screen_calc(dset, list(c(\"Sample\", \"Mock\")))\nplot_screen(res$`Sample vs Mock`)\n```\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmschubert%2Fpepitope","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmschubert%2Fpepitope","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmschubert%2Fpepitope/lists"}