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='*flexbar_trim.25bp*.fastq.gz'"

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-Pmea-sRNAseq-BLASTn'
echo 'export trimmed_fastqs_dir="${deep_dive_dir}/F-Pmea/output/08-Pmea-sRNAseq-trimming/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='*flexbar_trim.25bp*.fastq.gz'
# 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-Pmea-sRNAseq-BLASTn
export trimmed_fastqs_dir="${deep_dive_dir}/F-Pmea/output/08-Pmea-sRNAseq-trimming/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 13M
drwxr-xr-x 2 shedurkin labmembers 4.0K Nov 14 09:39 blast_dbs
-rw-r--r-- 1 shedurkin labmembers 3.7M Nov 14 09:39 mirbase-mature-v22.1.fa
-rw-r--r-- 1 shedurkin labmembers 3.7M Nov 14 09:39 mirbase-mature-v22.1-no_spaces.fa
-rw-r--r-- 1 shedurkin labmembers 3.7M Nov 14 15:35 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 Nov 14 15:35 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}/*.fastq.gz \
  > "${output_dir_top}/${concatenated_trimmed_reads_fastq}"
fi

ls -lh "${output_dir_top}/${concatenated_trimmed_reads_fastq}"
-rw-r--r-- 1 shedurkin labmembers 2.0G Nov 14 11:56 /home/shared/8TB_HDD_02/shedurkin/deep-dive/F-Pmea/output/10-Pmea-sRNAseq-BLASTn/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-10280803
TGAAAATCTTTGCTCTGAAGTGGAA
>2-10220688
TTCCACTTCAGAGCAAAGATTTTCA
>3-4878221
GCACTGGTGGTTCAGTGGTAGAATT
>4-2964293
CTCGGGCTGAGACTTGAAGCG
>5-2941994
CGCTTCAAGTCTCAGCCCGAG

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-Pmea-sRNAseq-BLASTn/miRBase-BLASTn-eval_1000.outfmt6 <==
1-10280803  ssc-miR-7143-5p 100.000 11  0   0   12  22  8   18  1.4 22.3
2-10220688  ssc-miR-7143-5p 100.000 11  0   0   4   14  18  8   1.4 22.3
3-4878221   ppc-miR-8214-5p 100.000 13  0   0   12  24  18  6   0.092   26.3
4-2964293   cpo-miR-1379-5p 100.000 12  0   0   1   12  18  7   0.26    24.3
5-2941994   cpo-miR-1379-5p 100.000 12  0   0   10  21  7   18  0.26    24.3
6-2745200   pab-miR11514    100.000 10  0   0   4   13  16  7   5.7 20.3
7-2697913   rno-miR-3561-3p 100.000 12  0   0   2   13  10  21  0.36    24.3
8-2084846   hsa-miR-3168    100.000 13  0   0   4   16  13  1   0.092   26.3
9-2015242   efu-miR-9230a   100.000 12  0   0   14  25  2   13  0.36    24.3
10-1645687  ppc-miR-8214-5p 100.000 13  0   0   8   20  6   18  0.092   26.3

==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/F-Pmea/output/10-Pmea-sRNAseq-BLASTn/MirGene-BLASTn-eval_1000.outfmt6 <==
1-10280803  Tca-Mir-87-P2_3p    100.000 11  0   0   5   15  13  3   0.54    22.3
2-10220688  Tca-Mir-87-P2_3p    100.000 11  0   0   11  21  3   13  0.54    22.3
3-4878221   Pma-Mir-96-P3o2_5p  100.000 10  0   0   16  25  9   18  2.2 20.3
4-2964293   Ovu-Novel-55_5p 100.000 9   0   0   10  18  14  6   7.3 18.3
5-2941994   Ovu-Novel-55_5p 100.000 9   0   0   4   12  6   14  7.3 18.3
6-2745200   Ebu-Mir-1329_5p 100.000 10  0   0   4   13  14  23  2.2 20.3
7-2697913   Cin-Mir-4047_5p 100.000 11  0   0   3   13  3   13  0.54    22.3
8-2084846   Hme-Mir-2-P7_3p 100.000 11  0   0   9   19  19  9   0.54    22.3
9-2015242   Cbr-Mir-279-o10_5p  100.000 10  0   0   13  22  11  2   2.2 20.3
10-1645687  Pma-Mir-96-P3o2_5p  100.000 11  0   0   6   16  19  9   0.54    22.3

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

  13777166 /home/shared/8TB_HDD_02/shedurkin/deep-dive/F-Pmea/output/10-Pmea-sRNAseq-BLASTn/miRBase-BLASTn-eval_1000.outfmt6
  13777166 /home/shared/8TB_HDD_02/shedurkin/deep-dive/F-Pmea/output/10-Pmea-sRNAseq-BLASTn/MirGene-BLASTn-eval_1000.outfmt6
  27554332 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-Pmea-sRNAseq-BLASTn/miRBase-BLASTn-eval_10.outfmt6 <==
1-10280803  ssc-miR-7143-5p 100.000 11  0   0   12  22  8   18  1.4 22.3
2-10220688  ssc-miR-7143-5p 100.000 11  0   0   4   14  18  8   1.4 22.3
3-4878221   ppc-miR-8214-5p 100.000 13  0   0   12  24  18  6   0.092   26.3
4-2964293   cpo-miR-1379-5p 100.000 12  0   0   1   12  18  7   0.26    24.3
5-2941994   cpo-miR-1379-5p 100.000 12  0   0   10  21  7   18  0.26    24.3
6-2745200   pab-miR11514    100.000 10  0   0   4   13  16  7   5.7 20.3
7-2697913   rno-miR-3561-3p 100.000 12  0   0   2   13  10  21  0.36    24.3
8-2084846   hsa-miR-3168    100.000 13  0   0   4   16  13  1   0.092   26.3
9-2015242   efu-miR-9230a   100.000 12  0   0   14  25  2   13  0.36    24.3
10-1645687  ppc-miR-8214-5p 100.000 13  0   0   8   20  6   18  0.092   26.3

==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/F-Pmea/output/10-Pmea-sRNAseq-BLASTn/MirGene-BLASTn-eval_10.outfmt6 <==
1-10280803  Tca-Mir-87-P2_3p    100.000 11  0   0   5   15  13  3   0.54    22.3
2-10220688  Tca-Mir-87-P2_3p    100.000 11  0   0   11  21  3   13  0.54    22.3
3-4878221   Pma-Mir-96-P3o2_5p  100.000 10  0   0   16  25  9   18  2.2 20.3
4-2964293   Ovu-Novel-55_5p 100.000 9   0   0   10  18  14  6   7.3 18.3
5-2941994   Ovu-Novel-55_5p 100.000 9   0   0   4   12  6   14  7.3 18.3
6-2745200   Ebu-Mir-1329_5p 100.000 10  0   0   4   13  14  23  2.2 20.3
7-2697913   Cin-Mir-4047_5p 100.000 11  0   0   3   13  3   13  0.54    22.3
8-2084846   Hme-Mir-2-P7_3p 100.000 11  0   0   9   19  19  9   0.54    22.3
9-2015242   Cbr-Mir-279-o10_5p  100.000 10  0   0   13  22  11  2   2.2 20.3
10-1645687  Pma-Mir-96-P3o2_5p  100.000 11  0   0   6   16  19  9   0.54    22.3

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

  13708946 /home/shared/8TB_HDD_02/shedurkin/deep-dive/F-Pmea/output/10-Pmea-sRNAseq-BLASTn/miRBase-BLASTn-eval_10.outfmt6
  13614786 /home/shared/8TB_HDD_02/shedurkin/deep-dive/F-Pmea/output/10-Pmea-sRNAseq-BLASTn/MirGene-BLASTn-eval_10.outfmt6
  27323732 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.
LS0tCnRpdGxlOiAiMTAtUG1lYS1zUk5Bc2VxLUJMQVNUbiIKYXV0aG9yOiAiU2FtIFdoaXRlIChtb2RpZmllZCBieSBLIER1cmtpbiBmb3IgUC4gbWVhbmRyaW5hIGFuYWx5c2lzKSIKZGF0ZTogIjIwMjMtMTEtMTQiCm91dHB1dDogCiAgYm9va2Rvd246Omh0bWxfZG9jdW1lbnQyOgogICAgdGhlbWU6IGNvc21vCiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlCiAgICBjb2RlX2ZvbGRpbmc6IHNob3cKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICBnaXRodWJfZG9jdW1lbnQ6CiAgICB0b2M6IHRydWUKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQogIGh0bWxfZG9jdW1lbnQ6CiAgICB0aGVtZTogY29zbW8KICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUKICAgIGNvZGVfZm9sZGluZzogc2hvdwogICAgY29kZV9kb3dubG9hZDogdHJ1ZQpiaWJsaW9ncmFwaHk6IC9ob21lL3NoYXJlZC84VEJfSEREXzAyL3NoZWR1cmtpbi9kZWVwLWRpdmUvRC1BcHVsL2NvZGUvcmVmZXJlbmNlcy5iaWIKbGluay1jaXRhdGlvbnM6IHRydWUKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KbGlicmFyeShrbml0cikKbGlicmFyeShrYWJsZUV4dHJhKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KHJldGljdWxhdGUpCmtuaXRyOjpvcHRzX2NodW5rJHNldCgKICBlY2hvID0gVFJVRSwgICAgICAgICAjIERpc3BsYXkgY29kZSBjaHVua3MKICBldmFsID0gRkFMU0UsICAgICAgICAjIEV2YWx1YXRlIGNvZGUgY2h1bmtzCiAgd2FybmluZyA9IEZBTFNFLCAgICAgIyBIaWRlIHdhcm5pbmdzCiAgbWVzc2FnZSA9IEZBTFNFLCAgICAgIyBIaWRlIG1lc3NhZ2VzCiAgY29tbWVudCA9ICIiLCAgICAgICAgIyBQcmV2ZW50cyBhcHBlbmRpbmcgJyMjJyB0byBiZWdpbm5pbmcgb2YgbGluZXMgaW4gY29kZSBvdXRwdXQKICB3aWR0aCA9IDEwMDAgICAgICAgICAjIGFkZHMgc2Nyb2xsIGJhcgopCmBgYAoKClRoaXMgbm90ZWJvb2sgcGVyZm9ybXMgYSBzaW1wbGUgW05DQkkgQkxBU1RuXShodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L2Jvb2tzL05CSzI3OTY5MC8pIFtAYWx0c2NodWwxOTkwXSBhZ2FpbnN0IHR3byBtaVJOQSBkYXRhYmFzZXMgdG8gYXR0ZW1wdCB0byBpZGVudGlmeSBtaVJOQSBpbiBfUC5tZWFuZHJpbmFfIHNSTkFzZXE6CgotIFttaVJCYXNlXShodHRwczovL21pcmJhc2Uub3JnL2Rvd25sb2FkLykKCi0gW01pckdlbmVEQl0oaHR0cHM6Ly93d3cubWlyZ2VuZWRiLm9yZy9kb3dubG9hZCkKClJlbGllcyBvbiB0aGUgZm9sbG93aW5nIHNvZnR3YXJlOgogIAotIFtmYXN0eF90b29sa2l0XShodHRwOi8vaGFubm9ubGFiLmNzaGwuZWR1L2Zhc3R4X3Rvb2xraXQvKQoKICAtIGBmYXN0eF9jb2xsYXBzZXJgOiBDb2xsYXBzZXMgZHVwbGljYXRlIHNlcXVlbmNlcyBpbiBGYXN0QS9RIGludG8gc2luZ2xlIHNlcXVlbmNlLgoKIyBDcmVhdGUgYSBCYXNoIHZhcmlhYmxlcyBmaWxlCgpUaGlzIGFsbG93cyB1c2FnZSBvZiBCYXNoIHZhcmlhYmxlcyBhY3Jvc3MgUiBNYXJrZG93biBjaHVua3MuCgpgYGB7ciBzYXZlLWJhc2gtdmFyaWFibGVzLXRvLXJ2YXJzLWZpbGUsIGVuZ2luZT0nYmFzaCcsIGV2YWw9VFJVRX0KewplY2hvICIjIyMjIEFzc2lnbiBWYXJpYWJsZXMgIyMjIyIKZWNobyAiIgoKZWNobyAiIyBUcmltbWVkIEZhc3RRIG5hbWluZyBwYXR0ZXJuIgplY2hvICJleHBvcnQgdHJpbW1lZF9mYXN0cXNfcGF0dGVybj0nKmZsZXhiYXJfdHJpbS4yNWJwKi5mYXN0cS5neiciCgplY2hvICIjIERhdGEgZGlyZWN0b3JpZXMiCmVjaG8gJ2V4cG9ydCBkZWVwX2RpdmVfZGlyPS9ob21lL3NoYXJlZC84VEJfSEREXzAyL3NoZWR1cmtpbi9kZWVwLWRpdmUnCmVjaG8gJ2V4cG9ydCBkZWVwX2RpdmVfZGF0YV9kaXI9IiR7ZGVlcF9kaXZlX2Rpcn0vZGF0YSInCmVjaG8gJ2V4cG9ydCBvdXRwdXRfZGlyX3RvcD0ke2RlZXBfZGl2ZV9kaXJ9L0YtUG1lYS9vdXRwdXQvMTAtUG1lYS1zUk5Bc2VxLUJMQVNUbicKZWNobyAnZXhwb3J0IHRyaW1tZWRfZmFzdHFzX2Rpcj0iJHtkZWVwX2RpdmVfZGlyfS9GLVBtZWEvb3V0cHV0LzA4LVBtZWEtc1JOQXNlcS10cmltbWluZy90cmltbWVkLXJlYWRzIicKZWNobyAnZXhwb3J0IGJsYXN0X2Ric19kaXI9IiR7ZGVlcF9kaXZlX2Rpcn0vZGF0YS9ibGFzdF9kYnMiJwplY2hvICIiCgplY2hvICIjIElucHV0L091dHB1dCBmaWxlcyIKZWNobyAnZXhwb3J0IGNvbGxhcHNlZF9yZWFkc19mYXN0YT0iY29sbGFwc2VkLXJlYWRzLWFsbC5mYXN0YSInCmVjaG8gJ2V4cG9ydCBjb25jYXRlbmF0ZWRfdHJpbW1lZF9yZWFkc19mYXN0cT0iY29uY2F0ZW5hdGVkLXRyaW1tZWQtcmVhZHMtYWxsLmZhc3RxLmd6IicKZWNobyAnZXhwb3J0IG1pcmJhc2VfbWF0dXJlX2Zhc3RhX25hbWU9Im1pcmJhc2UtbWF0dXJlLXYyMi4xLmZhIicKZWNobyAnZXhwb3J0IG1pcmJhc2VfbWF0dXJlX2Zhc3RhX25vX1U9Im1pcmJhc2UtbWF0dXJlLXYyMi4xLW5vX1UuZmEiJwplY2hvICdleHBvcnQgbWlyZ2VuZV9tYXR1cmVfZmFzdGFfbmFtZT0ibWlyZ2VuZS1tYXR1cmUtYWxsLXYyLjEuZmEiJwplY2hvICdleHBvcnQgbWlyZ2VuZV9tYXR1cmVfZmFzdGFfbm9fVT0ibWlyZ2VuZS1tYXR1cmUtYWxsLXYyLjEtbm9fVS5mYSInCmVjaG8gIiIKCmVjaG8gIiMgRXh0ZXJuYWwgZGF0YSBVUkxzIgplY2hvICdleHBvcnQgbWlyZ2VuZWRiX2Zhc3RhX3VybD0iaHR0cHM6Ly93d3cubWlyZ2VuZWRiLm9yZy9mYXN0YS9BTEw/bWF0PTEiJwplY2hvICIiCgplY2hvICIjIFBhdGhzIHRvIHByb2dyYW1zIgplY2hvICdleHBvcnQgbmNiaV9ibGFzdF9kaXI9Ii9ob21lL3NoYXJlZC9uY2JpLWJsYXN0LTIuMTUuMCsvYmluLyInCmVjaG8gJ2V4cG9ydCBuY2JpX2JsYXN0bj0iJHtuY2JpX2JsYXN0X2Rpcn0vYmxhc3RuIicKZWNobyAnZXhwb3J0IG5jYmlfbWFrZWJsYXN0X2RiPSIke25jYmlfYmxhc3RfZGlyfS9tYWtlYmxhc3RkYiInCmVjaG8gJ2V4cG9ydCBmYXN0eF9jb2xsYXBzZXI9Ii9ob21lL3NoYXJlZC9mYXN0eF90b29sa2l0XzAuMC4xM19iaW5hcmllc19MaW51eF8yLjZfYW1kNjQvYmluL2Zhc3R4X2NvbGxhcHNlciInCgplY2hvICIjIFNldCBudW1iZXIgb2YgQ1BVcyB0byB1c2UiCmVjaG8gJ2V4cG9ydCB0aHJlYWRzPTQ2JwplY2hvICIiCgplY2hvICIjIEluaXRpYWxpemUgYXJyYXlzIgplY2hvICdleHBvcnQgdHJpbW1lZF9mYXN0cXNfYXJyYXk9KCknCgoKfSA+IC5iYXNodmFycwoKY2F0IC5iYXNodmFycwpgYGAKCgojIERvd25sb2FkIE1pckdlbmVEQiBGYXN0YQpgYGB7ciBkb3dubG9hZC1taXJnZW5lLWRiLUZhc3RBLCBlbmdpbmU9J2Jhc2gnLCBldmFsPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgp3Z2V0IFwKLS1uby1jaGVjay1jZXJ0aWZpY2F0ZSBcCi0tY29udGludWUgXAotLW5vLWhvc3QtZGlyZWN0b3JpZXMgXAotLW5vLWRpcmVjdG9yaWVzIFwKLS1uby1wYXJlbnQgXAotLXF1aWV0IFwKLS1leGVjdXRlIHJvYm90cz1vZmYgXAotLW91dHB1dC1kb2N1bWVudCAke2RlZXBfZGl2ZV9kYXRhX2Rpcn0vJHttaXJnZW5lX21hdHVyZV9mYXN0YV9uYW1lfSBcCiAke21pcmdlbmVkYl9mYXN0YV91cmx9CiAKIGxzIC1saCAke2RlZXBfZGl2ZV9kYXRhX2Rpcn0KYGBgCgojIyBJbnNwZWN0IG1pUk5BIEZhc3RBcwpgYGB7ciBpbnNwZWN0LW1pUk5BLUZhc3RBcywgZW5naW5lPSdiYXNoJywgZXZhbD1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKaGVhZCAiJHtkZWVwX2RpdmVfZGF0YV9kaXJ9Ii9taXIqLmZhCmBgYAoKCiMgQ29udmVydCBgVWAgdG8gYFRgIGluIG1pUk5BIEZhc3RBcwoKVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgc1JOQXNlcSBzZXF1ZW5jZXMgZG8gX25vdF8gaGF2ZSB1cmFjaWxzIChgVWApIC0gdGhleSBoYXZlIHRoeW1pbmVzIChgVGApLgoKYGBge3IgY29udmVydC1VLXRvLVQsIGVuZ2luZT0nYmFzaCcsIGV2YWw9VFJVRX0KIyBMb2FkIGJhc2ggdmFyaWFibGVzIGludG8gbWVtb3J5CnNvdXJjZSAuYmFzaHZhcnMKCiMgQ29udmVydCBtaVJCYXNlIEZhc3RBCnNlZCAnL15bXj5dL3MvVS9UL2cnICIke2RlZXBfZGl2ZV9kYXRhX2Rpcn0vJHttaXJiYXNlX21hdHVyZV9mYXN0YV9uYW1lfSIgXAo+ICIke2RlZXBfZGl2ZV9kYXRhX2Rpcn0vJHttaXJiYXNlX21hdHVyZV9mYXN0YV9ub19VfSIKCiMgQ29udmVydCBNaXJHZW5lIEZhc3RBCnNlZCAnL15bXj5dL3MvVS9UL2cnICIke2RlZXBfZGl2ZV9kYXRhX2Rpcn0vJHttaXJnZW5lX21hdHVyZV9mYXN0YV9uYW1lfSIgXAo+ICIke2RlZXBfZGl2ZV9kYXRhX2Rpcn0vJHttaXJnZW5lX21hdHVyZV9mYXN0YV9ub19VfSIKCmhlYWQgJHtkZWVwX2RpdmVfZGF0YV9kaXJ9LyouZmEKICAKYGBgCgojIENyZWF0ZSBCTEFTVCBEYXRhYmFzZXMKYGBge3IgbWFrZS1ibGFzdC1kYnMsIGVuZ2luZT0nYmFzaCcsIGV2YWw9VFJVRX0KIyBMb2FkIGJhc2ggdmFyaWFibGVzIGludG8gbWVtb3J5CnNvdXJjZSAuYmFzaHZhcnMKCgoKIyBtaVJCYXNlIEJMQVNUIERCCiMjIE1ha2Ugc3VyZSBvdXRwdXQgZGlyZWN0b3J5IGV4aXN0cwppZiBbICEgLWQgIiR7Ymxhc3RfZGJzX2Rpcn0iIF07IHRoZW4KICBta2RpciAtLXBhcmVudHMgIiR7Ymxhc3RfZGJzX2Rpcn0iCmZpCgojIyBDaGVjayBmb3IgcHJlLWV4aXNpbmcgZGF0YWJhc2UKaWYgWyAhIC1mICIke2JsYXN0X2Ric19kaXJ9LyR7bWlyZ2VuZV9tYXR1cmVfZmFzdGFfbm9fVSUuKn0uYmxhc3RkYi5sb2ciIF07IHRoZW4KICAke25jYmlfbWFrZWJsYXN0X2RifSBcCiAgLWluICR7ZGVlcF9kaXZlX2RhdGFfZGlyfS8ke21pcmdlbmVfbWF0dXJlX2Zhc3RhX25vX1V9IFwKICAtdGl0bGUgJHttaXJnZW5lX21hdHVyZV9mYXN0YV9ub19VJS4qfSBcCiAgLWRidHlwZSBudWNsIFwKICAtb3V0ICR7Ymxhc3RfZGJzX2Rpcn0vJHttaXJnZW5lX21hdHVyZV9mYXN0YV9ub19VJS4qfSBcCiAgLWxvZ2ZpbGUgJHtibGFzdF9kYnNfZGlyfS8ke21pcmdlbmVfbWF0dXJlX2Zhc3RhX25vX1UlLip9LmJsYXN0ZGIubG9nCmZpCgojIG1pUkJhc2UgQkxBU1QgREIKIyMgTWFrZSBzdXJlIG91dHB1dCBkaXJlY3RvcnkgZXhpc3RzCmlmIFsgISAtZCAiJHtibGFzdF9kYnNfZGlyfSIgXTsgdGhlbgogIG1rZGlyIC0tcGFyZW50cyAiJHtibGFzdF9kYnNfZGlyfSIKZmkKCiMjIENoZWNrIGZvciBwcmUtZXhpc2luZyBkYXRhYmFzZQppZiBbICEgLWYgIiR7Ymxhc3RfZGJzX2Rpcn0vJHttaXJiYXNlX21hdHVyZV9mYXN0YV9ub19VJS4qfS5ibGFzdGRiLmxvZyIgXTsgdGhlbgogICR7bmNiaV9tYWtlYmxhc3RfZGJ9IFwKICAtaW4gJHtkZWVwX2RpdmVfZGF0YV9kaXJ9LyR7bWlyYmFzZV9tYXR1cmVfZmFzdGFfbm9fVX0gXAogIC10aXRsZSAke21pcmJhc2VfbWF0dXJlX2Zhc3RhX25vX1UlLip9IFwKICAtZGJ0eXBlIG51Y2wgXAogIC1vdXQgJHtibGFzdF9kYnNfZGlyfS8ke21pcmJhc2VfbWF0dXJlX2Zhc3RhX25vX1UlLip9IFwKICAtbG9nZmlsZSAke2JsYXN0X2Ric19kaXJ9LyR7bWlyYmFzZV9tYXR1cmVfZmFzdGFfbm9fVSUuKn0uYmxhc3RkYi5sb2cKZmkKYGBgCgoKIyBQcmVwYXJlIHJlYWRzIGZvciBCTEFTVGluZwoKIyMgQ29uY2F0ZW5hdGUgYWxsIHRyaW1tZWQgcmVhZHMKYGBge3IgY29uY2F0ZW5hdGUtdHJpbW1lZC1yZWFkcywgZW5naW5lPSdiYXNoJywgZXZhbD1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKIyBDaGVjayBmb3IgZXhpc3RlbmNlIG9mIGNvbmNhdGVuYXRlZCBGYXN0QSBiZWZvcmUgcnVubmluZwppZiBbICEgLWYgIiR7b3V0cHV0X2Rpcl90b3B9LyR7Y29uY2F0ZW5hdGVkX3RyaW1tZWRfcmVhZHNfZmFzdHF9IiBdOyB0aGVuCiAgY2F0ICR7dHJpbW1lZF9mYXN0cXNfZGlyfS8qLmZhc3RxLmd6IFwKICA+ICIke291dHB1dF9kaXJfdG9wfS8ke2NvbmNhdGVuYXRlZF90cmltbWVkX3JlYWRzX2Zhc3RxfSIKZmkKCmxzIC1saCAiJHtvdXRwdXRfZGlyX3RvcH0vJHtjb25jYXRlbmF0ZWRfdHJpbW1lZF9yZWFkc19mYXN0cX0iCmBgYAoKIyMgQ29sbGFwc2UgcmVhZHMgdG8gRmFzdEEKClVzZXMgYGZhc3R4X2NvbGxhcHNlcmAgdG8gY29sbGFwc2UgdG8gdW5pcXVlIHJlYWRzLgoKUmVxdWlyZXMgdW5kb2N1bWVudGVkIHF1YWxpdHkgc2V0dGluZy4gSGF2ZSBzZWxlY3RlZCBgMzBgIGFzIGN1dHRvZmY6IGAtUTMwYC4KYGBge3IgY29sbGFwc2UtcmVhZHMtdG8tRmFzdEEsIGVuZ2luZT0nYmFzaCcsIGV2YWw9VFJVRX0KIyBMb2FkIGJhc2ggdmFyaWFibGVzIGludG8gbWVtb3J5CnNvdXJjZSAuYmFzaHZhcnMKCiMgQ2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiBjb2xsYXBzZWQgRmFzdEEgYmVmb3JlIHJ1bm5pbmcKdGltZSBcCmlmIFsgISAtZiAiJHtvdXRwdXRfZGlyX3RvcH0vJHtjb2xsYXBzZWRfcmVhZHNfZmFzdGF9IiBdOyB0aGVuCiAgemNhdCAke291dHB1dF9kaXJfdG9wfS8ke2NvbmNhdGVuYXRlZF90cmltbWVkX3JlYWRzX2Zhc3RxfSBcCiAgfCAke2Zhc3R4X2NvbGxhcHNlcn0gXAogIC1RMzAgXAogIC1vICIke291dHB1dF9kaXJfdG9wfS8ke2NvbGxhcHNlZF9yZWFkc19mYXN0YX0iCmZpCgpoZWFkICIke291dHB1dF9kaXJfdG9wfS8ke2NvbGxhcHNlZF9yZWFkc19mYXN0YX0iCmBgYAoKIyBSdW4gQkxBU1RuIERlZmF1bHQgRS12YWx1ZQoKLSAxMDAwIGZvciBibGFzdG4tc2hvcnQKClJ1bnMgQkxBU1RuIHVzaW5nIHRoZSBgYmxhc3RuLXNob3J0YCB0YXNrIGZvciBzZXF1ZW5jZXMgPCAzMGJwLgoKTG9vayBmb3IgdG9wIG1hdGNoIChgLW1heF9oc3BzIDFgICYgYC1tYXhfdGFyZ2V0X3NlcXMgMWApIGZvciBlYWNoIHF1ZXJ5LgoKICAtIFN1cHByZXNzIHN1YnNlcXVlbnQgd2FybmluZyBgRXhhbWluaW5nIDUgb3IgbW9yZSBtYXRjaGVzIGlzIHJlY29tbWVuZGVkYCBieQogIHJlZGlyZWN0aW5nIHN0ZG91dDogYDI+IC9kZXYvbnVsbGAKCiMjIG1pUkJhc2UgQkxBU1RuIERlZmF1bHQgZS12YWx1ZQpgYGB7ciBtaVJCYXNlLUJMQVNUbi1kZWZhdWx0LWV2YWwsIGVuZ2luZT0nYmFzaCcsIGNhY2hlPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgp0aW1lIFwKJHtuY2JpX2JsYXN0bn0gXAotZGIgJHtibGFzdF9kYnNfZGlyfS8ke21pcmJhc2VfbWF0dXJlX2Zhc3RhX25vX1UlLip9IFwKLXF1ZXJ5ICR7b3V0cHV0X2Rpcl90b3B9LyR7Y29sbGFwc2VkX3JlYWRzX2Zhc3RhfSBcCi1vdXQgJHtvdXRwdXRfZGlyX3RvcH0vbWlSQmFzZS1CTEFTVG4tZXZhbF8xMDAwLm91dGZtdDYgXAotdGFzayBibGFzdG4tc2hvcnQgXAotbWF4X2hzcHMgMSBcCi1tYXhfdGFyZ2V0X3NlcXMgMSBcCi1vdXRmbXQgNiBcCi1udW1fdGhyZWFkcyAke3RocmVhZHN9IFwKMj4gL2Rldi9udWxsCmBgYAoKIyMgTWlyR2VuZSBCTEFTVG4gRGVmYXVsdCBlLXZhbHVlCgpgYGB7ciBNaXJHZW5lLUJMQVNUbi1kZWZhdWx0LWV2YWwsIGVuZ2luZT0nYmFzaCcsIGNhY2hlPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgp0aW1lIFwKJHtuY2JpX2JsYXN0bn0gXAotZGIgJHtibGFzdF9kYnNfZGlyfS8ke21pcmdlbmVfbWF0dXJlX2Zhc3RhX25vX1UlLip9IFwKLXF1ZXJ5ICR7b3V0cHV0X2Rpcl90b3B9LyR7Y29sbGFwc2VkX3JlYWRzX2Zhc3RhfSBcCi1vdXQgJHtvdXRwdXRfZGlyX3RvcH0vTWlyR2VuZS1CTEFTVG4tZXZhbF8xMDAwLm91dGZtdDYgXAotdGFzayBibGFzdG4tc2hvcnQgXAotbWF4X2hzcHMgMSBcCi1tYXhfdGFyZ2V0X3NlcXMgMSBcCi1vdXRmbXQgNiBcCi1udW1fdGhyZWFkcyAke3RocmVhZHN9IFwKMj4gL2Rldi9udWxsCmBgYAoKCiMgQkxBU1RuIEUtdmFsdWUgPSAxMAoKUnVubmluZyB0aGlzIGZvciBzaW1wbGUgY29tcGFyaXNvbiB0byB0aGUgZGVmYXVsIGBibGFzdG4tc2hvcnRgIHZhbHVlIG9mIDEwMDAuCgojIyBtaVJCYXNlIEJMQVNUbiBlLXZhbHVlID0gMTAKYGBge3IgbWlSQmFzZS1CTEFTVG4tMTAtZXZhbCwgZW5naW5lPSdiYXNoJywgY2FjaGU9VFJVRX0KIyBMb2FkIGJhc2ggdmFyaWFibGVzIGludG8gbWVtb3J5CnNvdXJjZSAuYmFzaHZhcnMKCnRpbWUgXAoke25jYmlfYmxhc3RufSBcCi1kYiAke2JsYXN0X2Ric19kaXJ9LyR7bWlyYmFzZV9tYXR1cmVfZmFzdGFfbm9fVSUuKn0gXAotcXVlcnkgJHtvdXRwdXRfZGlyX3RvcH0vJHtjb2xsYXBzZWRfcmVhZHNfZmFzdGF9IFwKLW91dCAke291dHB1dF9kaXJfdG9wfS9taVJCYXNlLUJMQVNUbi1ldmFsXzEwLm91dGZtdDYgXAotdGFzayBibGFzdG4tc2hvcnQgXAotZXZhbHVlIDEwIFwKLW1heF9oc3BzIDEgXAotbWF4X3RhcmdldF9zZXFzIDEgXAotb3V0Zm10IDYgXAotbnVtX3RocmVhZHMgJHt0aHJlYWRzfSBcCjI+IC9kZXYvbnVsbApgYGAKCiMjIE1pckdlbmUgQkxBU1RuIGUtdmFsdWUgPSAxMAoKYGBge3IgTWlyR2VuZS1CTEFTVG4tMTAtZXZhbCwgZW5naW5lPSdiYXNoJywgY2FjaGU9VFJVRX0KIyBMb2FkIGJhc2ggdmFyaWFibGVzIGludG8gbWVtb3J5CnNvdXJjZSAuYmFzaHZhcnMKCnRpbWUgXAoke25jYmlfYmxhc3RufSBcCi1kYiAke2JsYXN0X2Ric19kaXJ9LyR7bWlyZ2VuZV9tYXR1cmVfZmFzdGFfbm9fVSUuKn0gXAotcXVlcnkgJHtvdXRwdXRfZGlyX3RvcH0vJHtjb2xsYXBzZWRfcmVhZHNfZmFzdGF9IFwKLW91dCAke291dHB1dF9kaXJfdG9wfS9NaXJHZW5lLUJMQVNUbi1ldmFsXzEwLm91dGZtdDYgXAotdGFzayBibGFzdG4tc2hvcnQgXAotZXZhbHVlIDEwIFwKLW1heF9oc3BzIDEgXAotbWF4X3RhcmdldF9zZXFzIDEgXAotb3V0Zm10IDYgXAotbnVtX3RocmVhZHMgJHt0aHJlYWRzfSBcCjI+IC9kZXYvbnVsbApgYGAKCiMgUmVzdWx0cwoKIyMgQ2hlY2sgQkxBU1RuIERlZmF1bHQgZS12YWx1ZSByZXN1bHRzCmBgYHtyIGJsYXN0bi1kZWZhdWx0LWV2YWx1ZS1yZXN1bHRzLCBlbmdpbmU9J2Jhc2gnLCBldmFsPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgpoZWFkICR7b3V0cHV0X2Rpcl90b3B9LypldmFsXzEwMDAub3V0Zm10NgoKZWNobyAiIgplY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKZWNobyAiIgoKd2MgLWwgJHtvdXRwdXRfZGlyX3RvcH0vKmV2YWxfMTAwMC5vdXRmbXQ2CmBgYAoKIyMgQ2hlY2sgQkxBU1RuIGUtdmFsdWUgPSAxMCByZXN1bHRzCmBgYHtyIGJsYXN0bi0xMC1ldmFsdWUtcmVzdWx0cywgZW5naW5lPSdiYXNoJywgZXZhbD1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKaGVhZCAke291dHB1dF9kaXJfdG9wfS8qZXZhbF8xMC5vdXRmbXQ2CgplY2hvICIiCmVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgplY2hvICIiCgp3YyAtbCAke291dHB1dF9kaXJfdG9wfS8qZXZhbF8xMC5vdXRmbXQ2CmBgYAoKVGhlIGRlZmF1bHQgZS12YWx1ZSByZXN1bHRzIGluIGFsaWdubWVudHMgZm9yIGFsbCBxdWVyeSBzZXF1ZW5jZXMsIHdoaWNoIGlzIGxpa2VseSBub3Qgd2hhdCB3ZSdkIGV4cGVjdC4KCkRlY3JlYXNpbmcgdGhlIGUtdmFsdWUgcmVzdWx0ZWQgaW4gZmV3ZXIgcXVlYXJ5IGFsaWdubWVudHMsIGFzIHdlJ2QgZXhwZWN0LgoKRm9yIGZ1cnRoZXIgYW5hbHlzaXMsIHdlIHNob3VsZCBwcm9iYWJseSBkaXNjdXNzIGEgcmVhc29uYWJsZSBlLXZhbHVlIHRvIHVzZSBmb3IgZmlsdGVyaW5nLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIENpdGF0aW9ucwo=