comparison TEisotools-1.0/commons/core/coord/MergeFromOverlaps.py @ 6:20ec0d14798e draft

Uploaded
author urgi-team
date Wed, 20 Jul 2016 05:00:24 -0400
parents
children
comparison
equal deleted inserted replaced
5:4093a2fb58be 6:20ec0d14798e
1 # Copyright INRA (Institut National de la Recherche Agronomique)
2 # http://www.inra.fr
3 # http://urgi.versailles.inra.fr
4 #
5 # This software is governed by the CeCILL license under French law and
6 # abiding by the rules of distribution of free software. You can use,
7 # modify and/ or redistribute the software under the terms of the CeCILL
8 # license as circulated by CEA, CNRS and INRIA at the following URL
9 # "http://www.cecill.info".
10 #
11 # As a counterpart to the access to the source code and rights to copy,
12 # modify and redistribute granted by the license, users are provided only
13 # with a limited warranty and the software's author, the holder of the
14 # economic rights, and the successive licensors have only limited
15 # liability.
16 #
17 # In this respect, the user's attention is drawn to the risks associated
18 # with loading, using, modifying and/or developing or reproducing the
19 # software by the user in light of its specific status of free software,
20 # that may mean that it is complicated to manipulate, and that also
21 # therefore means that it is reserved for developers and experienced
22 # professionals having in-depth computer knowledge. Users are therefore
23 # encouraged to load and test the software's suitability as regards their
24 # requirements in conditions enabling the security of their systems and/or
25 # data to be ensured and, more generally, to use and operate it in the
26 # same conditions as regards security.
27 #
28 # The fact that you are presently reading this means that you have had
29 # knowledge of the CeCILL license and that you accept its terms.
30
31 class MergeFromOverlaps(object):
32
33 def __init__(self, lFeatures):
34 self._lFeaturesToCluster = lFeatures
35
36 ## Clusterize list of Features implementing isOverlapping() and merge() method (e.g Range-based and MergedRange-based objects).
37 #
38 # @param lUnsorted list of Features unsorted
39 # @return lSortedAndMerged list of Features clustered and sorted
40 #
41 def clusterize(self):
42 lSortedAndMerged = []
43 for iInUnsorted in self._lFeaturesToCluster:
44 toBeRemoved = []
45 for iInSorted in lSortedAndMerged:
46 if iInUnsorted.isOverlapping(iInSorted):
47 toBeRemoved.append(iInSorted)
48 iInUnsorted.merge(iInSorted)
49 for tbr in toBeRemoved:
50 lSortedAndMerged.remove(tbr)
51 lSortedAndMerged.append(iInUnsorted)
52 return lSortedAndMerged