2.5. Extending RNFtools¶
This chapter describes how to develop an extension for a new read simulator.
2.5.1. Step 1: Wrapper of the simulator in RNFtools¶
All wrappers of read simulators are located in this directory: https://github.com/karel-brinda/rnftools/blob/master/rnftools/mishmash/. To create a new wrapper, copy some existing one and modify the code inside.
Method __init__ saves the parameters for a simulation. Some of them are
mandatory (read length, FASTA file of the genome, etc.) and these are passed to
__init__ of the mother abstract class for a simulator.
Method get_input returns list of input files for simulation and one of them
is your program.
Method, create_fq simulates reads (by calling a shell command using
rnftools.utils.shell) and converts the obtained files to RNF-FASTQ.
The previous step should be done using a dedicated static method (typically
named recode_*_reads). All code for conversion should be located in this
method so that it can be used externally without creating an instance of the
class.
When all these functions are created/adjusted, the class should be imported in
__init__.py. Get inspired by existing code, with a high probability only
little changes will be needed.
2.5.2. Step 2: Support in the rnftools program¶
The last step is plugging your converting static function into rnftools
console program, which is contained in this file:
https://github.com/karel-brinda/rnftools/blob/master/rnftools/scripts.py. You
will have to add a new subcommand (which will call the static function) and
create a parser for it. Again, follow existing code.
2.5.3. Step 3: Tests¶
Add corresponding tests (see the test directory).