Mercurial > repos > fcaramia > contra
comparison Contra/scripts/target_breakdown.py @ 0:7564f3b1e675
Uploaded
| author | fcaramia |
|---|---|
| date | Thu, 13 Sep 2012 02:31:43 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:7564f3b1e675 |
|---|---|
| 1 # ----------------------------------------------------------------------# | |
| 2 # Copyright (c) 2011, Richard Lupat & Jason Li. | |
| 3 # | |
| 4 # > Source License < | |
| 5 # This file is part of CONTRA. | |
| 6 # | |
| 7 # CONTRA is free software: you can redistribute it and/or modify | |
| 8 # it under the terms of the GNU General Public License as published by | |
| 9 # the Free Software Foundation, either version 3 of the License, or | |
| 10 # (at your option) any later version. | |
| 11 # | |
| 12 # CONTRA is distributed in the hope that it will be useful, | |
| 13 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 15 # GNU General Public License for more details. | |
| 16 # | |
| 17 # You should have received a copy of the GNU General Public License | |
| 18 # along with CONTRA. If not, see <http://www.gnu.org/licenses/>. | |
| 19 # | |
| 20 # | |
| 21 #-----------------------------------------------------------------------# | |
| 22 # Last Updated : 05 October 2011 16:43PM | |
| 23 | |
| 24 def target_breakdown(filename, maxRegionSize, targetRegionSize, out_fname): | |
| 25 from math import ceil | |
| 26 | |
| 27 a = open(filename) | |
| 28 output = open(out_fname, "w") | |
| 29 | |
| 30 for x in a: | |
| 31 x = x.split() | |
| 32 chr = x[0] | |
| 33 start = int(x[1]) | |
| 34 end = int(x[2]) | |
| 35 info = "" | |
| 36 if (len(x) > 3): | |
| 37 info = x[3] | |
| 38 | |
| 39 regionSize = end-start | |
| 40 | |
| 41 if regionSize > maxRegionSize: | |
| 42 seg = ceil(regionSize/float(targetRegionSize)) | |
| 43 limit = ceil(regionSize/float(seg)) | |
| 44 | |
| 45 s_end = start | |
| 46 for i in range(int(seg)): | |
| 47 s_start = s_end | |
| 48 s_end = int(start + (limit*(i+1))) | |
| 49 if s_end > end: | |
| 50 s_end = end | |
| 51 output.write("\t".join([chr, str(s_start), str(s_end), info+"(SPLIT)"])+"\n") | |
| 52 else: | |
| 53 output.write("\t".join([chr, str(start), str(end), info])+"\n") | |
| 54 | |
| 55 output.close() | |
| 56 |
