griffithlab / pVACtools

http://www.pvactools.org
BSD 3-Clause Clear License
131 stars 58 forks source link

Implement new command `pvacseq valid_algorithms` to see which prediction algorithms support a specific allele and/or species #1106

Closed susannasiebert closed 1 month ago

susannasiebert commented 1 month ago

This command would work similarly to how the pvacseq valid_alleles command works but it would instead list by default all available prediction algorithms. The command would provide parameters for species (--species - -s) and allele (--allele--a`) to filter theis list to show only algorithms supporting the specified species and/or allele, respectively.

The meat of the pvacseq valid_alleles command can be found in pvactools/lib/valid_alleles.py and the a lot of the code can probably be copies from there with modifications. The filtering on the allele could be done by first turning each prediction algorithm name into a class (cls = globals()['prediction_algorithm_name']) and then calling cls.valid_allele_names() on it and checking if the specified allele is in the list. For the species filter one could call cls.species_for_allele(allele) on each of them and check the return value against the specified species.

To enable the new command in the pvacseq|fuse|bind|vector command line tree, the new command would need to be added to each main.py file and a valid_algorithms.py file added to each of these folder. The pvactools/tools/pvacseq/valid_alleles.py file can be used for guidance here. The init.py files would also need to be amended to add modules to the import list.

These commands would need to be tested, which can be done by modifying the test_pvacseq.py file (and the test file for the other modules). These files have examples for testing the valid_alleles command and the valid_algorithms tests should work similarly.

Lastly, the new commands should be added to the docs. There is a additional_commands.rst file under docs/pvacseq|fuse|bind|vector that will need to be modified. These files have examples on how the valid_alleles command is documented and the docs for the valid_algorithms command can work off of that.