This notebook performs a simple NCBI BLASTn (Altschul et al. 1990) against two miRNA databases to attempt to identify miRNA in P.meandrina sRNAseq:

Relies on the following software:

  • fastx_toolkit

    • fastx_collapser: Collapses duplicate sequences in FastA/Q into single sequence.

1 Create a Bash variables file

This allows usage of Bash variables across R Markdown chunks.

{
echo "#### Assign Variables ####"
echo ""

echo "# Trimmed FastQ naming pattern"
echo "export trimmed_fastqs_pattern='*31bp-merged.fq'"

echo "# Data directories"
echo 'export deep_dive_dir=/home/shared/8TB_HDD_02/shedurkin/deep-dive'
echo 'export deep_dive_data_dir="${deep_dive_dir}/data"'
echo 'export output_dir_top=${deep_dive_dir}/F-Pmea/output/10.2-Pmea-sRNAseq-BLASTn-31bp-fastp-merged'
echo 'export trimmed_fastqs_dir="${deep_dive_dir}/F-Pmea/output/08.2-Pmea-sRNAseq-trimming-31bp-fastp-merged/trimmed-reads"'
echo 'export blast_dbs_dir="${deep_dive_dir}/data/blast_dbs"'
echo ""

echo "# Input/Output files"
echo 'export collapsed_reads_fasta="collapsed-reads-all.fasta"'
echo 'export concatenated_trimmed_reads_fastq="concatenated-trimmed-reads-all.fastq.gz"'
echo 'export mirbase_mature_fasta_name="mirbase-mature-v22.1.fa"'
echo 'export mirbase_mature_fasta_no_U="mirbase-mature-v22.1-no_U.fa"'
echo 'export mirgene_mature_fasta_name="mirgene-mature-all-v2.1.fa"'
echo 'export mirgene_mature_fasta_no_U="mirgene-mature-all-v2.1-no_U.fa"'
echo ""

echo "# External data URLs"
echo 'export mirgenedb_fasta_url="https://www.mirgenedb.org/fasta/ALL?mat=1"'
echo ""

echo "# Paths to programs"
echo 'export ncbi_blast_dir="/home/shared/ncbi-blast-2.15.0+/bin/"'
echo 'export ncbi_blastn="${ncbi_blast_dir}/blastn"'
echo 'export ncbi_makeblast_db="${ncbi_blast_dir}/makeblastdb"'
echo 'export fastx_collapser="/home/shared/fastx_toolkit_0.0.13_binaries_Linux_2.6_amd64/bin/fastx_collapser"'

echo "# Set number of CPUs to use"
echo 'export threads=46'
echo ""

echo "# Initialize arrays"
echo 'export trimmed_fastqs_array=()'


} > .bashvars

cat .bashvars
#### Assign Variables ####

# Trimmed FastQ naming pattern
export trimmed_fastqs_pattern='*31bp-merged.fq'
# Data directories
export deep_dive_dir=/home/shared/8TB_HDD_02/shedurkin/deep-dive
export deep_dive_data_dir="${deep_dive_dir}/data"
export output_dir_top=${deep_dive_dir}/F-Pmea/output/10.2-Pmea-sRNAseq-BLASTn-31bp-fastp-merged
export trimmed_fastqs_dir="${deep_dive_dir}/F-Pmea/output/08.2-Pmea-sRNAseq-trimming-31bp-fastp-merged/trimmed-reads"
export blast_dbs_dir="${deep_dive_dir}/data/blast_dbs"

# Input/Output files
export collapsed_reads_fasta="collapsed-reads-all.fasta"
export concatenated_trimmed_reads_fastq="concatenated-trimmed-reads-all.fastq.gz"
export mirbase_mature_fasta_name="mirbase-mature-v22.1.fa"
export mirbase_mature_fasta_no_U="mirbase-mature-v22.1-no_U.fa"
export mirgene_mature_fasta_name="mirgene-mature-all-v2.1.fa"
export mirgene_mature_fasta_no_U="mirgene-mature-all-v2.1-no_U.fa"

# External data URLs
export mirgenedb_fasta_url="https://www.mirgenedb.org/fasta/ALL?mat=1"

# Paths to programs
export ncbi_blast_dir="/home/shared/ncbi-blast-2.15.0+/bin/"
export ncbi_blastn="${ncbi_blast_dir}/blastn"
export ncbi_makeblast_db="${ncbi_blast_dir}/makeblastdb"
export fastx_collapser="/home/shared/fastx_toolkit_0.0.13_binaries_Linux_2.6_amd64/bin/fastx_collapser"
# Set number of CPUs to use
export threads=46

# Initialize arrays
export trimmed_fastqs_array=()

2 Download MirGeneDB Fasta

# Load bash variables into memory
source .bashvars

wget \
--no-check-certificate \
--continue \
--no-host-directories \
--no-directories \
--no-parent \
--quiet \
--execute robots=off \
--output-document ${deep_dive_data_dir}/${mirgene_mature_fasta_name} \
 ${mirgenedb_fasta_url}
 
 ls -lh ${deep_dive_data_dir}
total 17M
drwxr-xr-x 2 shedurkin labmembers 4.0K Nov 14 09:39 blast_dbs
-rw-r--r-- 1 shedurkin labmembers 3.8M Apr 11 10:12 cnidarian-mirbase-mature-v22.1.fasta
-rw-r--r-- 1 shedurkin labmembers  44K Apr 11 10:12 cnidarian_miRNAs.fasta
-rw-r--r-- 1 shedurkin labmembers 3.7M Apr 11 10:38 mirbase-mature-v22.1.fa
-rw-r--r-- 1 shedurkin labmembers 3.7M Apr 17 09:30 mirbase-mature-v22.1-no_spaces.fa
-rw-r--r-- 1 shedurkin labmembers 3.7M Apr 19 07:38 mirbase-mature-v22.1-no_U.fa
-rw-r--r-- 1 shedurkin labmembers 726K Nov 14 09:39 mirgene-mature-all-v2.1.fa
-rw-r--r-- 1 shedurkin labmembers 726K Apr 19 07:38 mirgene-mature-all-v2.1-no_U.fa

2.1 Inspect miRNA FastAs

# Load bash variables into memory
source .bashvars

head "${deep_dive_data_dir}"/mir*.fa
==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/data/mirbase-mature-v22.1.fa <==
>cel-let-7-5p MIMAT0000001 Caenorhabditis elegans let-7-5p
UGAGGUAGUAGGUUGUAUAGUU
>cel-let-7-3p MIMAT0015091 Caenorhabditis elegans let-7-3p
CUAUGCAAUUUUCUACCUUACC
>cel-lin-4-5p MIMAT0000002 Caenorhabditis elegans lin-4-5p
UCCCUGAGACCUCAAGUGUGA
>cel-lin-4-3p MIMAT0015092 Caenorhabditis elegans lin-4-3p
ACACCUGGGCUCUCCGGGUACC
>cel-miR-1-5p MIMAT0020301 Caenorhabditis elegans miR-1-5p
CAUACUUCCUUACAUGCCCAUA

==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/data/mirbase-mature-v22.1-no_spaces.fa <==
>cel-let-7-5p_MIMAT0000001_Caenorhabditis_elegans_let-7-5p
UGAGGUAGUAGGUUGUAUAGUU
>cel-let-7-3p_MIMAT0015091_Caenorhabditis_elegans_let-7-3p
CUAUGCAAUUUUCUACCUUACC
>cel-lin-4-5p_MIMAT0000002_Caenorhabditis_elegans_lin-4-5p
UCCCUGAGACCUCAAGUGUGA
>cel-lin-4-3p_MIMAT0015092_Caenorhabditis_elegans_lin-4-3p
ACACCUGGGCUCUCCGGGUACC
>cel-miR-1-5p_MIMAT0020301_Caenorhabditis_elegans_miR-1-5p
CAUACUUCCUUACAUGCCCAUA

==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/data/mirbase-mature-v22.1-no_U.fa <==
>cel-let-7-5p MIMAT0000001 Caenorhabditis elegans let-7-5p
TGAGGTAGTAGGTTGTATAGTT
>cel-let-7-3p MIMAT0015091 Caenorhabditis elegans let-7-3p
CTATGCAATTTTCTACCTTACC
>cel-lin-4-5p MIMAT0000002 Caenorhabditis elegans lin-4-5p
TCCCTGAGACCTCAAGTGTGA
>cel-lin-4-3p MIMAT0015092 Caenorhabditis elegans lin-4-3p
ACACCTGGGCTCTCCGGGTACC
>cel-miR-1-5p MIMAT0020301 Caenorhabditis elegans miR-1-5p
CATACTTCCTTACATGCCCATA

==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/data/mirgene-mature-all-v2.1.fa <==
>Aae-Bantam_3p
UGAGAUCAUUUUGAAAGCUGAUU
>Bge-Bantam_3p
UGAGAUCAUUGUGAAAGCUGAUU
>Bpl-Bantam_3p
UGAGAUCAUUGUGAAAACUGAU
>Cgi-Bantam_3p
UGAGAUCAUUGUGAAAACUGAUU
>Cte-Bantam_3p
UGAGAUCAUUGUGAAAACUAAUC

==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/data/mirgene-mature-all-v2.1-no_U.fa <==
>Aae-Bantam_3p
TGAGATCATTTTGAAAGCTGATT
>Bge-Bantam_3p
TGAGATCATTGTGAAAGCTGATT
>Bpl-Bantam_3p
TGAGATCATTGTGAAAACTGAT
>Cgi-Bantam_3p
TGAGATCATTGTGAAAACTGATT
>Cte-Bantam_3p
TGAGATCATTGTGAAAACTAATC

3 Convert U to T in miRNA FastAs

This is needed because the sRNAseq sequences do not have uracils (U) - they have thymines (T).

# Load bash variables into memory
source .bashvars

# Convert miRBase FastA
sed '/^[^>]/s/U/T/g' "${deep_dive_data_dir}/${mirbase_mature_fasta_name}" \
> "${deep_dive_data_dir}/${mirbase_mature_fasta_no_U}"

# Convert MirGene FastA
sed '/^[^>]/s/U/T/g' "${deep_dive_data_dir}/${mirgene_mature_fasta_name}" \
> "${deep_dive_data_dir}/${mirgene_mature_fasta_no_U}"

head ${deep_dive_data_dir}/*.fa
  
==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/data/mirbase-mature-v22.1.fa <==
>cel-let-7-5p MIMAT0000001 Caenorhabditis elegans let-7-5p
UGAGGUAGUAGGUUGUAUAGUU
>cel-let-7-3p MIMAT0015091 Caenorhabditis elegans let-7-3p
CUAUGCAAUUUUCUACCUUACC
>cel-lin-4-5p MIMAT0000002 Caenorhabditis elegans lin-4-5p
UCCCUGAGACCUCAAGUGUGA
>cel-lin-4-3p MIMAT0015092 Caenorhabditis elegans lin-4-3p
ACACCUGGGCUCUCCGGGUACC
>cel-miR-1-5p MIMAT0020301 Caenorhabditis elegans miR-1-5p
CAUACUUCCUUACAUGCCCAUA

==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/data/mirbase-mature-v22.1-no_spaces.fa <==
>cel-let-7-5p_MIMAT0000001_Caenorhabditis_elegans_let-7-5p
UGAGGUAGUAGGUUGUAUAGUU
>cel-let-7-3p_MIMAT0015091_Caenorhabditis_elegans_let-7-3p
CUAUGCAAUUUUCUACCUUACC
>cel-lin-4-5p_MIMAT0000002_Caenorhabditis_elegans_lin-4-5p
UCCCUGAGACCUCAAGUGUGA
>cel-lin-4-3p_MIMAT0015092_Caenorhabditis_elegans_lin-4-3p
ACACCUGGGCUCUCCGGGUACC
>cel-miR-1-5p_MIMAT0020301_Caenorhabditis_elegans_miR-1-5p
CAUACUUCCUUACAUGCCCAUA

==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/data/mirbase-mature-v22.1-no_U.fa <==
>cel-let-7-5p MIMAT0000001 Caenorhabditis elegans let-7-5p
TGAGGTAGTAGGTTGTATAGTT
>cel-let-7-3p MIMAT0015091 Caenorhabditis elegans let-7-3p
CTATGCAATTTTCTACCTTACC
>cel-lin-4-5p MIMAT0000002 Caenorhabditis elegans lin-4-5p
TCCCTGAGACCTCAAGTGTGA
>cel-lin-4-3p MIMAT0015092 Caenorhabditis elegans lin-4-3p
ACACCTGGGCTCTCCGGGTACC
>cel-miR-1-5p MIMAT0020301 Caenorhabditis elegans miR-1-5p
CATACTTCCTTACATGCCCATA

==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/data/mirgene-mature-all-v2.1.fa <==
>Aae-Bantam_3p
UGAGAUCAUUUUGAAAGCUGAUU
>Bge-Bantam_3p
UGAGAUCAUUGUGAAAGCUGAUU
>Bpl-Bantam_3p
UGAGAUCAUUGUGAAAACUGAU
>Cgi-Bantam_3p
UGAGAUCAUUGUGAAAACUGAUU
>Cte-Bantam_3p
UGAGAUCAUUGUGAAAACUAAUC

==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/data/mirgene-mature-all-v2.1-no_U.fa <==
>Aae-Bantam_3p
TGAGATCATTTTGAAAGCTGATT
>Bge-Bantam_3p
TGAGATCATTGTGAAAGCTGATT
>Bpl-Bantam_3p
TGAGATCATTGTGAAAACTGAT
>Cgi-Bantam_3p
TGAGATCATTGTGAAAACTGATT
>Cte-Bantam_3p
TGAGATCATTGTGAAAACTAATC

4 Create BLAST Databases

# Load bash variables into memory
source .bashvars



# miRBase BLAST DB
## Make sure output directory exists
if [ ! -d "${blast_dbs_dir}" ]; then
  mkdir --parents "${blast_dbs_dir}"
fi

## Check for pre-exising database
if [ ! -f "${blast_dbs_dir}/${mirgene_mature_fasta_no_U%.*}.blastdb.log" ]; then
  ${ncbi_makeblast_db} \
  -in ${deep_dive_data_dir}/${mirgene_mature_fasta_no_U} \
  -title ${mirgene_mature_fasta_no_U%.*} \
  -dbtype nucl \
  -out ${blast_dbs_dir}/${mirgene_mature_fasta_no_U%.*} \
  -logfile ${blast_dbs_dir}/${mirgene_mature_fasta_no_U%.*}.blastdb.log
fi

# miRBase BLAST DB
## Make sure output directory exists
if [ ! -d "${blast_dbs_dir}" ]; then
  mkdir --parents "${blast_dbs_dir}"
fi

## Check for pre-exising database
if [ ! -f "${blast_dbs_dir}/${mirbase_mature_fasta_no_U%.*}.blastdb.log" ]; then
  ${ncbi_makeblast_db} \
  -in ${deep_dive_data_dir}/${mirbase_mature_fasta_no_U} \
  -title ${mirbase_mature_fasta_no_U%.*} \
  -dbtype nucl \
  -out ${blast_dbs_dir}/${mirbase_mature_fasta_no_U%.*} \
  -logfile ${blast_dbs_dir}/${mirbase_mature_fasta_no_U%.*}.blastdb.log
fi

5 Prepare reads for BLASTing

5.1 Concatenate all trimmed reads

# Load bash variables into memory
source .bashvars

# Check for existence of concatenated FastA before running
if [ ! -f "${output_dir_top}/${concatenated_trimmed_reads_fastq}" ]; then
  cat ${trimmed_fastqs_dir}/${trimmed_fastqs_pattern}.gz \
  > "${output_dir_top}/${concatenated_trimmed_reads_fastq}"
fi

ls -lh "${output_dir_top}/${concatenated_trimmed_reads_fastq}"
-rw-r--r-- 1 shedurkin labmembers 1.1G Apr 18 14:41 /home/shared/8TB_HDD_02/shedurkin/deep-dive/F-Pmea/output/10.2-Pmea-sRNAseq-BLASTn-31bp-fastp-merged/concatenated-trimmed-reads-all.fastq.gz

5.2 Collapse reads to FastA

Uses fastx_collapser to collapse to unique reads.

Requires undocumented quality setting. Have selected 30 as cuttoff: -Q30.

# Load bash variables into memory
source .bashvars

# Check for existence of collapsed FastA before running
time \
if [ ! -f "${output_dir_top}/${collapsed_reads_fasta}" ]; then
  zcat ${output_dir_top}/${concatenated_trimmed_reads_fastq} \
  | ${fastx_collapser} \
  -Q30 \
  -o "${output_dir_top}/${collapsed_reads_fasta}"
fi

head "${output_dir_top}/${collapsed_reads_fasta}"

real    0m0.000s
user    0m0.000s
sys 0m0.000s
>1-10257663
TGAAAATCTTTGCTCTGAAGTGGAA
>2-2952210
CTCGGGCTGAGACTTGAAGCG
>3-1527059
GCACTGGTGGTTCAGTGGTAGAATTCTC
>4-1205244
GCACTGGTGGTTCAGTGGTAGAATTCTCGCC
>5-1189262
CTCGGGCTGAGACTTGAAGCA

6 Run BLASTn Default E-value

  • 1000 for blastn-short

Runs BLASTn using the blastn-short task for sequences < 30bp.

Look for top match (-max_hsps 1 & -max_target_seqs 1) for each query.

  • Suppress subsequent warning Examining 5 or more matches is recommended by redirecting stdout: 2> /dev/null

6.1 miRBase BLASTn Default e-value

# Load bash variables into memory
source .bashvars

time \
${ncbi_blastn} \
-db ${blast_dbs_dir}/${mirbase_mature_fasta_no_U%.*} \
-query ${output_dir_top}/${collapsed_reads_fasta} \
-out ${output_dir_top}/miRBase-BLASTn-eval_1000.outfmt6 \
-task blastn-short \
-max_hsps 1 \
-max_target_seqs 1 \
-outfmt 6 \
-num_threads ${threads} \
2> /dev/null

6.2 MirGene BLASTn Default e-value

# Load bash variables into memory
source .bashvars

time \
${ncbi_blastn} \
-db ${blast_dbs_dir}/${mirgene_mature_fasta_no_U%.*} \
-query ${output_dir_top}/${collapsed_reads_fasta} \
-out ${output_dir_top}/MirGene-BLASTn-eval_1000.outfmt6 \
-task blastn-short \
-max_hsps 1 \
-max_target_seqs 1 \
-outfmt 6 \
-num_threads ${threads} \
2> /dev/null

7 BLASTn E-value = 10

Running this for simple comparison to the defaul blastn-short value of 1000.

7.1 miRBase BLASTn e-value = 10

# Load bash variables into memory
source .bashvars

time \
${ncbi_blastn} \
-db ${blast_dbs_dir}/${mirbase_mature_fasta_no_U%.*} \
-query ${output_dir_top}/${collapsed_reads_fasta} \
-out ${output_dir_top}/miRBase-BLASTn-eval_10.outfmt6 \
-task blastn-short \
-evalue 10 \
-max_hsps 1 \
-max_target_seqs 1 \
-outfmt 6 \
-num_threads ${threads} \
2> /dev/null

7.2 MirGene BLASTn e-value = 10

# Load bash variables into memory
source .bashvars

time \
${ncbi_blastn} \
-db ${blast_dbs_dir}/${mirgene_mature_fasta_no_U%.*} \
-query ${output_dir_top}/${collapsed_reads_fasta} \
-out ${output_dir_top}/MirGene-BLASTn-eval_10.outfmt6 \
-task blastn-short \
-evalue 10 \
-max_hsps 1 \
-max_target_seqs 1 \
-outfmt 6 \
-num_threads ${threads} \
2> /dev/null

8 Results

8.1 Check BLASTn Default e-value results

# Load bash variables into memory
source .bashvars

head ${output_dir_top}/*eval_1000.outfmt6

echo ""
echo "-----------------------------------------"
echo ""

wc -l ${output_dir_top}/*eval_1000.outfmt6
==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/F-Pmea/output/10.2-Pmea-sRNAseq-BLASTn-31bp-fastp-merged/miRBase-BLASTn-eval_1000.outfmt6 <==
1-10257663  ssc-miR-7143-5p 100.000 11  0   0   12  22  8   18  1.4 22.3
2-2952210   cpo-miR-1379-5p 100.000 12  0   0   1   12  18  7   0.26    24.3
3-1527059   ppc-miR-8214-5p 100.000 13  0   0   12  24  18  6   0.11    26.3
4-1205244   ppc-miR-8214-5p 100.000 13  0   0   12  24  18  6   0.11    26.3
5-1189262   cpo-miR-1379-5p 100.000 12  0   0   1   12  18  7   0.26    24.3
6-630167    cpo-miR-509c-3p 100.000 12  0   0   13  24  8   19  0.36    24.3
7-548099    ppc-miR-8214-5p 100.000 13  0   0   12  24  18  6   0.11    26.3
8-512116    hpo-miR-10025-5p    100.000 10  0   0   11  20  17  8   4.9 20.3
9-432671    cpo-miR-1379-5p 100.000 12  0   0   1   12  18  7   0.34    24.3
10-407718   ppc-miR-8214-5p 100.000 13  0   0   12  24  18  6   0.11    26.3

==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/F-Pmea/output/10.2-Pmea-sRNAseq-BLASTn-31bp-fastp-merged/MirGene-BLASTn-eval_1000.outfmt6 <==
1-10257663  Tca-Mir-87-P2_3p    100.000 11  0   0   5   15  13  3   0.54    22.3
2-2952210   Ovu-Novel-55_5p 100.000 9   0   0   10  18  14  6   7.3 18.3
3-1527059   Pma-Mir-96-P3o2_5p  100.000 11  0   0   16  26  9   19  0.66    22.3
4-1205244   Pma-Mir-96-P3o2_5p  100.000 11  0   0   16  26  9   19  0.78    22.3
5-1189262   Obi-Novel-51_3p 100.000 9   0   0   5   13  7   15  7.3 18.3
6-630167    Cpo-Mir-506-o3_3p   100.000 12  0   0   13  24  8   19  0.14    24.3
7-548099    Pma-Mir-96-P3o2_5p  100.000 11  0   0   16  26  9   19  0.62    22.3
8-512116    Ovu-Novel-18_5p 92.308  13  1   0   7   19  21  9   8.6 18.3
9-432671    Mml-Mir-2114_5p 100.000 11  0   0   13  23  11  21  0.51    22.3
10-407718   Pma-Mir-96-P3o2_5p  100.000 11  0   0   16  26  9   19  0.78    22.3

-----------------------------------------

  6393700 /home/shared/8TB_HDD_02/shedurkin/deep-dive/F-Pmea/output/10.2-Pmea-sRNAseq-BLASTn-31bp-fastp-merged/miRBase-BLASTn-eval_1000.outfmt6
  6393700 /home/shared/8TB_HDD_02/shedurkin/deep-dive/F-Pmea/output/10.2-Pmea-sRNAseq-BLASTn-31bp-fastp-merged/MirGene-BLASTn-eval_1000.outfmt6
 12787400 total

8.2 Check BLASTn e-value = 10 results

# Load bash variables into memory
source .bashvars

head ${output_dir_top}/*eval_10.outfmt6

echo ""
echo "-----------------------------------------"
echo ""

wc -l ${output_dir_top}/*eval_10.outfmt6
==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/F-Pmea/output/10.2-Pmea-sRNAseq-BLASTn-31bp-fastp-merged/miRBase-BLASTn-eval_10.outfmt6 <==
1-10257663  ssc-miR-7143-5p 100.000 11  0   0   12  22  8   18  1.4 22.3
2-2952210   cpo-miR-1379-5p 100.000 12  0   0   1   12  18  7   0.26    24.3
3-1527059   ppc-miR-8214-5p 100.000 13  0   0   12  24  18  6   0.11    26.3
4-1205244   ppc-miR-8214-5p 100.000 13  0   0   12  24  18  6   0.11    26.3
5-1189262   cpo-miR-1379-5p 100.000 12  0   0   1   12  18  7   0.26    24.3
6-630167    cpo-miR-509c-3p 100.000 12  0   0   13  24  8   19  0.36    24.3
7-548099    ppc-miR-8214-5p 100.000 13  0   0   12  24  18  6   0.11    26.3
8-512116    hpo-miR-10025-5p    100.000 10  0   0   11  20  17  8   4.9 20.3
9-432671    cpo-miR-1379-5p 100.000 12  0   0   1   12  18  7   0.34    24.3
10-407718   ppc-miR-8214-5p 100.000 13  0   0   12  24  18  6   0.11    26.3

==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/F-Pmea/output/10.2-Pmea-sRNAseq-BLASTn-31bp-fastp-merged/MirGene-BLASTn-eval_10.outfmt6 <==
1-10257663  Tca-Mir-87-P2_3p    100.000 11  0   0   5   15  13  3   0.54    22.3
2-2952210   Ovu-Novel-55_5p 100.000 9   0   0   10  18  14  6   7.3 18.3
3-1527059   Pma-Mir-96-P3o2_5p  100.000 11  0   0   16  26  9   19  0.66    22.3
4-1205244   Pma-Mir-96-P3o2_5p  100.000 11  0   0   16  26  9   19  0.78    22.3
5-1189262   Obi-Novel-51_3p 100.000 9   0   0   5   13  7   15  7.3 18.3
6-630167    Cpo-Mir-506-o3_3p   100.000 12  0   0   13  24  8   19  0.14    24.3
7-548099    Pma-Mir-96-P3o2_5p  100.000 11  0   0   16  26  9   19  0.62    22.3
8-512116    Ovu-Novel-18_5p 92.308  13  1   0   7   19  21  9   8.6 18.3
9-432671    Mml-Mir-2114_5p 100.000 11  0   0   13  23  11  21  0.51    22.3
10-407718   Pma-Mir-96-P3o2_5p  100.000 11  0   0   16  26  9   19  0.78    22.3

-----------------------------------------

  6366385 /home/shared/8TB_HDD_02/shedurkin/deep-dive/F-Pmea/output/10.2-Pmea-sRNAseq-BLASTn-31bp-fastp-merged/miRBase-BLASTn-eval_10.outfmt6
  6010885 /home/shared/8TB_HDD_02/shedurkin/deep-dive/F-Pmea/output/10.2-Pmea-sRNAseq-BLASTn-31bp-fastp-merged/MirGene-BLASTn-eval_10.outfmt6
 12377270 total

The default e-value results in alignments for all query sequences, which is likely not what we’d expect.

Decreasing the e-value resulted in fewer queary alignments, as we’d expect.

For further analysis, we should probably discuss a reasonable e-value to use for filtering.


Citations

Altschul, Stephen F., Warren Gish, Webb Miller, Eugene W. Myers, and David J. Lipman. 1990. “Basic Local Alignment Search Tool.” Journal of Molecular Biology 215 (3): 403–10. https://doi.org/10.1016/s0022-2836(05)80360-2.
LS0tCnRpdGxlOiAiMTAuMi1QbWVhLXNSTkFzZXEtQkxBU1RuLTMxYnAtZmFzdHAtbWVyZ2VkIgphdXRob3I6ICJTYW0gV2hpdGUgKG1vZGlmaWVkIGJ5IEsgRHVya2luIGZvciBQLiBtZWFuZHJpbmEgYW5hbHlzaXMpIgpkYXRlOiAiMjAyNC0wNC0xOCIKb3V0cHV0OiAKICBib29rZG93bjo6aHRtbF9kb2N1bWVudDI6CiAgICB0aGVtZTogY29zbW8KICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUKICAgIGNvZGVfZm9sZGluZzogc2hvdwogICAgY29kZV9kb3dubG9hZDogdHJ1ZQogIGdpdGh1Yl9kb2N1bWVudDoKICAgIHRvYzogdHJ1ZQogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlCiAgaHRtbF9kb2N1bWVudDoKICAgIHRoZW1lOiBjb3NtbwogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQogICAgY29kZV9mb2xkaW5nOiBzaG93CiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlCmJpYmxpb2dyYXBoeTogL2hvbWUvc2hhcmVkLzhUQl9IRERfMDIvc2hlZHVya2luL2RlZXAtZGl2ZS9ELUFwdWwvY29kZS9yZWZlcmVuY2VzLmJpYgpsaW5rLWNpdGF0aW9uczogdHJ1ZQotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KGthYmxlRXh0cmEpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkocmV0aWN1bGF0ZSkKa25pdHI6Om9wdHNfY2h1bmskc2V0KAogIGVjaG8gPSBUUlVFLCAgICAgICAgICMgRGlzcGxheSBjb2RlIGNodW5rcwogIGV2YWwgPSBGQUxTRSwgICAgICAgICMgRXZhbHVhdGUgY29kZSBjaHVua3MKICB3YXJuaW5nID0gRkFMU0UsICAgICAjIEhpZGUgd2FybmluZ3MKICBtZXNzYWdlID0gRkFMU0UsICAgICAjIEhpZGUgbWVzc2FnZXMKICBjb21tZW50ID0gIiIsICAgICAgICAjIFByZXZlbnRzIGFwcGVuZGluZyAnIyMnIHRvIGJlZ2lubmluZyBvZiBsaW5lcyBpbiBjb2RlIG91dHB1dAogIHdpZHRoID0gMTAwMCAgICAgICAgICMgYWRkcyBzY3JvbGwgYmFyCikKYGBgCgoKVGhpcyBub3RlYm9vayBwZXJmb3JtcyBhIHNpbXBsZSBbTkNCSSBCTEFTVG5dKGh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvYm9va3MvTkJLMjc5NjkwLykgW0BhbHRzY2h1bDE5OTBdIGFnYWluc3QgdHdvIG1pUk5BIGRhdGFiYXNlcyB0byBhdHRlbXB0IHRvIGlkZW50aWZ5IG1pUk5BIGluIF9QLm1lYW5kcmluYV8gc1JOQXNlcToKCi0gW21pUkJhc2VdKGh0dHBzOi8vbWlyYmFzZS5vcmcvZG93bmxvYWQvKQoKLSBbTWlyR2VuZURCXShodHRwczovL3d3dy5taXJnZW5lZGIub3JnL2Rvd25sb2FkKQoKUmVsaWVzIG9uIHRoZSBmb2xsb3dpbmcgc29mdHdhcmU6CiAgCi0gW2Zhc3R4X3Rvb2xraXRdKGh0dHA6Ly9oYW5ub25sYWIuY3NobC5lZHUvZmFzdHhfdG9vbGtpdC8pCgogIC0gYGZhc3R4X2NvbGxhcHNlcmA6IENvbGxhcHNlcyBkdXBsaWNhdGUgc2VxdWVuY2VzIGluIEZhc3RBL1EgaW50byBzaW5nbGUgc2VxdWVuY2UuCgojIENyZWF0ZSBhIEJhc2ggdmFyaWFibGVzIGZpbGUKClRoaXMgYWxsb3dzIHVzYWdlIG9mIEJhc2ggdmFyaWFibGVzIGFjcm9zcyBSIE1hcmtkb3duIGNodW5rcy4KCmBgYHtyIHNhdmUtYmFzaC12YXJpYWJsZXMtdG8tcnZhcnMtZmlsZSwgZW5naW5lPSdiYXNoJywgZXZhbD1UUlVFfQp7CmVjaG8gIiMjIyMgQXNzaWduIFZhcmlhYmxlcyAjIyMjIgplY2hvICIiCgplY2hvICIjIFRyaW1tZWQgRmFzdFEgbmFtaW5nIHBhdHRlcm4iCmVjaG8gImV4cG9ydCB0cmltbWVkX2Zhc3Rxc19wYXR0ZXJuPScqMzFicC1tZXJnZWQuZnEnIgoKZWNobyAiIyBEYXRhIGRpcmVjdG9yaWVzIgplY2hvICdleHBvcnQgZGVlcF9kaXZlX2Rpcj0vaG9tZS9zaGFyZWQvOFRCX0hERF8wMi9zaGVkdXJraW4vZGVlcC1kaXZlJwplY2hvICdleHBvcnQgZGVlcF9kaXZlX2RhdGFfZGlyPSIke2RlZXBfZGl2ZV9kaXJ9L2RhdGEiJwplY2hvICdleHBvcnQgb3V0cHV0X2Rpcl90b3A9JHtkZWVwX2RpdmVfZGlyfS9GLVBtZWEvb3V0cHV0LzEwLjItUG1lYS1zUk5Bc2VxLUJMQVNUbi0zMWJwLWZhc3RwLW1lcmdlZCcKZWNobyAnZXhwb3J0IHRyaW1tZWRfZmFzdHFzX2Rpcj0iJHtkZWVwX2RpdmVfZGlyfS9GLVBtZWEvb3V0cHV0LzA4LjItUG1lYS1zUk5Bc2VxLXRyaW1taW5nLTMxYnAtZmFzdHAtbWVyZ2VkL3RyaW1tZWQtcmVhZHMiJwplY2hvICdleHBvcnQgYmxhc3RfZGJzX2Rpcj0iJHtkZWVwX2RpdmVfZGlyfS9kYXRhL2JsYXN0X2RicyInCmVjaG8gIiIKCmVjaG8gIiMgSW5wdXQvT3V0cHV0IGZpbGVzIgplY2hvICdleHBvcnQgY29sbGFwc2VkX3JlYWRzX2Zhc3RhPSJjb2xsYXBzZWQtcmVhZHMtYWxsLmZhc3RhIicKZWNobyAnZXhwb3J0IGNvbmNhdGVuYXRlZF90cmltbWVkX3JlYWRzX2Zhc3RxPSJjb25jYXRlbmF0ZWQtdHJpbW1lZC1yZWFkcy1hbGwuZmFzdHEuZ3oiJwplY2hvICdleHBvcnQgbWlyYmFzZV9tYXR1cmVfZmFzdGFfbmFtZT0ibWlyYmFzZS1tYXR1cmUtdjIyLjEuZmEiJwplY2hvICdleHBvcnQgbWlyYmFzZV9tYXR1cmVfZmFzdGFfbm9fVT0ibWlyYmFzZS1tYXR1cmUtdjIyLjEtbm9fVS5mYSInCmVjaG8gJ2V4cG9ydCBtaXJnZW5lX21hdHVyZV9mYXN0YV9uYW1lPSJtaXJnZW5lLW1hdHVyZS1hbGwtdjIuMS5mYSInCmVjaG8gJ2V4cG9ydCBtaXJnZW5lX21hdHVyZV9mYXN0YV9ub19VPSJtaXJnZW5lLW1hdHVyZS1hbGwtdjIuMS1ub19VLmZhIicKZWNobyAiIgoKZWNobyAiIyBFeHRlcm5hbCBkYXRhIFVSTHMiCmVjaG8gJ2V4cG9ydCBtaXJnZW5lZGJfZmFzdGFfdXJsPSJodHRwczovL3d3dy5taXJnZW5lZGIub3JnL2Zhc3RhL0FMTD9tYXQ9MSInCmVjaG8gIiIKCmVjaG8gIiMgUGF0aHMgdG8gcHJvZ3JhbXMiCmVjaG8gJ2V4cG9ydCBuY2JpX2JsYXN0X2Rpcj0iL2hvbWUvc2hhcmVkL25jYmktYmxhc3QtMi4xNS4wKy9iaW4vIicKZWNobyAnZXhwb3J0IG5jYmlfYmxhc3RuPSIke25jYmlfYmxhc3RfZGlyfS9ibGFzdG4iJwplY2hvICdleHBvcnQgbmNiaV9tYWtlYmxhc3RfZGI9IiR7bmNiaV9ibGFzdF9kaXJ9L21ha2VibGFzdGRiIicKZWNobyAnZXhwb3J0IGZhc3R4X2NvbGxhcHNlcj0iL2hvbWUvc2hhcmVkL2Zhc3R4X3Rvb2xraXRfMC4wLjEzX2JpbmFyaWVzX0xpbnV4XzIuNl9hbWQ2NC9iaW4vZmFzdHhfY29sbGFwc2VyIicKCmVjaG8gIiMgU2V0IG51bWJlciBvZiBDUFVzIHRvIHVzZSIKZWNobyAnZXhwb3J0IHRocmVhZHM9NDYnCmVjaG8gIiIKCmVjaG8gIiMgSW5pdGlhbGl6ZSBhcnJheXMiCmVjaG8gJ2V4cG9ydCB0cmltbWVkX2Zhc3Rxc19hcnJheT0oKScKCgp9ID4gLmJhc2h2YXJzCgpjYXQgLmJhc2h2YXJzCmBgYAoKCiMgRG93bmxvYWQgTWlyR2VuZURCIEZhc3RhCmBgYHtyIGRvd25sb2FkLW1pcmdlbmUtZGItRmFzdEEsIGVuZ2luZT0nYmFzaCcsIGV2YWw9VFJVRX0KIyBMb2FkIGJhc2ggdmFyaWFibGVzIGludG8gbWVtb3J5CnNvdXJjZSAuYmFzaHZhcnMKCndnZXQgXAotLW5vLWNoZWNrLWNlcnRpZmljYXRlIFwKLS1jb250aW51ZSBcCi0tbm8taG9zdC1kaXJlY3RvcmllcyBcCi0tbm8tZGlyZWN0b3JpZXMgXAotLW5vLXBhcmVudCBcCi0tcXVpZXQgXAotLWV4ZWN1dGUgcm9ib3RzPW9mZiBcCi0tb3V0cHV0LWRvY3VtZW50ICR7ZGVlcF9kaXZlX2RhdGFfZGlyfS8ke21pcmdlbmVfbWF0dXJlX2Zhc3RhX25hbWV9IFwKICR7bWlyZ2VuZWRiX2Zhc3RhX3VybH0KIAogbHMgLWxoICR7ZGVlcF9kaXZlX2RhdGFfZGlyfQpgYGAKCiMjIEluc3BlY3QgbWlSTkEgRmFzdEFzCmBgYHtyIGluc3BlY3QtbWlSTkEtRmFzdEFzLCBlbmdpbmU9J2Jhc2gnLCBldmFsPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgpoZWFkICIke2RlZXBfZGl2ZV9kYXRhX2Rpcn0iL21pciouZmEKYGBgCgoKIyBDb252ZXJ0IGBVYCB0byBgVGAgaW4gbWlSTkEgRmFzdEFzCgpUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSBzUk5Bc2VxIHNlcXVlbmNlcyBkbyBfbm90XyBoYXZlIHVyYWNpbHMgKGBVYCkgLSB0aGV5IGhhdmUgdGh5bWluZXMgKGBUYCkuCgpgYGB7ciBjb252ZXJ0LVUtdG8tVCwgZW5naW5lPSdiYXNoJywgZXZhbD1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKIyBDb252ZXJ0IG1pUkJhc2UgRmFzdEEKc2VkICcvXltePl0vcy9VL1QvZycgIiR7ZGVlcF9kaXZlX2RhdGFfZGlyfS8ke21pcmJhc2VfbWF0dXJlX2Zhc3RhX25hbWV9IiBcCj4gIiR7ZGVlcF9kaXZlX2RhdGFfZGlyfS8ke21pcmJhc2VfbWF0dXJlX2Zhc3RhX25vX1V9IgoKIyBDb252ZXJ0IE1pckdlbmUgRmFzdEEKc2VkICcvXltePl0vcy9VL1QvZycgIiR7ZGVlcF9kaXZlX2RhdGFfZGlyfS8ke21pcmdlbmVfbWF0dXJlX2Zhc3RhX25hbWV9IiBcCj4gIiR7ZGVlcF9kaXZlX2RhdGFfZGlyfS8ke21pcmdlbmVfbWF0dXJlX2Zhc3RhX25vX1V9IgoKaGVhZCAke2RlZXBfZGl2ZV9kYXRhX2Rpcn0vKi5mYQogIApgYGAKCiMgQ3JlYXRlIEJMQVNUIERhdGFiYXNlcwpgYGB7ciBtYWtlLWJsYXN0LWRicywgZW5naW5lPSdiYXNoJywgZXZhbD1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKCgojIG1pUkJhc2UgQkxBU1QgREIKIyMgTWFrZSBzdXJlIG91dHB1dCBkaXJlY3RvcnkgZXhpc3RzCmlmIFsgISAtZCAiJHtibGFzdF9kYnNfZGlyfSIgXTsgdGhlbgogIG1rZGlyIC0tcGFyZW50cyAiJHtibGFzdF9kYnNfZGlyfSIKZmkKCiMjIENoZWNrIGZvciBwcmUtZXhpc2luZyBkYXRhYmFzZQppZiBbICEgLWYgIiR7Ymxhc3RfZGJzX2Rpcn0vJHttaXJnZW5lX21hdHVyZV9mYXN0YV9ub19VJS4qfS5ibGFzdGRiLmxvZyIgXTsgdGhlbgogICR7bmNiaV9tYWtlYmxhc3RfZGJ9IFwKICAtaW4gJHtkZWVwX2RpdmVfZGF0YV9kaXJ9LyR7bWlyZ2VuZV9tYXR1cmVfZmFzdGFfbm9fVX0gXAogIC10aXRsZSAke21pcmdlbmVfbWF0dXJlX2Zhc3RhX25vX1UlLip9IFwKICAtZGJ0eXBlIG51Y2wgXAogIC1vdXQgJHtibGFzdF9kYnNfZGlyfS8ke21pcmdlbmVfbWF0dXJlX2Zhc3RhX25vX1UlLip9IFwKICAtbG9nZmlsZSAke2JsYXN0X2Ric19kaXJ9LyR7bWlyZ2VuZV9tYXR1cmVfZmFzdGFfbm9fVSUuKn0uYmxhc3RkYi5sb2cKZmkKCiMgbWlSQmFzZSBCTEFTVCBEQgojIyBNYWtlIHN1cmUgb3V0cHV0IGRpcmVjdG9yeSBleGlzdHMKaWYgWyAhIC1kICIke2JsYXN0X2Ric19kaXJ9IiBdOyB0aGVuCiAgbWtkaXIgLS1wYXJlbnRzICIke2JsYXN0X2Ric19kaXJ9IgpmaQoKIyMgQ2hlY2sgZm9yIHByZS1leGlzaW5nIGRhdGFiYXNlCmlmIFsgISAtZiAiJHtibGFzdF9kYnNfZGlyfS8ke21pcmJhc2VfbWF0dXJlX2Zhc3RhX25vX1UlLip9LmJsYXN0ZGIubG9nIiBdOyB0aGVuCiAgJHtuY2JpX21ha2VibGFzdF9kYn0gXAogIC1pbiAke2RlZXBfZGl2ZV9kYXRhX2Rpcn0vJHttaXJiYXNlX21hdHVyZV9mYXN0YV9ub19VfSBcCiAgLXRpdGxlICR7bWlyYmFzZV9tYXR1cmVfZmFzdGFfbm9fVSUuKn0gXAogIC1kYnR5cGUgbnVjbCBcCiAgLW91dCAke2JsYXN0X2Ric19kaXJ9LyR7bWlyYmFzZV9tYXR1cmVfZmFzdGFfbm9fVSUuKn0gXAogIC1sb2dmaWxlICR7Ymxhc3RfZGJzX2Rpcn0vJHttaXJiYXNlX21hdHVyZV9mYXN0YV9ub19VJS4qfS5ibGFzdGRiLmxvZwpmaQpgYGAKCgojIFByZXBhcmUgcmVhZHMgZm9yIEJMQVNUaW5nCgojIyBDb25jYXRlbmF0ZSBhbGwgdHJpbW1lZCByZWFkcwpgYGB7ciBjb25jYXRlbmF0ZS10cmltbWVkLXJlYWRzLCBlbmdpbmU9J2Jhc2gnLCBldmFsPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgojIENoZWNrIGZvciBleGlzdGVuY2Ugb2YgY29uY2F0ZW5hdGVkIEZhc3RBIGJlZm9yZSBydW5uaW5nCmlmIFsgISAtZiAiJHtvdXRwdXRfZGlyX3RvcH0vJHtjb25jYXRlbmF0ZWRfdHJpbW1lZF9yZWFkc19mYXN0cX0iIF07IHRoZW4KICBjYXQgJHt0cmltbWVkX2Zhc3Rxc19kaXJ9LyR7dHJpbW1lZF9mYXN0cXNfcGF0dGVybn0uZ3ogXAogID4gIiR7b3V0cHV0X2Rpcl90b3B9LyR7Y29uY2F0ZW5hdGVkX3RyaW1tZWRfcmVhZHNfZmFzdHF9IgpmaQoKbHMgLWxoICIke291dHB1dF9kaXJfdG9wfS8ke2NvbmNhdGVuYXRlZF90cmltbWVkX3JlYWRzX2Zhc3RxfSIKYGBgCgojIyBDb2xsYXBzZSByZWFkcyB0byBGYXN0QQoKVXNlcyBgZmFzdHhfY29sbGFwc2VyYCB0byBjb2xsYXBzZSB0byB1bmlxdWUgcmVhZHMuCgpSZXF1aXJlcyB1bmRvY3VtZW50ZWQgcXVhbGl0eSBzZXR0aW5nLiBIYXZlIHNlbGVjdGVkIGAzMGAgYXMgY3V0dG9mZjogYC1RMzBgLgpgYGB7ciBjb2xsYXBzZS1yZWFkcy10by1GYXN0QSwgZW5naW5lPSdiYXNoJywgZXZhbD1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKIyBDaGVjayBmb3IgZXhpc3RlbmNlIG9mIGNvbGxhcHNlZCBGYXN0QSBiZWZvcmUgcnVubmluZwp0aW1lIFwKaWYgWyAhIC1mICIke291dHB1dF9kaXJfdG9wfS8ke2NvbGxhcHNlZF9yZWFkc19mYXN0YX0iIF07IHRoZW4KICB6Y2F0ICR7b3V0cHV0X2Rpcl90b3B9LyR7Y29uY2F0ZW5hdGVkX3RyaW1tZWRfcmVhZHNfZmFzdHF9IFwKICB8ICR7ZmFzdHhfY29sbGFwc2VyfSBcCiAgLVEzMCBcCiAgLW8gIiR7b3V0cHV0X2Rpcl90b3B9LyR7Y29sbGFwc2VkX3JlYWRzX2Zhc3RhfSIKZmkKCmhlYWQgIiR7b3V0cHV0X2Rpcl90b3B9LyR7Y29sbGFwc2VkX3JlYWRzX2Zhc3RhfSIKYGBgCgojIFJ1biBCTEFTVG4gRGVmYXVsdCBFLXZhbHVlCgotIDEwMDAgZm9yIGJsYXN0bi1zaG9ydAoKUnVucyBCTEFTVG4gdXNpbmcgdGhlIGBibGFzdG4tc2hvcnRgIHRhc2sgZm9yIHNlcXVlbmNlcyA8IDMwYnAuCgpMb29rIGZvciB0b3AgbWF0Y2ggKGAtbWF4X2hzcHMgMWAgJiBgLW1heF90YXJnZXRfc2VxcyAxYCkgZm9yIGVhY2ggcXVlcnkuCgogIC0gU3VwcHJlc3Mgc3Vic2VxdWVudCB3YXJuaW5nIGBFeGFtaW5pbmcgNSBvciBtb3JlIG1hdGNoZXMgaXMgcmVjb21tZW5kZWRgIGJ5CiAgcmVkaXJlY3Rpbmcgc3Rkb3V0OiBgMj4gL2Rldi9udWxsYAoKIyMgbWlSQmFzZSBCTEFTVG4gRGVmYXVsdCBlLXZhbHVlCmBgYHtyIG1pUkJhc2UtQkxBU1RuLWRlZmF1bHQtZXZhbCwgZW5naW5lPSdiYXNoJywgY2FjaGU9VFJVRX0KIyBMb2FkIGJhc2ggdmFyaWFibGVzIGludG8gbWVtb3J5CnNvdXJjZSAuYmFzaHZhcnMKCnRpbWUgXAoke25jYmlfYmxhc3RufSBcCi1kYiAke2JsYXN0X2Ric19kaXJ9LyR7bWlyYmFzZV9tYXR1cmVfZmFzdGFfbm9fVSUuKn0gXAotcXVlcnkgJHtvdXRwdXRfZGlyX3RvcH0vJHtjb2xsYXBzZWRfcmVhZHNfZmFzdGF9IFwKLW91dCAke291dHB1dF9kaXJfdG9wfS9taVJCYXNlLUJMQVNUbi1ldmFsXzEwMDAub3V0Zm10NiBcCi10YXNrIGJsYXN0bi1zaG9ydCBcCi1tYXhfaHNwcyAxIFwKLW1heF90YXJnZXRfc2VxcyAxIFwKLW91dGZtdCA2IFwKLW51bV90aHJlYWRzICR7dGhyZWFkc30gXAoyPiAvZGV2L251bGwKYGBgCgojIyBNaXJHZW5lIEJMQVNUbiBEZWZhdWx0IGUtdmFsdWUKCmBgYHtyIE1pckdlbmUtQkxBU1RuLWRlZmF1bHQtZXZhbCwgZW5naW5lPSdiYXNoJywgY2FjaGU9VFJVRX0KIyBMb2FkIGJhc2ggdmFyaWFibGVzIGludG8gbWVtb3J5CnNvdXJjZSAuYmFzaHZhcnMKCnRpbWUgXAoke25jYmlfYmxhc3RufSBcCi1kYiAke2JsYXN0X2Ric19kaXJ9LyR7bWlyZ2VuZV9tYXR1cmVfZmFzdGFfbm9fVSUuKn0gXAotcXVlcnkgJHtvdXRwdXRfZGlyX3RvcH0vJHtjb2xsYXBzZWRfcmVhZHNfZmFzdGF9IFwKLW91dCAke291dHB1dF9kaXJfdG9wfS9NaXJHZW5lLUJMQVNUbi1ldmFsXzEwMDAub3V0Zm10NiBcCi10YXNrIGJsYXN0bi1zaG9ydCBcCi1tYXhfaHNwcyAxIFwKLW1heF90YXJnZXRfc2VxcyAxIFwKLW91dGZtdCA2IFwKLW51bV90aHJlYWRzICR7dGhyZWFkc30gXAoyPiAvZGV2L251bGwKYGBgCgoKIyBCTEFTVG4gRS12YWx1ZSA9IDEwCgpSdW5uaW5nIHRoaXMgZm9yIHNpbXBsZSBjb21wYXJpc29uIHRvIHRoZSBkZWZhdWwgYGJsYXN0bi1zaG9ydGAgdmFsdWUgb2YgMTAwMC4KCiMjIG1pUkJhc2UgQkxBU1RuIGUtdmFsdWUgPSAxMApgYGB7ciBtaVJCYXNlLUJMQVNUbi0xMC1ldmFsLCBlbmdpbmU9J2Jhc2gnLCBjYWNoZT1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKdGltZSBcCiR7bmNiaV9ibGFzdG59IFwKLWRiICR7Ymxhc3RfZGJzX2Rpcn0vJHttaXJiYXNlX21hdHVyZV9mYXN0YV9ub19VJS4qfSBcCi1xdWVyeSAke291dHB1dF9kaXJfdG9wfS8ke2NvbGxhcHNlZF9yZWFkc19mYXN0YX0gXAotb3V0ICR7b3V0cHV0X2Rpcl90b3B9L21pUkJhc2UtQkxBU1RuLWV2YWxfMTAub3V0Zm10NiBcCi10YXNrIGJsYXN0bi1zaG9ydCBcCi1ldmFsdWUgMTAgXAotbWF4X2hzcHMgMSBcCi1tYXhfdGFyZ2V0X3NlcXMgMSBcCi1vdXRmbXQgNiBcCi1udW1fdGhyZWFkcyAke3RocmVhZHN9IFwKMj4gL2Rldi9udWxsCmBgYAoKIyMgTWlyR2VuZSBCTEFTVG4gZS12YWx1ZSA9IDEwCgpgYGB7ciBNaXJHZW5lLUJMQVNUbi0xMC1ldmFsLCBlbmdpbmU9J2Jhc2gnLCBjYWNoZT1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKdGltZSBcCiR7bmNiaV9ibGFzdG59IFwKLWRiICR7Ymxhc3RfZGJzX2Rpcn0vJHttaXJnZW5lX21hdHVyZV9mYXN0YV9ub19VJS4qfSBcCi1xdWVyeSAke291dHB1dF9kaXJfdG9wfS8ke2NvbGxhcHNlZF9yZWFkc19mYXN0YX0gXAotb3V0ICR7b3V0cHV0X2Rpcl90b3B9L01pckdlbmUtQkxBU1RuLWV2YWxfMTAub3V0Zm10NiBcCi10YXNrIGJsYXN0bi1zaG9ydCBcCi1ldmFsdWUgMTAgXAotbWF4X2hzcHMgMSBcCi1tYXhfdGFyZ2V0X3NlcXMgMSBcCi1vdXRmbXQgNiBcCi1udW1fdGhyZWFkcyAke3RocmVhZHN9IFwKMj4gL2Rldi9udWxsCmBgYAoKIyBSZXN1bHRzCgojIyBDaGVjayBCTEFTVG4gRGVmYXVsdCBlLXZhbHVlIHJlc3VsdHMKYGBge3IgYmxhc3RuLWRlZmF1bHQtZXZhbHVlLXJlc3VsdHMsIGVuZ2luZT0nYmFzaCcsIGV2YWw9VFJVRX0KIyBMb2FkIGJhc2ggdmFyaWFibGVzIGludG8gbWVtb3J5CnNvdXJjZSAuYmFzaHZhcnMKCmhlYWQgJHtvdXRwdXRfZGlyX3RvcH0vKmV2YWxfMTAwMC5vdXRmbXQ2CgplY2hvICIiCmVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgplY2hvICIiCgp3YyAtbCAke291dHB1dF9kaXJfdG9wfS8qZXZhbF8xMDAwLm91dGZtdDYKYGBgCgojIyBDaGVjayBCTEFTVG4gZS12YWx1ZSA9IDEwIHJlc3VsdHMKYGBge3IgYmxhc3RuLTEwLWV2YWx1ZS1yZXN1bHRzLCBlbmdpbmU9J2Jhc2gnLCBldmFsPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgpoZWFkICR7b3V0cHV0X2Rpcl90b3B9LypldmFsXzEwLm91dGZtdDYKCmVjaG8gIiIKZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCmVjaG8gIiIKCndjIC1sICR7b3V0cHV0X2Rpcl90b3B9LypldmFsXzEwLm91dGZtdDYKYGBgCgpUaGUgZGVmYXVsdCBlLXZhbHVlIHJlc3VsdHMgaW4gYWxpZ25tZW50cyBmb3IgYWxsIHF1ZXJ5IHNlcXVlbmNlcywgd2hpY2ggaXMgbGlrZWx5IG5vdCB3aGF0IHdlJ2QgZXhwZWN0LgoKRGVjcmVhc2luZyB0aGUgZS12YWx1ZSByZXN1bHRlZCBpbiBmZXdlciBxdWVhcnkgYWxpZ25tZW50cywgYXMgd2UnZCBleHBlY3QuCgpGb3IgZnVydGhlciBhbmFseXNpcywgd2Ugc2hvdWxkIHByb2JhYmx5IGRpc2N1c3MgYSByZWFzb25hYmxlIGUtdmFsdWUgdG8gdXNlIGZvciBmaWx0ZXJpbmcuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgQ2l0YXRpb25zCg==