File: expression_levels.pl

package info (click to toggle)
gbrowse 2.54%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 12,724 kB
  • ctags: 4,370
  • sloc: perl: 48,499; sh: 164; sql: 62; makefile: 39; ansic: 27
file content (28 lines) | stat: -rwxr-xr-x 896 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/perl

# simulated affy chip
use strict;

# one affy series laid down every 100 bp
use constant SAMPLE_INTERVAL => 100;
use constant GENE_SIZE       => 5000;
use constant GENE_DENSITY    => 5;     # 1 gene every 5 GENE_SIZE intervals
use constant GENOME_SIZE     => 50000;

my $gene_interval = 1;
while ($gene_interval < GENOME_SIZE) {
  my $in_gene = rand(GENE_DENSITY) < 1;
  my $base_intensity = $in_gene ? 800 : 200 ;
  my $gene_size_variance = int(GENE_SIZE/2 - rand(GENE_SIZE/2));
  my $gene_size += $gene_size_variance;
  my $last_end;
  for (my $i = 0; $i < $gene_size; $i += 100) {
    my $score = int $base_intensity + (100-rand(200));
    my $start = $gene_interval + $i;
    my $end   = $start + 99;
    print join ("\t",qw(ctgA affy tlevel),$start,$end,$score,qw(. .),"Affy Expt1"),"\n";
    $last_end = $end;
  }
  # round to nearest 100
  $gene_interval = $last_end+1;
}