This notebook performs a simple NCBI BLASTn [@altschul1990] against two miRNA databases to attempt to identify miRNA in A.pulchra 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_01/sam/gitrepos/deep-dive'
echo 'export deep_dive_data_dir="${deep_dive_dir}/data"'
echo 'export output_dir_top=${deep_dive_dir}/E-Peve/output/10-Peve-sRNAseq-BLASTn'
echo 'export trimmed_fastqs_dir="${deep_dive_dir}/E-Peve/output/06-Peve-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_01/sam/gitrepos/deep-dive
export deep_dive_data_dir="${deep_dive_dir}/data"
export output_dir_top=${deep_dive_dir}/E-Peve/output/10-Peve-sRNAseq-BLASTn
export trimmed_fastqs_dir="${deep_dive_dir}/E-Peve/output/06-Peve-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 sam sam 4.0K Nov  7 14:36 blast_dbs
-rw-r--r-- 1 sam sam 3.7M Nov 15 21:30 mirbase-mature-v22.1.fa
-rw-r--r-- 1 sam sam 3.7M Nov 14 09:39 mirbase-mature-v22.1-no_spaces.fa
-rw-r--r-- 1 sam sam 3.7M Nov 16 10:46 mirbase-mature-v22.1-no_U.fa
-rw-r--r-- 1 sam sam 726K Nov  7 14:36 mirgene-mature-all-v2.1.fa
-rw-r--r-- 1 sam sam 726K Nov 16 10:46 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_01/sam/gitrepos/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_01/sam/gitrepos/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_01/sam/gitrepos/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_01/sam/gitrepos/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_01/sam/gitrepos/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_01/sam/gitrepos/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_01/sam/gitrepos/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_01/sam/gitrepos/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_01/sam/gitrepos/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_01/sam/gitrepos/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 sam sam 1.3G Nov 16 08:32 /home/shared/8TB_HDD_01/sam/gitrepos/deep-dive/E-Peve/output/10-Peve-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}"

echo ""
echo ""

total_reads=$(grep -c "^>" ${output_dir_top}/${collapsed_reads_fasta})
echo "Total number of reads after collapse: ${total_reads}"

real    0m0.000s
user    0m0.000s
sys 0m0.000s
>1-2463526
GCACTGGTGGTTCAGTGGTAGAATT
>2-2045325
TGAAAATCTTTGCTCTGAAGTGGAA
>3-2026343
TTCCACTTCAGAGCAAAGATTTTCA
>4-1419489
GGCGAGAATTCTACCACTGAACCAC
>5-1161968
ACAAATCTTAGAACAAAGGCTTAAT


Total number of reads after collapse: 8870343

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 default 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_01/sam/gitrepos/deep-dive/E-Peve/output/10-Peve-sRNAseq-BLASTn/miRBase-BLASTn-eval_1000.outfmt6 <==
1-2463526   ppc-miR-8214-5p 100.000 13  0   0   12  24  18  6   0.092   26.3
2-2045325   ssc-miR-7143-5p 100.000 11  0   0   12  22  8   18  1.4 22.3
3-2026343   ssc-miR-7143-5p 100.000 11  0   0   4   14  18  8   1.4 22.3
4-1419489   ppc-miR-8214-5p 100.000 13  0   0   8   20  6   18  0.092   26.3
5-1161968   cin-miR-4068-3p 100.000 12  0   0   11  22  10  21  0.36    24.3
6-1144435   lja-miR11150-3p 100.000 10  0   0   13  22  10  19  5.7 20.3
7-1040735   hsa-miR-3168    100.000 13  0   0   4   16  13  1   0.092   26.3
8-942821    efu-miR-9230a   100.000 12  0   0   14  25  2   13  0.36    24.3
9-658343    ppc-miR-8214-5p 100.000 13  0   0   8   20  6   18  0.092   26.3
10-653354   gma-miR9757 100.000 10  0   0   13  22  11  2   5.7 20.3

==> /home/shared/8TB_HDD_01/sam/gitrepos/deep-dive/E-Peve/output/10-Peve-sRNAseq-BLASTn/MirGene-BLASTn-eval_1000.outfmt6 <==
1-2463526   Pma-Mir-96-P3o2_5p  100.000 10  0   0   16  25  9   18  2.2 20.3
2-2045325   Tca-Mir-87-P2_3p    100.000 11  0   0   5   15  13  3   0.54    22.3
3-2026343   Tca-Mir-87-P2_3p    100.000 11  0   0   11  21  3   13  0.54    22.3
4-1419489   Pma-Mir-96-P3o2_5p  100.000 11  0   0   6   16  19  9   0.54    22.3
5-1161968   Cin-Mir-4062-P1_3p  100.000 12  0   0   11  22  10  21  0.14    24.3
6-1144435   Dno-Mir-1271_5p 100.000 9   0   0   1   9   21  13  8.5 18.3
7-1040735   Hme-Mir-2-P7_3p 100.000 11  0   0   9   19  19  9   0.54    22.3
8-942821    Cbr-Mir-279-o10_5p  100.000 10  0   0   13  22  11  2   2.2 20.3
9-658343    Pma-Mir-96-P3o2_5p  100.000 11  0   0   6   16  19  9   0.54    22.3
10-653354   Gga-Mir-7441_5p 100.000 10  0   0   13  22  3   12  2.2 20.3

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

   8870343 /home/shared/8TB_HDD_01/sam/gitrepos/deep-dive/E-Peve/output/10-Peve-sRNAseq-BLASTn/miRBase-BLASTn-eval_1000.outfmt6
   8870343 /home/shared/8TB_HDD_01/sam/gitrepos/deep-dive/E-Peve/output/10-Peve-sRNAseq-BLASTn/MirGene-BLASTn-eval_1000.outfmt6
  17740686 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_01/sam/gitrepos/deep-dive/E-Peve/output/10-Peve-sRNAseq-BLASTn/miRBase-BLASTn-eval_10.outfmt6 <==
1-2463526   ppc-miR-8214-5p 100.000 13  0   0   12  24  18  6   0.092   26.3
2-2045325   ssc-miR-7143-5p 100.000 11  0   0   12  22  8   18  1.4 22.3
3-2026343   ssc-miR-7143-5p 100.000 11  0   0   4   14  18  8   1.4 22.3
4-1419489   ppc-miR-8214-5p 100.000 13  0   0   8   20  6   18  0.092   26.3
5-1161968   cin-miR-4068-3p 100.000 12  0   0   11  22  10  21  0.36    24.3
6-1144435   lja-miR11150-3p 100.000 10  0   0   13  22  10  19  5.7 20.3
7-1040735   hsa-miR-3168    100.000 13  0   0   4   16  13  1   0.092   26.3
8-942821    efu-miR-9230a   100.000 12  0   0   14  25  2   13  0.36    24.3
9-658343    ppc-miR-8214-5p 100.000 13  0   0   8   20  6   18  0.092   26.3
10-653354   gma-miR9757 100.000 10  0   0   13  22  11  2   5.7 20.3

==> /home/shared/8TB_HDD_01/sam/gitrepos/deep-dive/E-Peve/output/10-Peve-sRNAseq-BLASTn/MirGene-BLASTn-eval_10.outfmt6 <==
1-2463526   Pma-Mir-96-P3o2_5p  100.000 10  0   0   16  25  9   18  2.2 20.3
2-2045325   Tca-Mir-87-P2_3p    100.000 11  0   0   5   15  13  3   0.54    22.3
3-2026343   Tca-Mir-87-P2_3p    100.000 11  0   0   11  21  3   13  0.54    22.3
4-1419489   Pma-Mir-96-P3o2_5p  100.000 11  0   0   6   16  19  9   0.54    22.3
5-1161968   Cin-Mir-4062-P1_3p  100.000 12  0   0   11  22  10  21  0.14    24.3
6-1144435   Dno-Mir-1271_5p 100.000 9   0   0   1   9   21  13  8.5 18.3
7-1040735   Hme-Mir-2-P7_3p 100.000 11  0   0   9   19  19  9   0.54    22.3
8-942821    Cbr-Mir-279-o10_5p  100.000 10  0   0   13  22  11  2   2.2 20.3
9-658343    Pma-Mir-96-P3o2_5p  100.000 11  0   0   6   16  19  9   0.54    22.3
10-653354   Gga-Mir-7441_5p 100.000 10  0   0   13  22  3   12  2.2 20.3

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

   8824359 /home/shared/8TB_HDD_01/sam/gitrepos/deep-dive/E-Peve/output/10-Peve-sRNAseq-BLASTn/miRBase-BLASTn-eval_10.outfmt6
   8783659 /home/shared/8TB_HDD_01/sam/gitrepos/deep-dive/E-Peve/output/10-Peve-sRNAseq-BLASTn/MirGene-BLASTn-eval_10.outfmt6
  17608018 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 query alignments, as we’d expect.

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


9 Citations

LS0tCnRpdGxlOiAiMTAtUGV2ZS1zUk5Bc2VxLUJMQVNUbiIKYXV0aG9yOiAiU2FtIFdoaXRlIgpkYXRlOiAiMjAyMy0xMS0xNiIKYWx3YXlzX2FsbG93X2h0bWw6IHRydWUKb3V0cHV0OiAKICBib29rZG93bjo6aHRtbF9kb2N1bWVudDI6CiAgICB0aGVtZTogY29zbW8KICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUKICAgIGNvZGVfZm9sZGluZzogc2hvdwogICAgY29kZV9kb3dubG9hZDogdHJ1ZQogIGdpdGh1Yl9kb2N1bWVudDoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2RlcHRoOiAzCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUKICAgIGh0bWxfcHJldmlldzogdHJ1ZSAgCiNiaWJsaW9ncmFwaHk6IHJlZmVyZW5jZXMuYmliCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmxpYnJhcnkoa25pdHIpCmxpYnJhcnkoa2FibGVFeHRyYSkKbGlicmFyeShkcGx5cikKa25pdHI6Om9wdHNfY2h1bmskc2V0KAogIGVjaG8gPSBUUlVFLCAgICAgICAgICMgRGlzcGxheSBjb2RlIGNodW5rcwogIGV2YWwgPSBGQUxTRSwgICAgICAgICMgRXZhbHVhdGUgY29kZSBjaHVua3MKICB3YXJuaW5nID0gRkFMU0UsICAgICAjIEhpZGUgd2FybmluZ3MKICBtZXNzYWdlID0gRkFMU0UsICAgICAjIEhpZGUgbWVzc2FnZXMKICBjb21tZW50ID0gIiIgICAgICAgICAgIyBQcmV2ZW50cyBhcHBlbmRpbmcgJyMjJyB0byBiZWdpbm5pbmcgb2YgbGluZXMgaW4gY29kZSBvdXRwdXQKKQoKYGBgCgpUaGlzIG5vdGVib29rIHBlcmZvcm1zIGEgc2ltcGxlIFtOQ0JJIEJMQVNUbl0oaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9ib29rcy9OQksyNzk2OTAvKSBbQGFsdHNjaHVsMTk5MF0gYWdhaW5zdCB0d28gbWlSTkEgZGF0YWJhc2VzIHRvIGF0dGVtcHQgdG8gaWRlbnRpZnkgbWlSTkEgaW4gX0EucHVsY2hyYV8gc1JOQXNlcToKCi0gW21pUkJhc2VdKGh0dHBzOi8vbWlyYmFzZS5vcmcvZG93bmxvYWQvKQoKLSBbTWlyR2VuZURCXShodHRwczovL3d3dy5taXJnZW5lZGIub3JnL2Rvd25sb2FkKQoKUmVsaWVzIG9uIHRoZSBmb2xsb3dpbmcgc29mdHdhcmU6CiAgCi0gW2Zhc3R4X3Rvb2xraXRdKGh0dHA6Ly9oYW5ub25sYWIuY3NobC5lZHUvZmFzdHhfdG9vbGtpdC8pCgogIC0gYGZhc3R4X2NvbGxhcHNlcmA6IENvbGxhcHNlcyBkdXBsaWNhdGUgc2VxdWVuY2VzIGluIEZhc3RBL1EgaW50byBzaW5nbGUgc2VxdWVuY2UuCgojIENyZWF0ZSBhIEJhc2ggdmFyaWFibGVzIGZpbGUKClRoaXMgYWxsb3dzIHVzYWdlIG9mIEJhc2ggdmFyaWFibGVzIGFjcm9zcyBSIE1hcmtkb3duIGNodW5rcy4KCmBgYHtyIHNhdmUtYmFzaC12YXJpYWJsZXMtdG8tcnZhcnMtZmlsZSwgZW5naW5lPSdiYXNoJywgZXZhbD1UUlVFfQp7CmVjaG8gIiMjIyMgQXNzaWduIFZhcmlhYmxlcyAjIyMjIgplY2hvICIiCgplY2hvICIjIFRyaW1tZWQgRmFzdFEgbmFtaW5nIHBhdHRlcm4iCmVjaG8gImV4cG9ydCB0cmltbWVkX2Zhc3Rxc19wYXR0ZXJuPScqZmxleGJhcl90cmltLjI1YnAqLmZhc3RxLmd6JyIKCmVjaG8gIiMgRGF0YSBkaXJlY3RvcmllcyIKZWNobyAnZXhwb3J0IGRlZXBfZGl2ZV9kaXI9L2hvbWUvc2hhcmVkLzhUQl9IRERfMDEvc2FtL2dpdHJlcG9zL2RlZXAtZGl2ZScKZWNobyAnZXhwb3J0IGRlZXBfZGl2ZV9kYXRhX2Rpcj0iJHtkZWVwX2RpdmVfZGlyfS9kYXRhIicKZWNobyAnZXhwb3J0IG91dHB1dF9kaXJfdG9wPSR7ZGVlcF9kaXZlX2Rpcn0vRS1QZXZlL291dHB1dC8xMC1QZXZlLXNSTkFzZXEtQkxBU1RuJwplY2hvICdleHBvcnQgdHJpbW1lZF9mYXN0cXNfZGlyPSIke2RlZXBfZGl2ZV9kaXJ9L0UtUGV2ZS9vdXRwdXQvMDYtUGV2ZS1zUk5Bc2VxLXRyaW1taW5nL3RyaW1tZWQtcmVhZHMiJwplY2hvICdleHBvcnQgYmxhc3RfZGJzX2Rpcj0iJHtkZWVwX2RpdmVfZGlyfS9kYXRhL2JsYXN0X2RicyInCmVjaG8gIiIKCmVjaG8gIiMgSW5wdXQvT3V0cHV0IGZpbGVzIgplY2hvICdleHBvcnQgY29sbGFwc2VkX3JlYWRzX2Zhc3RhPSJjb2xsYXBzZWQtcmVhZHMtYWxsLmZhc3RhIicKZWNobyAnZXhwb3J0IGNvbmNhdGVuYXRlZF90cmltbWVkX3JlYWRzX2Zhc3RxPSJjb25jYXRlbmF0ZWQtdHJpbW1lZC1yZWFkcy1hbGwuZmFzdHEuZ3oiJwplY2hvICdleHBvcnQgbWlyYmFzZV9tYXR1cmVfZmFzdGFfbmFtZT0ibWlyYmFzZS1tYXR1cmUtdjIyLjEuZmEiJwplY2hvICdleHBvcnQgbWlyYmFzZV9tYXR1cmVfZmFzdGFfbm9fVT0ibWlyYmFzZS1tYXR1cmUtdjIyLjEtbm9fVS5mYSInCmVjaG8gJ2V4cG9ydCBtaXJnZW5lX21hdHVyZV9mYXN0YV9uYW1lPSJtaXJnZW5lLW1hdHVyZS1hbGwtdjIuMS5mYSInCmVjaG8gJ2V4cG9ydCBtaXJnZW5lX21hdHVyZV9mYXN0YV9ub19VPSJtaXJnZW5lLW1hdHVyZS1hbGwtdjIuMS1ub19VLmZhIicKZWNobyAiIgoKZWNobyAiIyBFeHRlcm5hbCBkYXRhIFVSTHMiCmVjaG8gJ2V4cG9ydCBtaXJnZW5lZGJfZmFzdGFfdXJsPSJodHRwczovL3d3dy5taXJnZW5lZGIub3JnL2Zhc3RhL0FMTD9tYXQ9MSInCmVjaG8gIiIKCmVjaG8gIiMgUGF0aHMgdG8gcHJvZ3JhbXMiCmVjaG8gJ2V4cG9ydCBuY2JpX2JsYXN0X2Rpcj0iL2hvbWUvc2hhcmVkL25jYmktYmxhc3QtMi4xNS4wKy9iaW4vIicKZWNobyAnZXhwb3J0IG5jYmlfYmxhc3RuPSIke25jYmlfYmxhc3RfZGlyfS9ibGFzdG4iJwplY2hvICdleHBvcnQgbmNiaV9tYWtlYmxhc3RfZGI9IiR7bmNiaV9ibGFzdF9kaXJ9L21ha2VibGFzdGRiIicKZWNobyAnZXhwb3J0IGZhc3R4X2NvbGxhcHNlcj0iL2hvbWUvc2hhcmVkL2Zhc3R4X3Rvb2xraXRfMC4wLjEzX2JpbmFyaWVzX0xpbnV4XzIuNl9hbWQ2NC9iaW4vZmFzdHhfY29sbGFwc2VyIicKCmVjaG8gIiMgU2V0IG51bWJlciBvZiBDUFVzIHRvIHVzZSIKZWNobyAnZXhwb3J0IHRocmVhZHM9NDYnCmVjaG8gIiIKCmVjaG8gIiMgSW5pdGlhbGl6ZSBhcnJheXMiCmVjaG8gJ2V4cG9ydCB0cmltbWVkX2Zhc3Rxc19hcnJheT0oKScKCgp9ID4gLmJhc2h2YXJzCgpjYXQgLmJhc2h2YXJzCmBgYAoKCiMgRG93bmxvYWQgTWlyR2VuZURCIEZhc3RhCmBgYHtyIGRvd25sb2FkLW1pcmdlbmUtZGItRmFzdEEsIGVuZ2luZT0nYmFzaCcsIGV2YWw9VFJVRX0KIyBMb2FkIGJhc2ggdmFyaWFibGVzIGludG8gbWVtb3J5CnNvdXJjZSAuYmFzaHZhcnMKCndnZXQgXAotLW5vLWNoZWNrLWNlcnRpZmljYXRlIFwKLS1jb250aW51ZSBcCi0tbm8taG9zdC1kaXJlY3RvcmllcyBcCi0tbm8tZGlyZWN0b3JpZXMgXAotLW5vLXBhcmVudCBcCi0tcXVpZXQgXAotLWV4ZWN1dGUgcm9ib3RzPW9mZiBcCi0tb3V0cHV0LWRvY3VtZW50ICR7ZGVlcF9kaXZlX2RhdGFfZGlyfS8ke21pcmdlbmVfbWF0dXJlX2Zhc3RhX25hbWV9IFwKICR7bWlyZ2VuZWRiX2Zhc3RhX3VybH0KIAogbHMgLWxoICR7ZGVlcF9kaXZlX2RhdGFfZGlyfQpgYGAKCiMjIEluc3BlY3QgbWlSTkEgRmFzdEFzCmBgYHtyIGluc3BlY3QtbWlSTkEtRmFzdEFzLCBlbmdpbmU9J2Jhc2gnLCBldmFsPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgpoZWFkICIke2RlZXBfZGl2ZV9kYXRhX2Rpcn0iL21pciouZmEKYGBgCgoKIyBDb252ZXJ0IGBVYCB0byBgVGAgaW4gbWlSTkEgRmFzdEFzCgpUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSBzUk5Bc2VxIHNlcXVlbmNlcyBkbyBfbm90XyBoYXZlIHVyYWNpbHMgKGBVYCkgLSB0aGV5IGhhdmUgdGh5bWluZXMgKGBUYCkuCgpgYGB7ciBjb252ZXJ0LVUtdG8tVCwgZW5naW5lPSdiYXNoJywgZXZhbD1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKIyBDb252ZXJ0IG1pUkJhc2UgRmFzdEEKc2VkICcvXltePl0vcy9VL1QvZycgIiR7ZGVlcF9kaXZlX2RhdGFfZGlyfS8ke21pcmJhc2VfbWF0dXJlX2Zhc3RhX25hbWV9IiBcCj4gIiR7ZGVlcF9kaXZlX2RhdGFfZGlyfS8ke21pcmJhc2VfbWF0dXJlX2Zhc3RhX25vX1V9IgoKIyBDb252ZXJ0IE1pckdlbmUgRmFzdEEKc2VkICcvXltePl0vcy9VL1QvZycgIiR7ZGVlcF9kaXZlX2RhdGFfZGlyfS8ke21pcmdlbmVfbWF0dXJlX2Zhc3RhX25hbWV9IiBcCj4gIiR7ZGVlcF9kaXZlX2RhdGFfZGlyfS8ke21pcmdlbmVfbWF0dXJlX2Zhc3RhX25vX1V9IgoKaGVhZCAke2RlZXBfZGl2ZV9kYXRhX2Rpcn0vKi5mYQogIApgYGAKCiMgQ3JlYXRlIEJMQVNUIERhdGFiYXNlcwpgYGB7ciBtYWtlLWJsYXN0LWRicywgZW5naW5lPSdiYXNoJywgZXZhbD1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKCgojIG1pUkJhc2UgQkxBU1QgREIKIyMgTWFrZSBzdXJlIG91dHB1dCBkaXJlY3RvcnkgZXhpc3RzCmlmIFsgISAtZCAiJHtibGFzdF9kYnNfZGlyfSIgXTsgdGhlbgogIG1rZGlyIC0tcGFyZW50cyAiJHtibGFzdF9kYnNfZGlyfSIKZmkKCiMjIENoZWNrIGZvciBwcmUtZXhpc2luZyBkYXRhYmFzZQppZiBbICEgLWYgIiR7Ymxhc3RfZGJzX2Rpcn0vJHttaXJnZW5lX21hdHVyZV9mYXN0YV9ub19VJS4qfS5ibGFzdGRiLmxvZyIgXTsgdGhlbgogICR7bmNiaV9tYWtlYmxhc3RfZGJ9IFwKICAtaW4gJHtkZWVwX2RpdmVfZGF0YV9kaXJ9LyR7bWlyZ2VuZV9tYXR1cmVfZmFzdGFfbm9fVX0gXAogIC10aXRsZSAke21pcmdlbmVfbWF0dXJlX2Zhc3RhX25vX1UlLip9IFwKICAtZGJ0eXBlIG51Y2wgXAogIC1vdXQgJHtibGFzdF9kYnNfZGlyfS8ke21pcmdlbmVfbWF0dXJlX2Zhc3RhX25vX1UlLip9IFwKICAtbG9nZmlsZSAke2JsYXN0X2Ric19kaXJ9LyR7bWlyZ2VuZV9tYXR1cmVfZmFzdGFfbm9fVSUuKn0uYmxhc3RkYi5sb2cKZmkKCiMgbWlSQmFzZSBCTEFTVCBEQgojIyBNYWtlIHN1cmUgb3V0cHV0IGRpcmVjdG9yeSBleGlzdHMKaWYgWyAhIC1kICIke2JsYXN0X2Ric19kaXJ9IiBdOyB0aGVuCiAgbWtkaXIgLS1wYXJlbnRzICIke2JsYXN0X2Ric19kaXJ9IgpmaQoKIyMgQ2hlY2sgZm9yIHByZS1leGlzaW5nIGRhdGFiYXNlCmlmIFsgISAtZiAiJHtibGFzdF9kYnNfZGlyfS8ke21pcmJhc2VfbWF0dXJlX2Zhc3RhX25vX1UlLip9LmJsYXN0ZGIubG9nIiBdOyB0aGVuCiAgJHtuY2JpX21ha2VibGFzdF9kYn0gXAogIC1pbiAke2RlZXBfZGl2ZV9kYXRhX2Rpcn0vJHttaXJiYXNlX21hdHVyZV9mYXN0YV9ub19VfSBcCiAgLXRpdGxlICR7bWlyYmFzZV9tYXR1cmVfZmFzdGFfbm9fVSUuKn0gXAogIC1kYnR5cGUgbnVjbCBcCiAgLW91dCAke2JsYXN0X2Ric19kaXJ9LyR7bWlyYmFzZV9tYXR1cmVfZmFzdGFfbm9fVSUuKn0gXAogIC1sb2dmaWxlICR7Ymxhc3RfZGJzX2Rpcn0vJHttaXJiYXNlX21hdHVyZV9mYXN0YV9ub19VJS4qfS5ibGFzdGRiLmxvZwpmaQpgYGAKCgojIFByZXBhcmUgcmVhZHMgZm9yIEJMQVNUaW5nCgojIyBDb25jYXRlbmF0ZSBhbGwgdHJpbW1lZCByZWFkcwpgYGB7ciBjb25jYXRlbmF0ZS10cmltbWVkLXJlYWRzLCBlbmdpbmU9J2Jhc2gnLCBldmFsPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgojIENoZWNrIGZvciBleGlzdGVuY2Ugb2YgY29uY2F0ZW5hdGVkIEZhc3RBIGJlZm9yZSBydW5uaW5nCmlmIFsgISAtZiAiJHtvdXRwdXRfZGlyX3RvcH0vJHtjb25jYXRlbmF0ZWRfdHJpbW1lZF9yZWFkc19mYXN0cX0iIF07IHRoZW4KICBjYXQgJHt0cmltbWVkX2Zhc3Rxc19kaXJ9LyouZmFzdHEuZ3ogXAogID4gIiR7b3V0cHV0X2Rpcl90b3B9LyR7Y29uY2F0ZW5hdGVkX3RyaW1tZWRfcmVhZHNfZmFzdHF9IgpmaQoKbHMgLWxoICIke291dHB1dF9kaXJfdG9wfS8ke2NvbmNhdGVuYXRlZF90cmltbWVkX3JlYWRzX2Zhc3RxfSIKYGBgCgojIyBDb2xsYXBzZSByZWFkcyB0byBGYXN0QQoKVXNlcyBgZmFzdHhfY29sbGFwc2VyYCB0byBjb2xsYXBzZSB0byB1bmlxdWUgcmVhZHMuCgpSZXF1aXJlcyB1bmRvY3VtZW50ZWQgcXVhbGl0eSBzZXR0aW5nLiBIYXZlIHNlbGVjdGVkIGAzMGAgYXMgY3V0dG9mZjogYC1RMzBgLgpgYGB7ciBjb2xsYXBzZS1yZWFkcy10by1GYXN0QSwgZW5naW5lPSdiYXNoJywgZXZhbD1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKIyBDaGVjayBmb3IgZXhpc3RlbmNlIG9mIGNvbGxhcHNlZCBGYXN0QSBiZWZvcmUgcnVubmluZwp0aW1lIFwKaWYgWyAhIC1mICIke291dHB1dF9kaXJfdG9wfS8ke2NvbGxhcHNlZF9yZWFkc19mYXN0YX0iIF07IHRoZW4KICB6Y2F0ICR7b3V0cHV0X2Rpcl90b3B9LyR7Y29uY2F0ZW5hdGVkX3RyaW1tZWRfcmVhZHNfZmFzdHF9IFwKICB8ICR7ZmFzdHhfY29sbGFwc2VyfSBcCiAgLVEzMCBcCiAgLW8gIiR7b3V0cHV0X2Rpcl90b3B9LyR7Y29sbGFwc2VkX3JlYWRzX2Zhc3RhfSIKZmkKCmhlYWQgIiR7b3V0cHV0X2Rpcl90b3B9LyR7Y29sbGFwc2VkX3JlYWRzX2Zhc3RhfSIKCmVjaG8gIiIKZWNobyAiIgoKdG90YWxfcmVhZHM9JChncmVwIC1jICJePiIgJHtvdXRwdXRfZGlyX3RvcH0vJHtjb2xsYXBzZWRfcmVhZHNfZmFzdGF9KQplY2hvICJUb3RhbCBudW1iZXIgb2YgcmVhZHMgYWZ0ZXIgY29sbGFwc2U6ICR7dG90YWxfcmVhZHN9IgpgYGAKCiMgUnVuIEJMQVNUbiBEZWZhdWx0IEUtdmFsdWUKCi0gMTAwMCBmb3IgYmxhc3RuLXNob3J0CgpSdW5zIEJMQVNUbiB1c2luZyB0aGUgYGJsYXN0bi1zaG9ydGAgdGFzayBmb3Igc2VxdWVuY2VzIDwgMzBicC4KCkxvb2sgZm9yIHRvcCBtYXRjaCAoYC1tYXhfaHNwcyAxYCAmIGAtbWF4X3RhcmdldF9zZXFzIDFgKSBmb3IgZWFjaCBxdWVyeS4KCiAgLSBTdXBwcmVzcyBzdWJzZXF1ZW50IHdhcm5pbmcgYEV4YW1pbmluZyA1IG9yIG1vcmUgbWF0Y2hlcyBpcyByZWNvbW1lbmRlZGAgYnkKICByZWRpcmVjdGluZyBzdGRvdXQ6IGAyPiAvZGV2L251bGxgCgojIyBtaVJCYXNlIEJMQVNUbiBEZWZhdWx0IGUtdmFsdWUKYGBge3IgbWlSQmFzZS1CTEFTVG4tZGVmYXVsdC1ldmFsLCBlbmdpbmU9J2Jhc2gnLCBjYWNoZT1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKdGltZSBcCiR7bmNiaV9ibGFzdG59IFwKLWRiICR7Ymxhc3RfZGJzX2Rpcn0vJHttaXJiYXNlX21hdHVyZV9mYXN0YV9ub19VJS4qfSBcCi1xdWVyeSAke291dHB1dF9kaXJfdG9wfS8ke2NvbGxhcHNlZF9yZWFkc19mYXN0YX0gXAotb3V0ICR7b3V0cHV0X2Rpcl90b3B9L21pUkJhc2UtQkxBU1RuLWV2YWxfMTAwMC5vdXRmbXQ2IFwKLXRhc2sgYmxhc3RuLXNob3J0IFwKLW1heF9oc3BzIDEgXAotbWF4X3RhcmdldF9zZXFzIDEgXAotb3V0Zm10IDYgXAotbnVtX3RocmVhZHMgJHt0aHJlYWRzfSBcCjI+IC9kZXYvbnVsbApgYGAKCiMjIE1pckdlbmUgQkxBU1RuIERlZmF1bHQgZS12YWx1ZQoKYGBge3IgTWlyR2VuZS1CTEFTVG4tZGVmYXVsdC1ldmFsLCBlbmdpbmU9J2Jhc2gnLCBjYWNoZT1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKdGltZSBcCiR7bmNiaV9ibGFzdG59IFwKLWRiICR7Ymxhc3RfZGJzX2Rpcn0vJHttaXJnZW5lX21hdHVyZV9mYXN0YV9ub19VJS4qfSBcCi1xdWVyeSAke291dHB1dF9kaXJfdG9wfS8ke2NvbGxhcHNlZF9yZWFkc19mYXN0YX0gXAotb3V0ICR7b3V0cHV0X2Rpcl90b3B9L01pckdlbmUtQkxBU1RuLWV2YWxfMTAwMC5vdXRmbXQ2IFwKLXRhc2sgYmxhc3RuLXNob3J0IFwKLW1heF9oc3BzIDEgXAotbWF4X3RhcmdldF9zZXFzIDEgXAotb3V0Zm10IDYgXAotbnVtX3RocmVhZHMgJHt0aHJlYWRzfSBcCjI+IC9kZXYvbnVsbApgYGAKCgojIEJMQVNUbiBFLXZhbHVlID0gMTAKClJ1bm5pbmcgdGhpcyBmb3Igc2ltcGxlIGNvbXBhcmlzb24gdG8gdGhlIGRlZmF1bHQgYGJsYXN0bi1zaG9ydGAgdmFsdWUgb2YgMTAwMC4KCiMjIG1pUkJhc2UgQkxBU1RuIGUtdmFsdWUgPSAxMApgYGB7ciBtaVJCYXNlLUJMQVNUbi0xMC1ldmFsLCBlbmdpbmU9J2Jhc2gnLCBjYWNoZT1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKdGltZSBcCiR7bmNiaV9ibGFzdG59IFwKLWRiICR7Ymxhc3RfZGJzX2Rpcn0vJHttaXJiYXNlX21hdHVyZV9mYXN0YV9ub19VJS4qfSBcCi1xdWVyeSAke291dHB1dF9kaXJfdG9wfS8ke2NvbGxhcHNlZF9yZWFkc19mYXN0YX0gXAotb3V0ICR7b3V0cHV0X2Rpcl90b3B9L21pUkJhc2UtQkxBU1RuLWV2YWxfMTAub3V0Zm10NiBcCi10YXNrIGJsYXN0bi1zaG9ydCBcCi1ldmFsdWUgMTAgXAotbWF4X2hzcHMgMSBcCi1tYXhfdGFyZ2V0X3NlcXMgMSBcCi1vdXRmbXQgNiBcCi1udW1fdGhyZWFkcyAke3RocmVhZHN9IFwKMj4gL2Rldi9udWxsCmBgYAoKIyMgTWlyR2VuZSBCTEFTVG4gZS12YWx1ZSA9IDEwCgpgYGB7ciBNaXJHZW5lLUJMQVNUbi0xMC1ldmFsLCBlbmdpbmU9J2Jhc2gnLCBjYWNoZT1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKdGltZSBcCiR7bmNiaV9ibGFzdG59IFwKLWRiICR7Ymxhc3RfZGJzX2Rpcn0vJHttaXJnZW5lX21hdHVyZV9mYXN0YV9ub19VJS4qfSBcCi1xdWVyeSAke291dHB1dF9kaXJfdG9wfS8ke2NvbGxhcHNlZF9yZWFkc19mYXN0YX0gXAotb3V0ICR7b3V0cHV0X2Rpcl90b3B9L01pckdlbmUtQkxBU1RuLWV2YWxfMTAub3V0Zm10NiBcCi10YXNrIGJsYXN0bi1zaG9ydCBcCi1ldmFsdWUgMTAgXAotbWF4X2hzcHMgMSBcCi1tYXhfdGFyZ2V0X3NlcXMgMSBcCi1vdXRmbXQgNiBcCi1udW1fdGhyZWFkcyAke3RocmVhZHN9IFwKMj4gL2Rldi9udWxsCmBgYAoKIyBSZXN1bHRzCgojIyBDaGVjayBCTEFTVG4gRGVmYXVsdCBlLXZhbHVlIHJlc3VsdHMKYGBge3IgYmxhc3RuLWRlZmF1bHQtZXZhbHVlLXJlc3VsdHMsIGVuZ2luZT0nYmFzaCcsIGV2YWw9VFJVRX0KIyBMb2FkIGJhc2ggdmFyaWFibGVzIGludG8gbWVtb3J5CnNvdXJjZSAuYmFzaHZhcnMKCmhlYWQgJHtvdXRwdXRfZGlyX3RvcH0vKmV2YWxfMTAwMC5vdXRmbXQ2CgplY2hvICIiCmVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgplY2hvICIiCgp3YyAtbCAke291dHB1dF9kaXJfdG9wfS8qZXZhbF8xMDAwLm91dGZtdDYKYGBgCgojIyBDaGVjayBCTEFTVG4gZS12YWx1ZSA9IDEwIHJlc3VsdHMKYGBge3IgYmxhc3RuLTEwLWV2YWx1ZS1yZXN1bHRzLCBlbmdpbmU9J2Jhc2gnLCBldmFsPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgpoZWFkICR7b3V0cHV0X2Rpcl90b3B9LypldmFsXzEwLm91dGZtdDYKCmVjaG8gIiIKZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCmVjaG8gIiIKCndjIC1sICR7b3V0cHV0X2Rpcl90b3B9LypldmFsXzEwLm91dGZtdDYKYGBgCgpUaGUgZGVmYXVsdCBlLXZhbHVlIHJlc3VsdHMgaW4gYWxpZ25tZW50cyBmb3IgYWxsIHF1ZXJ5IHNlcXVlbmNlcywgd2hpY2ggaXMgbGlrZWx5IG5vdCB3aGF0IHdlJ2QgZXhwZWN0LgoKRGVjcmVhc2luZyB0aGUgZS12YWx1ZSByZXN1bHRlZCBpbiBmZXdlciBxdWVyeSBhbGlnbm1lbnRzLCBhcyB3ZSdkIGV4cGVjdC4KCkZvciBmdXJ0aGVyIGFuYWx5c2lzLCB3ZSBzaG91bGQgcHJvYmFibHkgZGlzY3VzcyBhIHJlYXNvbmFibGUgZS12YWx1ZSB0byB1c2UgZm9yIGZpbHRlcmluZy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyBDaXRhdGlvbnMK