Package: biodive
DIVEThe algorithmDIVE is a purely statistical and completely annotation-free algorithm that proposes a new conceptual approach to discovering k-mer sequences associated with high rates of sequence diversification. DIVE is an efficient algorithm designed to identify sequences that may mechanistically cause sequence diversification (e.g., CRISPR repeat or transposon end) and the variable sequences near them, such as an insertion site. The identified sequences are assigned statistical scores for biologists to prioritize them and blasted against a series of FASTA files if desired. For more details, see [1].InstallationpipTo install DIVE simply run the following pip command on the terminal:pipinstallbiodiveTo install blast within the same environment use the following command:condainstall-cbiocondablastgithubTo install DIVE directly from the repository simply run the following commands:gitclonehttps://github.com/jordiabante/biodive.gitcdbiodivecondacreate-nbiodivepython=3.6.8condaactivatebiodivepipinstall-e.To install blast within the same environment use the following command:condainstall-cbiocondablastUsageTo run a single-sample analysis on a compressed FASTQ/FASTA file use# import bio modulefrombiodiveimportbio# define input file and output diroutdir="/path/to/outdir/"infile="/path/to/fastq.gz"# or "/path/to/fasta.gz"# configure runconfig=bio.Config(outdir=outdir,# directory where output files will be storedkmer_size=25,# k-mer size used in the analysisannot_fasta=[]# array containing fasta files to use with blast)# run analysisbio.biodive_single_sample_analysis(infile,config)Iflen(annot_fasta)>0, thenblastmust be available on the path (see installation above).Output filesAnchor sequences tableA table with suffix_anchors.txt.gzis produced containing information about the interesting anchors detected (keys in old convention). The file contains the following columns:sequenceid|assemblyof{anchor1,anchor2,...}|max_c_up|max_n_up|max_efct_sz_up|max_efct_sz_qval_up|max_kmer_up|max_c_dn|max_n_dn|max_efct_sz_dn|max_efct_sz_qval_dn|max_kmer_dn|A%|C%|G%|T%|{anchor1,anchor2,...}whereup/dnindicate the position of the HVR with respect to the anchor and:max_c_*: number of clusters formed for the maximizing anchor in the set in*direction.max_n_*: corresponding number of target sequences observed.max_efct_sz_*: corresponding effect size.max_efct_sz_qval_*: corresponding adjusted p-value.max_kmer_*: corresponding k-mer sequence.If thelen(annot_fasta)>0, then two extra columns will be added to the previous table, for each direction (upstream, downstream) and for each FASTA inannot_fasta, containing the lowest e-value and the corresponding hit in the FASTA (sequence in FASTA resulting in lowest e-value), and the output will be stored in a new table with suffix_anchors_annot.txt.gz(NA will be assigned when e-value>1). For example, if we passannot_fasta=[fasta1]we will see four extra columns:sequenceid|...|{anchor1,anchor2,...}|best_eval_up_fasta1|best_hit_up_fasta1|best_eval_dn_fasta1|best_hit_dn_fasta1The intermediate XML files produced by blast are also stored for further analysis.Re-running annotationIn some cases we might want to update the set of FASTA files we want to blast the results against. Say, for example, that we want to re-run the annotation with FASTA filesf1.fasta,f2.fasta, andf3.fasta, with our outputSRRXYZ_anchors.txt.gz(note the suffix is_anchors.txt.gz). In that case, we can use the following python code:frombiodiveimportbioanchorfile="/path/to/SRRXYZ_anchors.txt.gz"annot_fasta=["/path/to/annotations/f1.fa","/path/to/annotations/f2.fa","/path/to/annotations/f3.fa"]config=bio.Config(annot_fasta=annot_fasta)bio.biodive_single_sample_analysis_annotation(anchorfile,config)Anchor sequences FASTAThree FASTA files are produced:FASTA file with suffix_assemb_anchors.fasta: assembled anchor sequences.FASTA file with suffix_max_anchor_up.fasta: maximizing anchor sequence upstream.FASTA file with suffix_max_anchor_dn.fasta: maximizing anchor sequence downstream.Note that not all anchor sequences in 2 and 3 are necessarily significant.Target sequences tableFor each anchor in the set{anchor1,anchor2,...}, the target sequences are stored in a file with suffix_targets.txt.gzcontaining the following columns:anchor|upstream/downstream|distance|target|numberofinstancesobservedReferences[1] J. Abante, P.L. Wang, J. Salzman.DIVE: a reference-free statistical approach to diversity-generating & mobile genetic element discovery, bioarxiv (2022).