Mercurial > repos > fcaramia > contra
diff Contra/scripts/target_breakdown.py @ 0:7564f3b1e675
Uploaded
author | fcaramia |
---|---|
date | Thu, 13 Sep 2012 02:31:43 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Contra/scripts/target_breakdown.py Thu Sep 13 02:31:43 2012 -0400 @@ -0,0 +1,56 @@ +# ----------------------------------------------------------------------# +# Copyright (c) 2011, Richard Lupat & Jason Li. +# +# > Source License < +# This file is part of CONTRA. +# +# CONTRA is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# CONTRA is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with CONTRA. If not, see <http://www.gnu.org/licenses/>. +# +# +#-----------------------------------------------------------------------# +# Last Updated : 05 October 2011 16:43PM + +def target_breakdown(filename, maxRegionSize, targetRegionSize, out_fname): + from math import ceil + + a = open(filename) + output = open(out_fname, "w") + + for x in a: + x = x.split() + chr = x[0] + start = int(x[1]) + end = int(x[2]) + info = "" + if (len(x) > 3): + info = x[3] + + regionSize = end-start + + if regionSize > maxRegionSize: + seg = ceil(regionSize/float(targetRegionSize)) + limit = ceil(regionSize/float(seg)) + + s_end = start + for i in range(int(seg)): + s_start = s_end + s_end = int(start + (limit*(i+1))) + if s_end > end: + s_end = end + output.write("\t".join([chr, str(s_start), str(s_end), info+"(SPLIT)"])+"\n") + else: + output.write("\t".join([chr, str(start), str(end), info])+"\n") + + output.close() +