App-Anchr
view release on metacpan or search on metacpan
doc/e_coli.md view on Meta::CPAN
mergeQ25L90/anchor.merge.fasta \
mergeQ30L30/anchor.merge.fasta \
mergeQ30L60/anchor.merge.fasta \
mergeQ30L90/anchor.merge.fasta \
1_genome/paralogs.fas \
--label "mergeQ20L30,mergeQ20L60,mergeQ20L90,mergeQ25L30,mergeQ25L60,mergeQ25L90,mergeQ30L30,mergeQ30L60,mergeQ30L90,paralogs" \
-o 9_qa_mergeQxxLxx
```
## Merge anchors
```bash
BASE_NAME=e_coli
cd ${HOME}/data/anchr/${BASE_NAME}
# merge anchors
mkdir -p merge
anchr contained \
$(
parallel -k --no-run-if-empty -j 6 "
if [ -e Q{1}L{2}X{3}P{4}/anchor/pe.anchor.fa ]; then
echo Q{1}L{2}X{3}P{4}/anchor/pe.anchor.fa
fi
" ::: 25 30 ::: 60 ::: 40 80 120 160 200 ::: 000 001 002 003 004 005
) \
--len 1000 --idt 0.98 --proportion 0.99999 --parallel 16 \
-o stdout \
| faops filter -a 1000 -l 0 stdin merge/anchor.contained.fasta
anchr orient merge/anchor.contained.fasta --len 1000 --idt 0.98 -o merge/anchor.orient.fasta
anchr merge merge/anchor.orient.fasta --len 1000 --idt 0.999 -o merge/anchor.merge0.fasta
anchr contained merge/anchor.merge0.fasta --len 1000 --idt 0.98 \
--proportion 0.99 --parallel 16 -o stdout \
| faops filter -a 1000 -l 0 stdin merge/anchor.merge1.fasta
faops order merge/anchor.merge1.fasta \
<(faops size merge/anchor.merge1.fasta | sort -n -r -k2,2 | cut -f 1) \
merge/anchor.merge.fasta
# merge others
mkdir -p merge
anchr contained \
$(
parallel -k --no-run-if-empty -j 6 "
if [ -e Q{1}L{2}X{3}P{4}/anchor/pe.others.fa ]; then
echo Q{1}L{2}X{3}P{4}/anchor/pe.others.fa
fi
" ::: 25 30 ::: 60 ::: 40 80 120 160 200 ::: 000 001 002 003 004 005
) \
--len 1000 --idt 0.98 --proportion 0.99999 --parallel 16 \
-o stdout \
| faops filter -a 1000 -l 0 stdin merge/others.contained.fasta
anchr orient merge/others.contained.fasta --len 1000 --idt 0.98 -o merge/others.orient.fasta
anchr merge merge/others.orient.fasta --len 1000 --idt 0.999 -o stdout \
| faops filter -a 1000 -l 0 stdin merge/others.merge.fasta
# anchor sort on ref
bash ~/Scripts/cpan/App-Anchr/share/sort_on_ref.sh merge/anchor.merge.fasta 1_genome/genome.fa merge/anchor.sort
# mummerplot files
nucmer -l 200 1_genome/genome.fa merge/anchor.sort.fa
mummerplot out.delta --png --large -p anchor.sort
rm *.[fr]plot
rm out.delta
rm *.gp
mv anchor.sort.png merge/
# minidot
minimap merge/anchor.sort.fa 1_genome/genome.fa \
| minidot - > merge/anchor.minidot.eps
# quast
rm -fr 9_qa_merge
quast --no-check --threads 16 \
-R 1_genome/genome.fa \
8_spades/contigs.fasta \
8_spades/scaffolds.fasta \
8_spades_Q30L60/scaffolds.fasta \
8_platanus/out_contig.fa \
8_platanus/out_gapClosed.fa \
8_platanus_quorum/out_gapClosed.fa \
8_platanus_Q30L60/out_gapClosed.fa \
merge/anchor.merge.fasta \
merge/scaffold/out_scaffold.fa \
merge/scaffold/out_gapClosed.fa \
1_genome/paralogs.fas \
--label "spades.contig,spades.scaffold,spades_Q30L60,platanus.contig,platanus.scaffold,platanus_quorum,platanus_Q30L60,merge,merge.scaffold,merge.gapClosed,paralogs" \
-o 9_qa_merge
```
## Scaffolding with PE
```bash
BASE_NAME=e_coli
cd ${HOME}/data/anchr/${BASE_NAME}
# PE
mkdir -p merge/scaffold
cd merge/scaffold
if [ ! -e pe.fa ]; then
faops interleave \
-p pe \
../../2_illumina/Q25L60/R1.fq.gz \
../../2_illumina/Q25L60/R2.fq.gz \
> pe.fa
fi
anchr scaffold \
../anchor.merge.fasta \
pe.fa \
-p 8 \
-o scaffold.sh
bash scaffold.sh
```
## Different K values
```bash
BASE_NAME=e_coli
cd ${HOME}/data/anchr/${BASE_NAME}
# oriR1: 67; oriR2: 43; Q30L60: 71
parallel -j 3 "
doc/e_coli.md view on Meta::CPAN
BASE_NAME=e_coli
cd ${HOME}/data/anchr/${BASE_NAME}
rm -fr anchorLong
anchr overlap2 \
--parallel 16 \
merge/anchor.merge.fasta \
3_pacbio/pacbio.40x.trim.fasta \
-d anchorLong \
-b 10 --len 1000 --idt 0.85 --all
pushd anchorLong
anchr cover \
--range "1-$(faops n50 -H -N 0 -C anchor.fasta)" \
--len 1000 --idt 0.85 -c 2 \
anchorLong.ovlp.tsv \
-o anchor.cover.json
cat anchor.cover.json | jq "." > environment.json
anchr overlap \
anchor.fasta \
--serial --len 30 --idt 0.9999 \
-o stdout \
| perl -nla -e '
BEGIN {
our %seen;
our %count_of;
}
@F == 13 or next;
$F[3] > 0.9999 or next;
my $pair = join( "-", sort { $a <=> $b } ( $F[0], $F[1], ) );
next if $seen{$pair};
$seen{$pair} = $_;
$count_of{ $F[0] }++;
$count_of{ $F[1] }++;
END {
for my $pair ( keys %seen ) {
my ($f_id, $g_id) = split "-", $pair;
next if $count_of{$f_id} > 2;
next if $count_of{$g_id} > 2;
print $seen{$pair};
}
}
' \
| sort -k 1n,1n -k 2n,2n \
> anchor.ovlp.tsv
rm -fr group
anchr group \
anchorLong.db \
anchorLong.ovlp.tsv \
--oa anchor.ovlp.tsv \
--parallel 16 \
--range $(cat environment.json | jq -r '.TRUSTED') \
--len 1000 --idt 0.85 --max "-30" -c 2 --png
cat group/groups.txt \
| parallel --no-run-if-empty -j 8 '
echo {};
anchr orient \
--len 1000 --idt 0.85 \
group/{}.anchor.fasta \
group/{}.long.fasta \
-r group/{}.restrict.tsv \
-o group/{}.strand.fasta;
anchr overlap --len 1000 --idt 0.85 \
group/{}.strand.fasta \
-o stdout \
| anchr restrict \
stdin group/{}.restrict.tsv \
-o group/{}.ovlp.tsv;
anchr overlap --len 10 --idt 0.9999 \
group/{}.strand.fasta \
-o stdout \
| perl -nla -e '\''
@F == 13 or next;
$F[3] > 0.9999 or next;
$F[9] == 0 or next;
$F[5] > 0 and $F[6] == $F[7] or next;
/anchor.+anchor/ or next;
print;
'\'' \
> group/{}.anchor.ovlp.tsv
anchr layout \
group/{}.ovlp.tsv \
group/{}.relation.tsv \
group/{}.strand.fasta \
--oa group/{}.anchor.ovlp.tsv \
--png \
-o group/{}.contig.fasta
'
popd
# false strand
cat anchorLong/group/*.ovlp.tsv \
| perl -nla -e '/anchor.+long/ or next; print $F[0] if $F[8] == 1;' \
| sort | uniq -c
cat \
anchorLong/group/non_grouped.fasta\
anchorLong/group/*.contig.fasta \
| faops filter -l 0 -a 1000 stdin anchorLong/contig.fasta
```
* contigTrim
```bash
BASE_NAME=e_coli
cd ${HOME}/data/anchr/${BASE_NAME}
rm -fr contigTrim
anchr overlap2 \
--parallel 16 \
anchorLong/contig.fasta \
canu-raw-40x/${BASE_NAME}.contigs.fasta \
-d contigTrim \
-b 10 --len 1000 --idt 0.98 --all
CONTIG_COUNT=$(faops n50 -H -N 0 -C contigTrim/anchor.fasta)
echo ${CONTIG_COUNT}
rm -fr contigTrim/group
anchr group \
--parallel 16 \
--keep \
contigTrim/anchorLong.db \
contigTrim/anchorLong.ovlp.tsv \
--range "1-${CONTIG_COUNT}" --len 1000 --idt 0.98 --max 20000 -c 1 --png
pushd contigTrim
cat group/groups.txt \
| parallel --no-run-if-empty -j 8 '
echo {};
anchr orient \
--len 1000 --idt 0.98 \
group/{}.anchor.fasta \
group/{}.long.fasta \
-r group/{}.restrict.tsv \
-o group/{}.strand.fasta;
anchr overlap --len 1000 --idt 0.98 --all \
group/{}.strand.fasta \
-o stdout \
| anchr restrict \
stdin group/{}.restrict.tsv \
-o group/{}.ovlp.tsv;
anchr layout \
group/{}.ovlp.tsv \
group/{}.relation.tsv \
group/{}.strand.fasta \
--png \
-o group/{}.contig.fasta
'
popd
cat \
contigTrim/group/non_grouped.fasta \
contigTrim/group/*.contig.fasta \
> contigTrim/contig.fasta
# minidot
minimap contigTrim/contig.fasta 1_genome/genome.fa \
| minidot - > contigTrim/contig.minidot.eps
```
## Final stats
* Stats
```bash
BASE_NAME=e_coli
cd ${HOME}/data/anchr/${BASE_NAME}
printf "| %s | %s | %s | %s |\n" \
"Name" "N50" "Sum" "#" \
> stat3.md
printf "|:--|--:|--:|--:|\n" >> stat3.md
printf "| %s | %s | %s | %s |\n" \
$(echo "Genome"; faops n50 -H -S -C 1_genome/genome.fa;) >> stat3.md
printf "| %s | %s | %s | %s |\n" \
$(echo "Paralogs"; faops n50 -H -S -C 1_genome/paralogs.fas;) >> stat3.md
printf "| %s | %s | %s | %s |\n" \
$(echo "anchor.merge"; faops n50 -H -S -C merge/anchor.merge.fasta;) >> stat3.md
printf "| %s | %s | %s | %s |\n" \
$(echo "others.merge"; faops n50 -H -S -C merge/others.merge.fasta;) >> stat3.md
printf "| %s | %s | %s | %s |\n" \
$(echo "anchorLong"; faops n50 -H -S -C anchorLong/contig.fasta;) >> stat3.md
printf "| %s | %s | %s | %s |\n" \
$(echo "contigTrim"; faops n50 -H -S -C contigTrim/contig.fasta;) >> stat3.md
printf "| %s | %s | %s | %s |\n" \
$(echo "spades.contig"; faops n50 -H -S -C 8_spades/contigs.fasta;) >> stat3.md
printf "| %s | %s | %s | %s |\n" \
$(echo "spades.scaffold"; faops n50 -H -S -C 8_spades/scaffolds.fasta;) >> stat3.md
printf "| %s | %s | %s | %s |\n" \
$(echo "platanus.contig"; faops n50 -H -S -C 8_platanus/out_contig.fa;) >> stat3.md
printf "| %s | %s | %s | %s |\n" \
$(echo "platanus.scaffold"; faops n50 -H -S -C 8_platanus/out_gapClosed.fa;) >> stat3.md
cat stat3.md
```
| Name | N50 | Sum | # |
|:------------------|--------:|--------:|-----:|
| Genome | 4641652 | 4641652 | 1 |
| Paralogs | 1934 | 195673 | 106 |
| anchor.merge | 73736 | 4532566 | 117 |
| others.merge | 5923 | 21847 | 6 |
| anchorLong | 80390 | 4531790 | 109 |
| contigTrim | 3790335 | 4616261 | 4 |
( run in 2.984 seconds using v1.01-cache-2.11-cpan-995e09ba956 )