This notebook performs a simple NCBI BLASTn [@altschul1990] against two miRNA databases to attempt to identify miRNA in P.evermanni 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.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}/E-Peve/output/10.2-Peve-sRNAseq-BLASTn-31bp-fastp-merged'
echo 'export trimmed_fastqs_dir="${deep_dive_dir}/E-Peve/output/06.2-Peve-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.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}/E-Peve/output/10.2-Peve-sRNAseq-BLASTn-31bp-fastp-merged
export trimmed_fastqs_dir="${deep_dive_dir}/E-Peve/output/06.2-Peve-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 Dec  5 11:39 mirbase-mature-v22.1-no_spaces.fa
-rw-r--r-- 1 shedurkin labmembers 3.7M Apr 15 09:11 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 15 09:11 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}/*.gz \
  > "${output_dir_top}/${concatenated_trimmed_reads_fastq}"
fi

ls -lh "${output_dir_top}/${concatenated_trimmed_reads_fastq}"
-rw-r--r-- 1 shedurkin labmembers 694M Apr 12 09:35 /home/shared/8TB_HDD_02/shedurkin/deep-dive/E-Peve/output/10.2-Peve-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}"

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-2039267
TGAAAATCTTTGCTCTGAAGTGGAA
>2-1218024
GCACTGGTGGTTCAGTGGTAGAATTCTCGCC
>3-551889
GCACTGGTGGTTCAGTGGTAGAATTCTCGCT
>4-472935
GTGTGCTTAAGCGTGAGTAGTTGTCT
>5-375248
GTGTGCTTAAGCGTGAGTAGTTGTCTGCT


Total number of reads after collapse: 4555070

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_02/shedurkin/deep-dive/E-Peve/output/10.2-Peve-sRNAseq-BLASTn-31bp-fastp-merged/miRBase-BLASTn-eval_1000.outfmt6 <==
1-2039267   ssc-miR-7143-5p 100.000 11  0   0   12  22  8   18  1.4 22.3
2-1218024   ppc-miR-8214-5p 100.000 13  0   0   12  24  18  6   0.11    26.3
3-551889    ppc-miR-8214-5p 100.000 13  0   0   12  24  18  6   0.11    26.3
4-472935    lja-miR11150-3p 100.000 10  0   0   13  22  10  19  6.1 20.3
5-375248    rlcv-miR-rL1-23-3p  100.000 11  0   0   18  28  2   12  1.8 22.3
6-292862    cpo-miR-1379-5p 100.000 12  0   0   1   12  18  7   0.29    24.3
7-292012    cpo-miR-1379-5p 100.000 12  0   0   1   12  18  7   0.34    24.3
8-258161    mdo-miR-12324a-3p   100.000 11  0   0   3   13  11  1   2.0 22.3
9-226514    cpo-miR-1379-5p 100.000 12  0   0   2   13  18  7   0.36    24.3
10-214759   oni-miR-10971   100.000 11  0   0   16  26  8   18  1.8 22.3

==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/E-Peve/output/10.2-Peve-sRNAseq-BLASTn-31bp-fastp-merged/MirGene-BLASTn-eval_1000.outfmt6 <==
1-2039267   Tca-Mir-87-P2_3p    100.000 11  0   0   5   15  13  3   0.54    22.3
2-1218024   Pma-Mir-96-P3o2_5p  100.000 11  0   0   16  26  9   19  0.78    22.3
3-551889    Pma-Mir-96-P3o2_5p  100.000 11  0   0   16  26  9   19  0.78    22.3
4-472935    Dno-Mir-1271_5p 100.000 9   0   0   1   9   21  13  9.1 18.3
5-375248    Bla-Mir-4857_5p 100.000 9   0   0   21  29  10  18  11  18.3
6-292862    Mml-Mir-2114_5p 100.000 10  0   0   13  22  11  20  2.0 20.3
7-292012    Mml-Mir-2114_5p 100.000 10  0   0   13  22  11  20  2.0 20.3
8-258161    Mdo-Mir-7398-P25_3p 100.000 10  0   0   15  24  10  1   2.9 20.3
9-226514    Mml-Mir-2114_5p 100.000 10  0   0   14  23  11  20  2.2 20.3
10-214759   Cin-Mir-4053_3p 100.000 9   0   0   5   13  14  22  12  18.3

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

  4555070 /home/shared/8TB_HDD_02/shedurkin/deep-dive/E-Peve/output/10.2-Peve-sRNAseq-BLASTn-31bp-fastp-merged/miRBase-BLASTn-eval_1000.outfmt6
  4555070 /home/shared/8TB_HDD_02/shedurkin/deep-dive/E-Peve/output/10.2-Peve-sRNAseq-BLASTn-31bp-fastp-merged/MirGene-BLASTn-eval_1000.outfmt6
  9110140 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/E-Peve/output/10.2-Peve-sRNAseq-BLASTn-31bp-fastp-merged/miRBase-BLASTn-eval_10.outfmt6 <==
1-2039267   ssc-miR-7143-5p 100.000 11  0   0   12  22  8   18  1.4 22.3
2-1218024   ppc-miR-8214-5p 100.000 13  0   0   12  24  18  6   0.11    26.3
3-551889    ppc-miR-8214-5p 100.000 13  0   0   12  24  18  6   0.11    26.3
4-472935    lja-miR11150-3p 100.000 10  0   0   13  22  10  19  6.1 20.3
5-375248    rlcv-miR-rL1-23-3p  100.000 11  0   0   18  28  2   12  1.8 22.3
6-292862    cpo-miR-1379-5p 100.000 12  0   0   1   12  18  7   0.29    24.3
7-292012    cpo-miR-1379-5p 100.000 12  0   0   1   12  18  7   0.34    24.3
8-258161    mdo-miR-12324a-3p   100.000 11  0   0   3   13  11  1   2.0 22.3
9-226514    cpo-miR-1379-5p 100.000 12  0   0   2   13  18  7   0.36    24.3
10-214759   oni-miR-10971   100.000 11  0   0   16  26  8   18  1.8 22.3

==> /home/shared/8TB_HDD_02/shedurkin/deep-dive/E-Peve/output/10.2-Peve-sRNAseq-BLASTn-31bp-fastp-merged/MirGene-BLASTn-eval_10.outfmt6 <==
1-2039267   Tca-Mir-87-P2_3p    100.000 11  0   0   5   15  13  3   0.54    22.3
2-1218024   Pma-Mir-96-P3o2_5p  100.000 11  0   0   16  26  9   19  0.78    22.3
3-551889    Pma-Mir-96-P3o2_5p  100.000 11  0   0   16  26  9   19  0.78    22.3
4-472935    Dno-Mir-1271_5p 100.000 9   0   0   1   9   21  13  9.1 18.3
6-292862    Mml-Mir-2114_5p 100.000 10  0   0   13  22  11  20  2.0 20.3
7-292012    Mml-Mir-2114_5p 100.000 10  0   0   13  22  11  20  2.0 20.3
8-258161    Mdo-Mir-7398-P25_3p 100.000 10  0   0   15  24  10  1   2.9 20.3
9-226514    Mml-Mir-2114_5p 100.000 10  0   0   14  23  11  20  2.2 20.3
11-173986   Csc-Mir-10-P2r2_5p  100.000 19  0   0   2   20  3   21  7.12e-06    38.2
12-168146   Gga-Mir-7441_5p 100.000 10  0   0   13  22  3   12  2.6 20.3

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

  4535565 /home/shared/8TB_HDD_02/shedurkin/deep-dive/E-Peve/output/10.2-Peve-sRNAseq-BLASTn-31bp-fastp-merged/miRBase-BLASTn-eval_10.outfmt6
  4285839 /home/shared/8TB_HDD_02/shedurkin/deep-dive/E-Peve/output/10.2-Peve-sRNAseq-BLASTn-31bp-fastp-merged/MirGene-BLASTn-eval_10.outfmt6
  8821404 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

LS0tCnRpdGxlOiAiMTAuMi1QZXZlLXNSTkFzZXEtQkxBU1RuLTMxYnAtZmFzdHAtbWVyZ2VkIgphdXRob3I6ICJLYXRobGVlbiBEdXJraW4iCmRhdGU6ICIyMDI0LTA0LTEyIgphbHdheXNfYWxsb3dfaHRtbDogdHJ1ZQpvdXRwdXQ6IAogIGJvb2tkb3duOjpodG1sX2RvY3VtZW50MjoKICAgIHRoZW1lOiBjb3NtbwogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQogICAgY29kZV9mb2xkaW5nOiBzaG93CiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlCiAgZ2l0aHViX2RvY3VtZW50OgogICAgdG9jOiB0cnVlCiAgICB0b2NfZGVwdGg6IDMKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQogICAgaHRtbF9wcmV2aWV3OiB0cnVlICAKI2JpYmxpb2dyYXBoeTogcmVmZXJlbmNlcy5iaWIKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KbGlicmFyeShrbml0cikKbGlicmFyeShrYWJsZUV4dHJhKQpsaWJyYXJ5KGRwbHlyKQprbml0cjo6b3B0c19jaHVuayRzZXQoCiAgZWNobyA9IFRSVUUsICAgICAgICAgIyBEaXNwbGF5IGNvZGUgY2h1bmtzCiAgZXZhbCA9IEZBTFNFLCAgICAgICAgIyBFdmFsdWF0ZSBjb2RlIGNodW5rcwogIHdhcm5pbmcgPSBGQUxTRSwgICAgICMgSGlkZSB3YXJuaW5ncwogIG1lc3NhZ2UgPSBGQUxTRSwgICAgICMgSGlkZSBtZXNzYWdlcwogIGNvbW1lbnQgPSAiIiAgICAgICAgICAjIFByZXZlbnRzIGFwcGVuZGluZyAnIyMnIHRvIGJlZ2lubmluZyBvZiBsaW5lcyBpbiBjb2RlIG91dHB1dAopCgpgYGAKClRoaXMgbm90ZWJvb2sgcGVyZm9ybXMgYSBzaW1wbGUgW05DQkkgQkxBU1RuXShodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L2Jvb2tzL05CSzI3OTY5MC8pIFtAYWx0c2NodWwxOTkwXSBhZ2FpbnN0IHR3byBtaVJOQSBkYXRhYmFzZXMgdG8gYXR0ZW1wdCB0byBpZGVudGlmeSBtaVJOQSBpbiBfUC5ldmVybWFubmlfIHNSTkFzZXE6CgotIFttaVJCYXNlXShodHRwczovL21pcmJhc2Uub3JnL2Rvd25sb2FkLykKCi0gW01pckdlbmVEQl0oaHR0cHM6Ly93d3cubWlyZ2VuZWRiLm9yZy9kb3dubG9hZCkKClJlbGllcyBvbiB0aGUgZm9sbG93aW5nIHNvZnR3YXJlOgogIAotIFtmYXN0eF90b29sa2l0XShodHRwOi8vaGFubm9ubGFiLmNzaGwuZWR1L2Zhc3R4X3Rvb2xraXQvKQoKICAtIGBmYXN0eF9jb2xsYXBzZXJgOiBDb2xsYXBzZXMgZHVwbGljYXRlIHNlcXVlbmNlcyBpbiBGYXN0QS9RIGludG8gc2luZ2xlIHNlcXVlbmNlLgoKIyBDcmVhdGUgYSBCYXNoIHZhcmlhYmxlcyBmaWxlCgpUaGlzIGFsbG93cyB1c2FnZSBvZiBCYXNoIHZhcmlhYmxlcyBhY3Jvc3MgUiBNYXJrZG93biBjaHVua3MuCgpgYGB7ciBzYXZlLWJhc2gtdmFyaWFibGVzLXRvLXJ2YXJzLWZpbGUsIGVuZ2luZT0nYmFzaCcsIGV2YWw9VFJVRX0KewplY2hvICIjIyMjIEFzc2lnbiBWYXJpYWJsZXMgIyMjIyIKZWNobyAiIgoKZWNobyAiIyBUcmltbWVkIEZhc3RRIG5hbWluZyBwYXR0ZXJuIgplY2hvICJleHBvcnQgdHJpbW1lZF9mYXN0cXNfcGF0dGVybj0nKi0zMWJwLW1lcmdlZC5mcS5neiciCgplY2hvICIjIERhdGEgZGlyZWN0b3JpZXMiCmVjaG8gJ2V4cG9ydCBkZWVwX2RpdmVfZGlyPS9ob21lL3NoYXJlZC84VEJfSEREXzAyL3NoZWR1cmtpbi9kZWVwLWRpdmUnCmVjaG8gJ2V4cG9ydCBkZWVwX2RpdmVfZGF0YV9kaXI9IiR7ZGVlcF9kaXZlX2Rpcn0vZGF0YSInCmVjaG8gJ2V4cG9ydCBvdXRwdXRfZGlyX3RvcD0ke2RlZXBfZGl2ZV9kaXJ9L0UtUGV2ZS9vdXRwdXQvMTAuMi1QZXZlLXNSTkFzZXEtQkxBU1RuLTMxYnAtZmFzdHAtbWVyZ2VkJwplY2hvICdleHBvcnQgdHJpbW1lZF9mYXN0cXNfZGlyPSIke2RlZXBfZGl2ZV9kaXJ9L0UtUGV2ZS9vdXRwdXQvMDYuMi1QZXZlLXNSTkFzZXEtdHJpbW1pbmctMzFicC1mYXN0cC1tZXJnZWQvdHJpbW1lZC1yZWFkcyInCmVjaG8gJ2V4cG9ydCBibGFzdF9kYnNfZGlyPSIke2RlZXBfZGl2ZV9kaXJ9L2RhdGEvYmxhc3RfZGJzIicKZWNobyAiIgoKZWNobyAiIyBJbnB1dC9PdXRwdXQgZmlsZXMiCmVjaG8gJ2V4cG9ydCBjb2xsYXBzZWRfcmVhZHNfZmFzdGE9ImNvbGxhcHNlZC1yZWFkcy1hbGwuZmFzdGEiJwplY2hvICdleHBvcnQgY29uY2F0ZW5hdGVkX3RyaW1tZWRfcmVhZHNfZmFzdHE9ImNvbmNhdGVuYXRlZC10cmltbWVkLXJlYWRzLWFsbC5mYXN0cS5neiInCmVjaG8gJ2V4cG9ydCBtaXJiYXNlX21hdHVyZV9mYXN0YV9uYW1lPSJtaXJiYXNlLW1hdHVyZS12MjIuMS5mYSInCmVjaG8gJ2V4cG9ydCBtaXJiYXNlX21hdHVyZV9mYXN0YV9ub19VPSJtaXJiYXNlLW1hdHVyZS12MjIuMS1ub19VLmZhIicKZWNobyAnZXhwb3J0IG1pcmdlbmVfbWF0dXJlX2Zhc3RhX25hbWU9Im1pcmdlbmUtbWF0dXJlLWFsbC12Mi4xLmZhIicKZWNobyAnZXhwb3J0IG1pcmdlbmVfbWF0dXJlX2Zhc3RhX25vX1U9Im1pcmdlbmUtbWF0dXJlLWFsbC12Mi4xLW5vX1UuZmEiJwplY2hvICIiCgplY2hvICIjIEV4dGVybmFsIGRhdGEgVVJMcyIKZWNobyAnZXhwb3J0IG1pcmdlbmVkYl9mYXN0YV91cmw9Imh0dHBzOi8vd3d3Lm1pcmdlbmVkYi5vcmcvZmFzdGEvQUxMP21hdD0xIicKZWNobyAiIgoKZWNobyAiIyBQYXRocyB0byBwcm9ncmFtcyIKZWNobyAnZXhwb3J0IG5jYmlfYmxhc3RfZGlyPSIvaG9tZS9zaGFyZWQvbmNiaS1ibGFzdC0yLjE1LjArL2Jpbi8iJwplY2hvICdleHBvcnQgbmNiaV9ibGFzdG49IiR7bmNiaV9ibGFzdF9kaXJ9L2JsYXN0biInCmVjaG8gJ2V4cG9ydCBuY2JpX21ha2VibGFzdF9kYj0iJHtuY2JpX2JsYXN0X2Rpcn0vbWFrZWJsYXN0ZGIiJwplY2hvICdleHBvcnQgZmFzdHhfY29sbGFwc2VyPSIvaG9tZS9zaGFyZWQvZmFzdHhfdG9vbGtpdF8wLjAuMTNfYmluYXJpZXNfTGludXhfMi42X2FtZDY0L2Jpbi9mYXN0eF9jb2xsYXBzZXIiJwoKZWNobyAiIyBTZXQgbnVtYmVyIG9mIENQVXMgdG8gdXNlIgplY2hvICdleHBvcnQgdGhyZWFkcz00NicKZWNobyAiIgoKZWNobyAiIyBJbml0aWFsaXplIGFycmF5cyIKZWNobyAnZXhwb3J0IHRyaW1tZWRfZmFzdHFzX2FycmF5PSgpJwoKCn0gPiAuYmFzaHZhcnMKCmNhdCAuYmFzaHZhcnMKYGBgCgoKIyBEb3dubG9hZCBNaXJHZW5lREIgRmFzdGEKYGBge3IgZG93bmxvYWQtbWlyZ2VuZS1kYi1GYXN0QSwgZW5naW5lPSdiYXNoJywgZXZhbD1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKd2dldCBcCi0tbm8tY2hlY2stY2VydGlmaWNhdGUgXAotLWNvbnRpbnVlIFwKLS1uby1ob3N0LWRpcmVjdG9yaWVzIFwKLS1uby1kaXJlY3RvcmllcyBcCi0tbm8tcGFyZW50IFwKLS1xdWlldCBcCi0tZXhlY3V0ZSByb2JvdHM9b2ZmIFwKLS1vdXRwdXQtZG9jdW1lbnQgJHtkZWVwX2RpdmVfZGF0YV9kaXJ9LyR7bWlyZ2VuZV9tYXR1cmVfZmFzdGFfbmFtZX0gXAogJHttaXJnZW5lZGJfZmFzdGFfdXJsfQogCiBscyAtbGggJHtkZWVwX2RpdmVfZGF0YV9kaXJ9CmBgYAoKIyMgSW5zcGVjdCBtaVJOQSBGYXN0QXMKYGBge3IgaW5zcGVjdC1taVJOQS1GYXN0QXMsIGVuZ2luZT0nYmFzaCcsIGV2YWw9VFJVRX0KIyBMb2FkIGJhc2ggdmFyaWFibGVzIGludG8gbWVtb3J5CnNvdXJjZSAuYmFzaHZhcnMKCmhlYWQgIiR7ZGVlcF9kaXZlX2RhdGFfZGlyfSIvbWlyKi5mYQpgYGAKCgojIENvbnZlcnQgYFVgIHRvIGBUYCBpbiBtaVJOQSBGYXN0QXMKClRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgdGhlIHNSTkFzZXEgc2VxdWVuY2VzIGRvIF9ub3RfIGhhdmUgdXJhY2lscyAoYFVgKSAtIHRoZXkgaGF2ZSB0aHltaW5lcyAoYFRgKS4KCmBgYHtyIGNvbnZlcnQtVS10by1ULCBlbmdpbmU9J2Jhc2gnLCBldmFsPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgojIENvbnZlcnQgbWlSQmFzZSBGYXN0QQpzZWQgJy9eW14+XS9zL1UvVC9nJyAiJHtkZWVwX2RpdmVfZGF0YV9kaXJ9LyR7bWlyYmFzZV9tYXR1cmVfZmFzdGFfbmFtZX0iIFwKPiAiJHtkZWVwX2RpdmVfZGF0YV9kaXJ9LyR7bWlyYmFzZV9tYXR1cmVfZmFzdGFfbm9fVX0iCgojIENvbnZlcnQgTWlyR2VuZSBGYXN0QQpzZWQgJy9eW14+XS9zL1UvVC9nJyAiJHtkZWVwX2RpdmVfZGF0YV9kaXJ9LyR7bWlyZ2VuZV9tYXR1cmVfZmFzdGFfbmFtZX0iIFwKPiAiJHtkZWVwX2RpdmVfZGF0YV9kaXJ9LyR7bWlyZ2VuZV9tYXR1cmVfZmFzdGFfbm9fVX0iCgpoZWFkICR7ZGVlcF9kaXZlX2RhdGFfZGlyfS8qLmZhCiAgCmBgYAoKIyBDcmVhdGUgQkxBU1QgRGF0YWJhc2VzCmBgYHtyIG1ha2UtYmxhc3QtZGJzLCBlbmdpbmU9J2Jhc2gnLCBldmFsPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgoKCiMgbWlSQmFzZSBCTEFTVCBEQgojIyBNYWtlIHN1cmUgb3V0cHV0IGRpcmVjdG9yeSBleGlzdHMKaWYgWyAhIC1kICIke2JsYXN0X2Ric19kaXJ9IiBdOyB0aGVuCiAgbWtkaXIgLS1wYXJlbnRzICIke2JsYXN0X2Ric19kaXJ9IgpmaQoKIyMgQ2hlY2sgZm9yIHByZS1leGlzaW5nIGRhdGFiYXNlCmlmIFsgISAtZiAiJHtibGFzdF9kYnNfZGlyfS8ke21pcmdlbmVfbWF0dXJlX2Zhc3RhX25vX1UlLip9LmJsYXN0ZGIubG9nIiBdOyB0aGVuCiAgJHtuY2JpX21ha2VibGFzdF9kYn0gXAogIC1pbiAke2RlZXBfZGl2ZV9kYXRhX2Rpcn0vJHttaXJnZW5lX21hdHVyZV9mYXN0YV9ub19VfSBcCiAgLXRpdGxlICR7bWlyZ2VuZV9tYXR1cmVfZmFzdGFfbm9fVSUuKn0gXAogIC1kYnR5cGUgbnVjbCBcCiAgLW91dCAke2JsYXN0X2Ric19kaXJ9LyR7bWlyZ2VuZV9tYXR1cmVfZmFzdGFfbm9fVSUuKn0gXAogIC1sb2dmaWxlICR7Ymxhc3RfZGJzX2Rpcn0vJHttaXJnZW5lX21hdHVyZV9mYXN0YV9ub19VJS4qfS5ibGFzdGRiLmxvZwpmaQoKIyBtaVJCYXNlIEJMQVNUIERCCiMjIE1ha2Ugc3VyZSBvdXRwdXQgZGlyZWN0b3J5IGV4aXN0cwppZiBbICEgLWQgIiR7Ymxhc3RfZGJzX2Rpcn0iIF07IHRoZW4KICBta2RpciAtLXBhcmVudHMgIiR7Ymxhc3RfZGJzX2Rpcn0iCmZpCgojIyBDaGVjayBmb3IgcHJlLWV4aXNpbmcgZGF0YWJhc2UKaWYgWyAhIC1mICIke2JsYXN0X2Ric19kaXJ9LyR7bWlyYmFzZV9tYXR1cmVfZmFzdGFfbm9fVSUuKn0uYmxhc3RkYi5sb2ciIF07IHRoZW4KICAke25jYmlfbWFrZWJsYXN0X2RifSBcCiAgLWluICR7ZGVlcF9kaXZlX2RhdGFfZGlyfS8ke21pcmJhc2VfbWF0dXJlX2Zhc3RhX25vX1V9IFwKICAtdGl0bGUgJHttaXJiYXNlX21hdHVyZV9mYXN0YV9ub19VJS4qfSBcCiAgLWRidHlwZSBudWNsIFwKICAtb3V0ICR7Ymxhc3RfZGJzX2Rpcn0vJHttaXJiYXNlX21hdHVyZV9mYXN0YV9ub19VJS4qfSBcCiAgLWxvZ2ZpbGUgJHtibGFzdF9kYnNfZGlyfS8ke21pcmJhc2VfbWF0dXJlX2Zhc3RhX25vX1UlLip9LmJsYXN0ZGIubG9nCmZpCmBgYAoKCiMgUHJlcGFyZSByZWFkcyBmb3IgQkxBU1RpbmcKCiMjIENvbmNhdGVuYXRlIGFsbCB0cmltbWVkIHJlYWRzCmBgYHtyIGNvbmNhdGVuYXRlLXRyaW1tZWQtcmVhZHMsIGVuZ2luZT0nYmFzaCcsIGV2YWw9VFJVRX0KIyBMb2FkIGJhc2ggdmFyaWFibGVzIGludG8gbWVtb3J5CnNvdXJjZSAuYmFzaHZhcnMKCiMgQ2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiBjb25jYXRlbmF0ZWQgRmFzdEEgYmVmb3JlIHJ1bm5pbmcKaWYgWyAhIC1mICIke291dHB1dF9kaXJfdG9wfS8ke2NvbmNhdGVuYXRlZF90cmltbWVkX3JlYWRzX2Zhc3RxfSIgXTsgdGhlbgogIGNhdCAke3RyaW1tZWRfZmFzdHFzX2Rpcn0vKi5neiBcCiAgPiAiJHtvdXRwdXRfZGlyX3RvcH0vJHtjb25jYXRlbmF0ZWRfdHJpbW1lZF9yZWFkc19mYXN0cX0iCmZpCgpscyAtbGggIiR7b3V0cHV0X2Rpcl90b3B9LyR7Y29uY2F0ZW5hdGVkX3RyaW1tZWRfcmVhZHNfZmFzdHF9IgpgYGAKCiMjIENvbGxhcHNlIHJlYWRzIHRvIEZhc3RBCgpVc2VzIGBmYXN0eF9jb2xsYXBzZXJgIHRvIGNvbGxhcHNlIHRvIHVuaXF1ZSByZWFkcy4KClJlcXVpcmVzIHVuZG9jdW1lbnRlZCBxdWFsaXR5IHNldHRpbmcuIEhhdmUgc2VsZWN0ZWQgYDMwYCBhcyBjdXR0b2ZmOiBgLVEzMGAuCmBgYHtyIGNvbGxhcHNlLXJlYWRzLXRvLUZhc3RBLCBlbmdpbmU9J2Jhc2gnLCBldmFsPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgojIENoZWNrIGZvciBleGlzdGVuY2Ugb2YgY29sbGFwc2VkIEZhc3RBIGJlZm9yZSBydW5uaW5nCnRpbWUgXAppZiBbICEgLWYgIiR7b3V0cHV0X2Rpcl90b3B9LyR7Y29sbGFwc2VkX3JlYWRzX2Zhc3RhfSIgXTsgdGhlbgogIHpjYXQgJHtvdXRwdXRfZGlyX3RvcH0vJHtjb25jYXRlbmF0ZWRfdHJpbW1lZF9yZWFkc19mYXN0cX0gXAogIHwgJHtmYXN0eF9jb2xsYXBzZXJ9IFwKICAtUTMwIFwKICAtbyAiJHtvdXRwdXRfZGlyX3RvcH0vJHtjb2xsYXBzZWRfcmVhZHNfZmFzdGF9IgpmaQoKaGVhZCAiJHtvdXRwdXRfZGlyX3RvcH0vJHtjb2xsYXBzZWRfcmVhZHNfZmFzdGF9IgoKZWNobyAiIgplY2hvICIiCgp0b3RhbF9yZWFkcz0kKGdyZXAgLWMgIl4+IiAke291dHB1dF9kaXJfdG9wfS8ke2NvbGxhcHNlZF9yZWFkc19mYXN0YX0pCmVjaG8gIlRvdGFsIG51bWJlciBvZiByZWFkcyBhZnRlciBjb2xsYXBzZTogJHt0b3RhbF9yZWFkc30iCmBgYAoKIyBSdW4gQkxBU1RuIERlZmF1bHQgRS12YWx1ZQoKLSAxMDAwIGZvciBibGFzdG4tc2hvcnQKClJ1bnMgQkxBU1RuIHVzaW5nIHRoZSBgYmxhc3RuLXNob3J0YCB0YXNrIGZvciBzZXF1ZW5jZXMgPCAzMGJwLgoKTG9vayBmb3IgdG9wIG1hdGNoIChgLW1heF9oc3BzIDFgICYgYC1tYXhfdGFyZ2V0X3NlcXMgMWApIGZvciBlYWNoIHF1ZXJ5LgoKICAtIFN1cHByZXNzIHN1YnNlcXVlbnQgd2FybmluZyBgRXhhbWluaW5nIDUgb3IgbW9yZSBtYXRjaGVzIGlzIHJlY29tbWVuZGVkYCBieQogIHJlZGlyZWN0aW5nIHN0ZG91dDogYDI+IC9kZXYvbnVsbGAKCiMjIG1pUkJhc2UgQkxBU1RuIERlZmF1bHQgZS12YWx1ZQpgYGB7ciBtaVJCYXNlLUJMQVNUbi1kZWZhdWx0LWV2YWwsIGVuZ2luZT0nYmFzaCcsIGNhY2hlPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgp0aW1lIFwKJHtuY2JpX2JsYXN0bn0gXAotZGIgJHtibGFzdF9kYnNfZGlyfS8ke21pcmJhc2VfbWF0dXJlX2Zhc3RhX25vX1UlLip9IFwKLXF1ZXJ5ICR7b3V0cHV0X2Rpcl90b3B9LyR7Y29sbGFwc2VkX3JlYWRzX2Zhc3RhfSBcCi1vdXQgJHtvdXRwdXRfZGlyX3RvcH0vbWlSQmFzZS1CTEFTVG4tZXZhbF8xMDAwLm91dGZtdDYgXAotdGFzayBibGFzdG4tc2hvcnQgXAotbWF4X2hzcHMgMSBcCi1tYXhfdGFyZ2V0X3NlcXMgMSBcCi1vdXRmbXQgNiBcCi1udW1fdGhyZWFkcyAke3RocmVhZHN9IFwKMj4gL2Rldi9udWxsCmBgYAoKIyMgTWlyR2VuZSBCTEFTVG4gRGVmYXVsdCBlLXZhbHVlCgpgYGB7ciBNaXJHZW5lLUJMQVNUbi1kZWZhdWx0LWV2YWwsIGVuZ2luZT0nYmFzaCcsIGNhY2hlPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgp0aW1lIFwKJHtuY2JpX2JsYXN0bn0gXAotZGIgJHtibGFzdF9kYnNfZGlyfS8ke21pcmdlbmVfbWF0dXJlX2Zhc3RhX25vX1UlLip9IFwKLXF1ZXJ5ICR7b3V0cHV0X2Rpcl90b3B9LyR7Y29sbGFwc2VkX3JlYWRzX2Zhc3RhfSBcCi1vdXQgJHtvdXRwdXRfZGlyX3RvcH0vTWlyR2VuZS1CTEFTVG4tZXZhbF8xMDAwLm91dGZtdDYgXAotdGFzayBibGFzdG4tc2hvcnQgXAotbWF4X2hzcHMgMSBcCi1tYXhfdGFyZ2V0X3NlcXMgMSBcCi1vdXRmbXQgNiBcCi1udW1fdGhyZWFkcyAke3RocmVhZHN9IFwKMj4gL2Rldi9udWxsCmBgYAoKCiMgQkxBU1RuIEUtdmFsdWUgPSAxMAoKUnVubmluZyB0aGlzIGZvciBzaW1wbGUgY29tcGFyaXNvbiB0byB0aGUgZGVmYXVsdCBgYmxhc3RuLXNob3J0YCB2YWx1ZSBvZiAxMDAwLgoKIyMgbWlSQmFzZSBCTEFTVG4gZS12YWx1ZSA9IDEwCmBgYHtyIG1pUkJhc2UtQkxBU1RuLTEwLWV2YWwsIGVuZ2luZT0nYmFzaCcsIGNhY2hlPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgp0aW1lIFwKJHtuY2JpX2JsYXN0bn0gXAotZGIgJHtibGFzdF9kYnNfZGlyfS8ke21pcmJhc2VfbWF0dXJlX2Zhc3RhX25vX1UlLip9IFwKLXF1ZXJ5ICR7b3V0cHV0X2Rpcl90b3B9LyR7Y29sbGFwc2VkX3JlYWRzX2Zhc3RhfSBcCi1vdXQgJHtvdXRwdXRfZGlyX3RvcH0vbWlSQmFzZS1CTEFTVG4tZXZhbF8xMC5vdXRmbXQ2IFwKLXRhc2sgYmxhc3RuLXNob3J0IFwKLWV2YWx1ZSAxMCBcCi1tYXhfaHNwcyAxIFwKLW1heF90YXJnZXRfc2VxcyAxIFwKLW91dGZtdCA2IFwKLW51bV90aHJlYWRzICR7dGhyZWFkc30gXAoyPiAvZGV2L251bGwKYGBgCgojIyBNaXJHZW5lIEJMQVNUbiBlLXZhbHVlID0gMTAKCmBgYHtyIE1pckdlbmUtQkxBU1RuLTEwLWV2YWwsIGVuZ2luZT0nYmFzaCcsIGNhY2hlPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgp0aW1lIFwKJHtuY2JpX2JsYXN0bn0gXAotZGIgJHtibGFzdF9kYnNfZGlyfS8ke21pcmdlbmVfbWF0dXJlX2Zhc3RhX25vX1UlLip9IFwKLXF1ZXJ5ICR7b3V0cHV0X2Rpcl90b3B9LyR7Y29sbGFwc2VkX3JlYWRzX2Zhc3RhfSBcCi1vdXQgJHtvdXRwdXRfZGlyX3RvcH0vTWlyR2VuZS1CTEFTVG4tZXZhbF8xMC5vdXRmbXQ2IFwKLXRhc2sgYmxhc3RuLXNob3J0IFwKLWV2YWx1ZSAxMCBcCi1tYXhfaHNwcyAxIFwKLW1heF90YXJnZXRfc2VxcyAxIFwKLW91dGZtdCA2IFwKLW51bV90aHJlYWRzICR7dGhyZWFkc30gXAoyPiAvZGV2L251bGwKYGBgCgojIFJlc3VsdHMKCiMjIENoZWNrIEJMQVNUbiBEZWZhdWx0IGUtdmFsdWUgcmVzdWx0cwpgYGB7ciBibGFzdG4tZGVmYXVsdC1ldmFsdWUtcmVzdWx0cywgZW5naW5lPSdiYXNoJywgZXZhbD1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKaGVhZCAke291dHB1dF9kaXJfdG9wfS8qZXZhbF8xMDAwLm91dGZtdDYKCmVjaG8gIiIKZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCmVjaG8gIiIKCndjIC1sICR7b3V0cHV0X2Rpcl90b3B9LypldmFsXzEwMDAub3V0Zm10NgpgYGAKCiMjIENoZWNrIEJMQVNUbiBlLXZhbHVlID0gMTAgcmVzdWx0cwpgYGB7ciBibGFzdG4tMTAtZXZhbHVlLXJlc3VsdHMsIGVuZ2luZT0nYmFzaCcsIGV2YWw9VFJVRX0KIyBMb2FkIGJhc2ggdmFyaWFibGVzIGludG8gbWVtb3J5CnNvdXJjZSAuYmFzaHZhcnMKCmhlYWQgJHtvdXRwdXRfZGlyX3RvcH0vKmV2YWxfMTAub3V0Zm10NgoKZWNobyAiIgplY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKZWNobyAiIgoKd2MgLWwgJHtvdXRwdXRfZGlyX3RvcH0vKmV2YWxfMTAub3V0Zm10NgpgYGAKClRoZSBkZWZhdWx0IGUtdmFsdWUgcmVzdWx0cyBpbiBhbGlnbm1lbnRzIGZvciBhbGwgcXVlcnkgc2VxdWVuY2VzLCB3aGljaCBpcyBsaWtlbHkgbm90IHdoYXQgd2UnZCBleHBlY3QuCgpEZWNyZWFzaW5nIHRoZSBlLXZhbHVlIHJlc3VsdGVkIGluIGZld2VyIHF1ZXJ5IGFsaWdubWVudHMsIGFzIHdlJ2QgZXhwZWN0LgoKRm9yIGZ1cnRoZXIgYW5hbHlzaXMsIHdlIHNob3VsZCBwcm9iYWJseSBkaXNjdXNzIGEgcmVhc29uYWJsZSBlLXZhbHVlIHRvIHVzZSBmb3IgZmlsdGVyaW5nLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIENpdGF0aW9ucwo=