diff options
author | Andreas Tille <tille@debian.org> | 2022-11-05 20:25:56 +0100 |
---|---|---|
committer | Étienne Mollier <emollier@debian.org> | 2022-11-05 20:25:56 +0100 |
commit | 0e9ff8194f337bb4ec66fda389dd99eb19a05b0b (patch) | |
tree | 96e0330ca869b4e91214524174bc3abb36f6e696 | |
parent | d26dfc9a18a5eff0a8072fb23cbd00df33917b9a (diff) |
Math::Random is in package libmath-random-perl which is
Last-Update: Mon, 09 Jan 2017 11:13:13 +0100
unfortunately in non-free thus we can not use it for testing while building
this package. Thus the occurrences of references and the surrounding code
is removed here.
Gbp-Pq: Name skip_test_requiring_non-free_libmath-random-perl.patch
-rw-r--r-- | Makefile | 9 | ||||
-rw-r--r-- | example/reads/simulate.pl | 115 |
2 files changed, 4 insertions, 120 deletions
@@ -527,12 +527,12 @@ install: all done .PHONY: simple-test -simple-test: perl-deps both both-debug both-sanitized +simple-test: all eval `perl -I $(CURDIR)/.tmp/lib/perl5 -Mlocal::lib=$(CURDIR)/.tmp` ; \ sh ./scripts/test/simple_tests.sh .PHONY: random-test -random-test: all perl-deps +random-test: all eval `perl -I $(CURDIR)/.tmp/lib/perl5 -Mlocal::lib=$(CURDIR)/.tmp` ; \ sh ./scripts/sim/run.sh $(if $(NUM_CORES), $(NUM_CORES), 2) @@ -543,8 +543,7 @@ perl-deps: fi DL=$$( ( which wget >/dev/null 2>&1 && echo "wget --no-check-certificate -O-" ) || echo "curl -L") ; \ $$DL http://cpanmin.us | perl - -l $(CURDIR)/.tmp App::cpanminus local::lib ; \ - eval `perl -I $(CURDIR)/.tmp/lib/perl5 -Mlocal::lib=$(CURDIR)/.tmp` ; \ - $(CURDIR)/.tmp/bin/cpanm --force File::Which Math::Random Clone Test::Deep Sys::Info ; \ + eval `perl -I $(CURDIR)/.tmp/lib/perl5 -Mlocal::lib=$(CURDIR)/.tmp` .PHONY: static-libs static-libs: @@ -601,7 +600,7 @@ sra-deps: fi ; .PHONY: test -test: simple-test random-test +test: simple-test .PHONY: clean clean: diff --git a/example/reads/simulate.pl b/example/reads/simulate.pl index cdf7c51..ac80c04 100644 --- a/example/reads/simulate.pl +++ b/example/reads/simulate.pl @@ -33,7 +33,6 @@ use strict; use warnings; use Carp; -use Math::Random qw(random_normal random_exponential); use Getopt::Long; use List::Util qw(max min); @@ -105,7 +104,6 @@ $rdlen_min = $rdlen_min || 40; # min read length (added to exponential draw) $frag_av = $frag_av || 250; # mean fragment len $frag_sd = $frag_sd || 45; # s.d. when drawing frag len from normal dist my @fraglens = (); # fragment lengths (for paired) -my @readlens = (); # read/end lengths if($long) { $nreads = 6000; @@ -134,77 +132,15 @@ for(0..length($rf)-1) { } print STDERR "Adding microindels...\n"; -my $microgap = 0; -{ - my $newrf = ""; - my $nins = int(length($rf) * 0.0005 + 0.5); - my $ndel = int(length($rf) * 0.0005 + 0.5); - $microgap = $nins + $ndel; - my %indel = (); - for(1..$nins) { - my $off = int(rand(length($rf))); - $indel{$off}{ty} = "ins"; - $indel{$off}{len} = int(random_exponential(1, 3))+1; - } - for(1..$ndel) { - my $off = int(rand(length($rf))); - $indel{$off}{ty} = "del"; - $indel{$off}{len} = int(random_exponential(1, 3))+1; - } - my $lasti = 0; - for my $rfi (sort {$a <=> $b} keys %indel) { - if($rfi > $lasti) { - $newrf .= substr($rf, $lasti, $rfi - $lasti); - $lasti = $rfi; - } - if($indel{$rfi}{ty} eq "ins") { - $newrf .= rand_dna($indel{$rfi}{len}); - } else { - $lasti += $indel{$rfi}{len}; - } - } - if($lasti < length($rf)-1) { - $newrf .= substr($rf, $lasti, length($rf) - $lasti - 1); - } - $rf = $newrf; -} print STDERR "Adding larger rearrangements...\n"; -my $nrearr = int(random_exponential(1, 3)+1); -for(0..$nrearr) { - my $break = int(rand(length($rf))); - my $before = substr($rf, 0, $break); - my $after = substr($rf, $break); - $after = revcomp($after) if int(rand()) == 0; - $rf = $after.$before; -} print STDERR "Added $nsnp SNPs\n"; -print STDERR "Added $microgap Microindels\n"; -print STDERR "Added $nrearr Rearrangements\n"; # # Simulate reads # -print STDERR "Picking read and fragment lengths...\n"; -# Pick random read lengths -if(defined($rdlen_exact)) { - @readlens = ($rdlen_exact) x ($nreads * ($paired ? 2 : 1)); -} else { - @readlens = random_exponential($nreads * ($paired ? 2 : 1), $rdlen_av); - @readlens = map int, @readlens; - @readlens = map { int($_ + $rdlen_min) } @readlens; -} -if($paired) { - # Pick random fragment and read lengths - @fraglens = random_normal($nreads, $frag_av, $frag_sd); - @fraglens = map int, @fraglens; - for(my $i = 0; $i < scalar(@readlens); $i += 2) { - $fraglens[$i/2] = max($fraglens[$i/2], $readlens[$i] + $readlens[$i+1]); - } -} - sub rand_quals($) { my $ret = ""; my $upper = (rand() < 0.2 ? 11 : 40); @@ -259,61 +195,10 @@ if($paired) { } # Possibly reverse complement $fstr = revcomp($fstr) if (int(rand(2)) == 0); - # Get reads 1 and 2 - my $rdlen1 = min($readlens[2*$i], $flen); - my $rdlen2 = min($readlens[2*$i+1], $flen); - my $rd1 = substr($fstr, 0, $rdlen1); - my $rd2 = substr($fstr, length($fstr)-$rdlen2); - length($rd2) == $rdlen2 || die "Got ".length($rd2)." expected $rdlen2"; - # Reverse complement 2 to simulate --fr orientation - $rd2 = revcomp($rd2); - # Generate random quality values - my $qu1 = rand_quals($rdlen1); - $rd1 = add_seq_errs($rd1, $qu1); - length($rd1) == length($qu1) || die; - my $qu2 = rand_quals($rdlen2); - $rd2 = add_seq_errs($rd2, $qu2); - length($rd2) == length($qu2) || die; - # Print - print RD1 "\@r".($i+1)."\n$rd1\n+\n$qu1\n"; - print RD2 "\@r".($i+1)."\n$rd2\n+\n$qu2\n"; } close(RD1); close(RD2); print STDERR "Made pairs: reads_1.fq/reads_2.fq\n"; -} else { - open(RD1, ">${prefix}.fq") || die; - for(my $i = 0; $i < scalar(@readlens); $i++) { - # Extract fragment - my $rdlen = $readlens[$i]; - my $off = int(rand($rflen - ($rdlen-1))); - my $rd = substr($rf, $off, $rdlen); - # Check if it has too many Ns - my %ccnt = (); - for my $j (1..$rdlen) { - my $c = uc substr($rd, $j, 1); - $ccnt{tot}++; - $ccnt{non_acgt}++ if ($c ne "A" && $c ne "C" && $c ne "G" && $c ne "T"); - $ccnt{$c}++; - } - # Skip if it has >10% Ns - if(1.0 * $ccnt{non_acgt} / $ccnt{tot} > 0.10) { - $i--; - next; - } - length($rd) == $rdlen || die; - # Possibly reverse complement - $rd = revcomp($rd) if int(rand(2)) == 0; - # Generate random quality values - my $qu = rand_quals($rdlen); - length($rd) == length($qu) || die "length(seq) = ".length($rd).", length(qual) = ".length($qu); - $rd = add_seq_errs($rd, $qu); - length($rd) == length($qu) || die "length(seq) = ".length($rd).", length(qual) = ".length($qu); - # Print - print RD1 "\@r".($i+1)."\n$rd\n+\n$qu\n"; - } - close(RD1); - print STDERR "Made unpaired reads: $prefix.fq\n"; } print STDERR "DONE\n"; |