#!/usr/bin/perl use strict; use warnings; use Bio::SeqIO; use Bio::Tools::SeqStats; use Text::Table; my $window_size = 200; my $in_file = "fasta_dat.txt"; my $out_file = "test_results.txt"; my $in = Bio::SeqIO->new (-file=> $in_file, -format=>'fasta'); #open my $out_fh, ">", $out_file or die "cannot open $out_file.\n$!"; my $tb = Text::Table->new( map {title => $_}, qw/ ID Begin End G C Skew /); while(my $seq = $in->next_seq() ) { my $length = $seq->length; my $last = 0; for (my $begin_pos = 0; $last == 0; $begin_pos += 100) { my $end_pos; if ($begin_pos + $window_size >= $length) { $end_pos = $length; $last = 1; } else { $end_pos = $begin_pos + $window_size; } my $subseq = $seq->trunc(1 + $begin_pos, $end_pos); my $seq_stats = Bio::Tools::SeqStats->new(-seq => $subseq); my $count = $seq_stats->count_monomers(); my $nr_G = $count->{G}; my $nr_C = $count->{C} or next; # check for illegal division by 0 my $size_read = $end_pos - $begin_pos; my $skew = ($size_read / $nr_C)*($nr_G - $nr_C)/($nr_G + $nr_C); $tb->load( [$seq->id, $begin_pos+1, $end_pos, $nr_G, $nr_C, $skew ] ); } } print $tb; #print $out_fh $tb; __END__ *** print table C:\Old_Data\perlp>perl t33.pl ID Begin End G C Skew NR_037701 1 200 40 39 0.0649139889646219 NR_037701 101 300 46 44 0.101010101010101 NR_037701 201 400 50 30 1.66666666666667 NR_037701 301 500 50 27 2.21260221260221 NR_037701 401 600 56 33 1.56622403813415 NR_037701 501 700 57 32 1.75561797752809 NR_037701 601 800 42 49 -0.313971742543171 NR_037701 701 900 30 66 -1.13636363636364 NR_037701 801 1000 44 62 -0.547778454047474 NR_037701 901 1100 47 52 -0.194250194250194 NR_037701 1001 1200 36 52 -0.699300699300699 NR_037701 1101 1300 37 51 -0.623885918003565 NR_037701 1201 1400 32 47 -0.807971990304336 NR_037701 1301 1500 33 48 -0.771604938271605 NR_037701 1401 1600 38 50 -0.545454545454545 NR_037701 1501 1700 52 40 0.652173913043478 NR_037701 1601 1800 53 45 0.36281179138322 NR_037701 1701 1900 41 58 -0.592128178335075 NR_037701 1801 2000 54 40 0.74468085106383 NR_037701 1901 2100 44 43 0.0534616412723871 NR_037701 2001 2200 29 60 -1.16104868913858 NR_037701 2101 2300 33 57 -0.935672514619883 NR_037701 2201 2400 40 43 -0.168114317736061 NR_037701 2301 2500 64 27 3.01180301180301 NR_037701 2401 2600 63 29 2.54872563718141 NR_037701 2501 2700 47 32 1.18670886075949 NR_037701 2601 2800 41 24 2.17948717948718 NR_037701 2701 2900 37 32 0.452898550724638 NR_037701 2801 3000 47 42 0.267522739432852 NR_037701 2901 3100 57 38 1.05263157894737 NR_037701 3001 3200 55 46 0.387430047352561 NR_037701 3101 3300 38 65 -0.806572068707991 NR_037701 3201 3353 16 37 -1.63844977052524 NM_198399 1 200 52 40 0.652173913043478 NM_198399 101 300 54 38 0.91533180778032 NM_198399 201 400 58 34 1.53452685421995 NM_198399 301 500 63 36 1.51515151515152 NM_198399 401 600 52 32 1.48809523809524 NM_198399 501 700 39 37 0.142247510668563 NM_198399 601 800 35 44 -0.517836593785961 NM_198399 701 900 37 32 0.452898550724638 NM_198399 801 1000 30 26 0.54945054945055 NM_198399 901 1100 28 30 -0.229885057471264 NM_198399 1001 1200 40 28 1.26050420168067 NM_198399 1101 1300 37 30 0.696517412935323 NM_198399 1201 1400 31 39 -0.586080586080586 NM_198399 1301 1500 39 35 0.308880308880309 NM_198399 1401 1600 43 29 1.34099616858238 NM_198399 1501 1700 41 42 -0.057372346528973 NM_198399 1601 1800 44 44 0 NM_198399 1701 1900 55 36 1.15995115995116 NM_198399 1801 2000 54 35 1.2199036918138 NM_198399 1901 2100 44 41 0.172166427546628 NM_198399 2001 2200 38 46 -0.41407867494824 NM_198399 2101 2300 32 38 -0.451127819548872 NM_198399 2201 2400 22 29 -0.94658553076403 NM_198399 2301 2413 7 12 -2.4780701754386 NR_026816 1 200 54 63 -0.244200244200244 NR_026816 101 300 61 55 0.188087774294671 NR_026816 201 400 47 52 -0.194250194250194 NR_026816 301 500 51 60 -0.27027027027027 NR_026816 401 600 59 55 0.127591706539075 NR_027917 1 200 57 38 1.05263157894737 NR_027917 101 300 62 38 1.26315789473684 NR_027917 201 400 59 38 1.13944655453066 NR_027917 301 500 57 39 0.961538461538462 NR_027917 401 600 64 36 1.55555555555556 NR_027917 501 657 54 29 1.63066057332779 NR_002777 1 200 38 42 -0.238095238095238 NR_002777 101 300 40 42 -0.116144018583043 NR_002777 201 400 46 27 1.92795535261289 NR_002777 301 500 45 16 5.94262295081967 NR_002777 401 600 41 30 1.03286384976526 NR_002777 501 700 47 36 0.736278447121821 NR_002777 601 800 34 51 -0.784313725490196 NR_002777 701 900 18 70 -1.68831168831169 NR_002777 801 1000 23 54 -1.49110149110149 NR_002777 901 1100 36 49 -0.624249699879952 NR_002777 1001 1200 42 53 -0.436941410129096 NR_002777 1101 1277 23 41 -1.21417682926829 NR_033769 1 200 72 43 1.17290192113246 NR_033769 101 300 62 45 0.706126687435099 NR_033769 201 400 46 58 -0.397877984084881 NR_033769 301 500 46 51 -0.202142712755205 NR_033769 401 600 55 47 0.33375052148519 NR_033769 501 700 55 50 0.19047619047619 NR_033769 601 800 50 52 -0.0754147812971342 NR_033769 701 900 57 53 0.137221269296741 NR_033769 801 1000 58 49 0.343314896051879 NR_033769 901 1100 47 46 0.0467508181393174 NR_033769 1001 1200 38 30 0.784313725490196 NR_033769 1101 1300 35 20 2.72727272727273 NR_033769 1201 1400 35 34 0.0852514919011083 NR_033769 1301 1500 39 45 -0.317460317460318 NR_033769 1401 1600 36 38 -0.142247510668563 NR_033769 1501 1625 22 18 0.694444444444444 NM_016326 1 200 72 49 0.775847529094282 NM_016326 101 300 61 47 0.551615445232467 NM_016326 201 400 45 37 0.5273566249176 NM_016326 301 500 34 37 -0.228397411496003 NM_016326 401 600 60 48 0.462962962962963 NM_016326 501 633 49 37 0.501571338780641 NM_181641 1 200 72 49 0.775847529094282 NM_181641 101 300 50 49 0.0412286126571841 NM_181641 201 400 39 40 -0.0632911392405063 NM_181641 301 500 43 41 0.116144018583043 NM_181641 401 600 33 38 -0.370644922164566 NM_181641 501 700 42 36 0.427350427350427 NM_181641 601 792 66 51 0.482654600301659 NM_001144931 1 200 63 72 -0.185185185185185 NM_001144931 101 300 60 71 -0.236533706053113 NM_001144931 201 400 49 62 -0.3777971519907 NM_001144931 301 500 46 46 0 NM_001144931 401 563 46 37 0.477694562031911 NR_029429 1 200 40 64 -0.721153846153846 NR_029429 101 300 48 52 -0.153846153846154 NR_029429 201 400 50 52 -0.0754147812971342 NR_029429 301 500 50 61 -0.32491507901344 NR_029429 401 600 53 58 -0.155327741534638 NR_029429 501 608 31 29 0.124137931034483 NR_026551 1 200 79 49 0.956632653061224 NR_026551 101 300 56 58 -0.0604960677555959 NR_026551 201 400 45 44 0.0510725229826353 NR_026551 301 500 50 41 0.482444384883409 NR_026551 401 600 52 63 -0.303657694962043 NR_026551 501 700 51 77 -0.527597402597403 NR_026551 601 800 55 73 -0.38527397260274 NR_026551 701 900 56 74 -0.374220374220374 NR_026551 801 994 54 69 -0.342877341816896 NM_181640 1 200 72 49 0.775847529094282 NM_181640 101 300 54 45 0.404040404040404 NM_181640 201 400 52 44 0.378787878787879 NM_181640 301 500 43 37 0.405405405405405 NM_181640 401 600 34 37 -0.228397411496003 NM_181640 501 700 59 48 0.428348909657321 NM_181640 601 729 49 36 0.548039215686275 NM_016951 1 200 72 49 0.775847529094282 NM_016951 101 300 50 49 0.0412286126571841 NM_016951 201 400 37 39 -0.134952766531714 NM_016951 301 500 41 35 0.451127819548872 NM_016951 401 600 47 47 0 NM_016951 501 700 33 38 -0.370644922164566 NM_016951 601 800 44 37 0.467133800467134 NM_016951 701 888 65 51 0.444895199459094 NR_002773 1 200 48 50 -0.0816326530612245 NR_002773 101 300 60 50 0.363636363636364 NR_002773 201 400 66 59 0.189830508474576 NR_002773 301 500 68 65 0.0694042799305957 NR_002773 401 600 61 70 -0.19629225736096 NR_002773 501 700 55 67 -0.293613897724492 NR_002773 601 800 56 64 -0.208333333333333 NR_002773 701 900 57 64 -0.180785123966942 NR_002773 801 1000 58 61 -0.0826560132249621 NR_002773 901 1100 56 71 -0.332704890761894 NR_002773 1001 1200 53 71 -0.408905043162199 NR_002773 1101 1300 60 51 0.317965023847377 NR_002773 1201 1400 56 62 -0.164024056861673 NR_002773 1301 1500 47 72 -0.583566760037348 NR_002773 1401 1600 45 56 -0.388967468175389 NR_002773 1501 1700 45 59 -0.45632333767927 NR_002773 1601 1800 55 57 -0.06265664160401 NR_002773 1701 1900 66 41 1.13973102347846 NR_002773 1801 2000 61 39 1.12820512820513 NR_002773 1901 2073 49 37 0.652419861722187 NR_037806 1 200 46 70 -0.591133004926108 NR_037806 101 300 49 70 -0.504201680672269 NR_037806 201 400 57 44 0.585058505850585 NR_037806 301 500 54 40 0.74468085106383 NR_037806 401 600 44 50 -0.25531914893617 NR_037806 501 700 27 58 -1.25760649087221 NR_037806 601 800 34 57 -0.886832465779834 NR_037806 701 900 43 49 -0.266193433895297 NR_037806 801 1000 44 52 -0.320512820512821 NR_037806 901 1100 54 55 -0.0333611342785655 NR_037806 1001 1200 50 51 -0.03882741215298 NR_037806 1101 1300 43 57 -0.491228070175439 NR_037806 1201 1400 43 50 -0.301075268817204 NR_037806 1301 1500 38 40 -0.128205128205128 NR_037806 1401 1600 43 50 -0.301075268817204 NR_037806 1501 1662 42 44 -0.0856236786469345