示例#1
0
def compute_graph(edges, x, y, precision, tollerance):

    if booldebug: print(x, y)
    graph = Graph('image')
    q = Queue('nodes')
    p_node = Point(x, y)
    node = Node(p_node)
    graph.nodes.append(node)
    q.push(node)

    while not q.empty():
        node = q.top()
        q.pop()
        links = []

        p_node = node.get_point()
        x = p_node.get_x()
        y = p_node.get_y()
        cell = generate_cell(edges, p_node, precision)
        links = find_lines(cell, edges, x - precision, y - precision,
                           tollerance)
        #if booldebug: print(links)
        delete(edges, cell, x - precision, y - precision)

        for p in links:
            graph.nodes.append(Node(p))
            q.push(Node(p))

        graph.manage_links(node, links)

    if len(graph.nodes) > 2:
        return DPS(graph)
示例#2
0
 def test_is_line(self):
     p1 = Point(-1, -1)
     p2 = Point(2, 3)
     p4 = Point(-1, 3)
     p5 = Point(-4, -5)
     self.assertFalse(Triangle(p1, p2, p4).is_line())
     self.assertTrue(Triangle(p1, p2, p5).is_line())
示例#3
0
def calculate_mean_line(linhas):
    first_point_x = int(round(np.mean([linha.point1.x for linha in linhas])))
    first_point_y = int(round(np.mean([linha.point1.y for linha in linhas])))
    second_point_x = int(round(np.mean([linha.point2.x for linha in linhas])))
    second_point_y = int(round(np.mean([linha.point2.y for linha in linhas])))
    first_point = Point(first_point_x, first_point_y)
    second_point = Point(second_point_x, second_point_y)
    return Line(first_point, second_point)
示例#4
0
def res():
    circle = Circle(1, 2)
    triangle = Triangle(Point(0, 1), Point(2, 3), Point(10, 2))
    square = Square(Point(0, 1), Point(4, 4))
    spis_figure = []
    spis_figure.append(circle.ploshad())
    spis_figure.append(triangle.ploshad())
    spis_figure.append(square.ploshad())
    return spis_figure
示例#5
0
 def __init_subclass__(self):
     self._K = Point(0, 290)
     self._A = Point(250, 290)
     self.BC = 290
     self.BE = 380
     self.CD = 35
     self.CE = 110
     self.EF = 120
     self.HI = 280
示例#6
0
 def __init_subclass__(self):
     self._K = Point(0, 300)
     self._A = Point(50, 300)
     self.BC = 260
     self.BE = 350
     self.CD = 45
     self.CE = 90
     self.EF = 110
     self.HI = 285
示例#7
0
def getDistanceOf(rect1, rect2):
    """
    calculate the distance between rect1 and rect2
    :param rect1: tuple of 4 - (top, right, bottom, left)
    :param rect2: tuple of 4 - (top, right, bottom, left)
    :return: euclidean distance between upper-left point of the rects.
    """
    p1 = Point(rect1[3], rect1[0])  # upper-left point of rect1
    p2 = Point(rect2[3], rect2[0])  # upper-left point of rect2
    return p1.distanceFrom(p2)
示例#8
0
 def test_equality(self):
     p1 = Point(1, 2, 3)
     p2 = Point(4, 5, 6)
     p3 = Point(1, 2, 3)
     self.assertEqual(p1, p3)
     self.assertNotEqual(p1, p2)
     self.assertTrue(p1 == p3)
     self.assertFalse(p1 != p3)
     self.assertFalse(p1 == p2)
     self.assertTrue(p1 != p2)
     self.assertFalse(p1 != p3)
示例#9
0
 def aggregateConfigurations(self, trajectories):
     envelope = Trajectory(0, 0, 0, [])
     efforts = []
     [efforts.extend([point.effort for point in trajectory.points if point.effort not in efforts]) for trajectory in trajectories]
     efforts.sort()
     for effort in efforts:
         if self.data.scenario['ac'] == "best":
             envelope.points.append(Point(effort, min([trajectory.getValue(effort) for trajectory in trajectories])))
         if self.data.scenario['ac'] == "worst":
             envelope.points.append(Point(effort, max([trajectory.getValue(effort) for trajectory in trajectories])))
     return envelope
示例#10
0
 def __init__(self, nitron):
     self.nitron = nitron
     self._A
     self._B = Point(0, 0)
     self._J = Point(10, -30)
     self._K
     self.BC
     self.BE
     self.CD
     self.CE
     self.EF
     self.HI
示例#11
0
 def aggregate(self, replications):
     result = Trajectory(0, 0, 0, [])
     if self.data.scenario['ar'] == "exp":
         return self.exponentialModel(replications)
     efforts = []
     [efforts.extend([point.effort for point in replication.points if point.effort not in efforts]) for replication in replications]
     efforts.sort()
     for effort in efforts:
         if self.data.scenario['ar'] == "best":
             result.points.append(Point(effort, min([replication.getValue(effort) for replication in replications])))
         elif self.data.scenario['ar'] == "worst":
             result.points.append(Point(effort, max([replication.getValue(effort) for replication in replications])))
     return result
示例#12
0
    def aggressivenessToKeep(self, refExecution):
        effortCap = refExecution['trajectory'].getLastEffort()
        valueCap = refExecution['trajectory'].getResult()
        executions = self.data.getExecutions(refExecution['instance-id'], False, refExecution['id'] - 1)
        if len(executions) == 0: return None

        steps = []
        ratios = []
        for exe in executions:
            steps.append(len([point for point in exe['trajectory'].points if point.effort >= effortCap]))
            if exe['trajectory'].getValue(effortCap) != 0:
                ratios.append(exe['trajectory'].getResult() / exe['trajectory'].getValue(effortCap))
        medianSteps = ceil(statistics.median(steps))
        medianRatio = statistics.median(ratios)

        trajectory = Trajectory(0, 0, 0, [])
        trajectory.points = refExecution['trajectory'].points
        if medianSteps > 0:
            effortStep = (self.data.scenario['effort-limit'] - effortCap) / (medianSteps + 1)
            finalValue = valueCap * medianRatio
            valueStep = (valueCap - finalValue) / medianSteps
            
            lastEffort = effortCap
            lastValue = valueCap
            for i in range(medianSteps):
                lastEffort += effortStep
                lastValue -= valueStep
                trajectory.points.append(Point(lastEffort, lastValue))

        executions.sort(key = lambda x : x['trajectory'].getResult())
        amount = 0
        for i in range(len(executions)):
            bound = i + 1
            efforts = []
            [efforts.extend([point.effort for point in exe['trajectory'].points if point.effort not in efforts]) for exe in executions[:bound]]
            efforts.sort()
            envelope = Trajectory(0, 0, 0, [])
            for effort in efforts:
                envelope.addPoint(Point(effort, max([exe['trajectory'].getValue(effort) for exe in executions[:bound]])), self.data.scenario['effort-limit'])
            efforts = efforts + [point.effort for point in trajectory.points if point.effort not in efforts]
            cap = False
            for effort in efforts:
                if trajectory.getValue(effort) > envelope.getValue(effort):
                    cap = True
                    break
            if cap:
                amount += 1
            else:
                amount += 1
                break
        return 1 - (amount / len(executions))
示例#13
0
def main():
    point_a = Point(2, 4)
    point_b = Point(6, 11)
    point_c = Point(3, 4)
    triangle_1 = Triangle(point_a, point_b, point_c)
    print(triangle_1.triangle_S())
    print(triangle_1.triangle_P())
    print('=' * 20)
    square_1 = Square(point_a, point_b)
    print(square_1.square_S())
    print(square_1.square_P())
    print('=' * 20)
    circle_1 = Circle(point_a, 15)
    print(circle_1.circle_S())
    print(circle_1.circle_P())
示例#14
0
def create_points_try(dim):
    points_grid = list()
    for h in range(0, dim):
        points_grid.append(list())
        for w in range(0, dim):
            points_grid[h].append(Point(calc_position(h, w)))
    return points_grid
def find_eye_corners(eye_image, eye_center):
    corners = cv2.goodFeaturesToTrack(img_as_ubyte(eye_image), 5, 0.01, 15)
    all_corners = np.int0(corners)
    all_corners = list(map(lambda c: Point(*(c.ravel().tolist())),
                           all_corners))

    # give each corner a score, according to our heuristic
    left_corner_score = map(
        lambda corner:
        (corner, corner_measure(corner, eye_center, leftness=1)), all_corners)
    # find the best corner
    try:
        left_corner = max(left_corner_score, key=lambda cs: cs[1])[0]
    except Exception:
        left_corner = (0, 0)

    # give each corner a score, according to our heuristic
    right_corner_score = map(
        lambda corner:
        (corner, corner_measure(corner, eye_center, leftness=-1)), all_corners)
    # find the best corner
    try:
        right_corner = max(right_corner_score, key=lambda cs: cs[1])[0]
    except Exception:
        right_corner = (0, 0)

    return right_corner, left_corner, all_corners  #TODO: fix x and y coords being reversed
示例#16
0
def Convert():
    if not os.path.exists("gosat/data"):
        os.makedirs("gosat/data")

    hdf5_l = os.listdir('gosat/tmp/HDF/SWIRL2CO2/')

    for hdf5 in hdf5_l:

        with h5py.File('gosat/tmp/HDF/SWIRL2CO2/' + hdf5, 'r') as f:
            Data = f['Data']
            geolocation = Data['geolocation']
            longitude = geolocation['longitude']
            latitude = geolocation['latitude']
            scanAttribute = f['scanAttribute']
            mixingRatio = Data['mixingRatio']

            timeList = list(scanAttribute['time'])
            # Значение
            co2_l = list(mixingRatio['XCO2'])
            lon_l = list(longitude)
            lat_l = list(latitude)

        with open(f'gosat/data/{timeList[0].decode("utf-8")[:10]}.json',
                  'w') as f:
            f.write('[\n')
            for i in range(len(co2_l)):
                f.write(str(Point(lat_l[i], lon_l[i], timeList[i], co2_l[i])))
                if i != len(co2_l) - 1:
                    f.write(',\n')
            f.write(']')
def test_case_10(self):
    ans = "\n" + inspect.stack()[0][3] + ": \n"

    s = Rectangle(width=3, height=4)

    ans += str(s) + "\n"
    ans += s.details() + "\n"

    r = Rectangle(0, 0)
    p = Point(1, 1)
    x = r.union(p)
    r.enclose(p)
    r.enclose(Point(2, 2))
    ans += r.details() + "\n"

    self.check(ans, 12087, True)
示例#18
0
def load_data(filename: str) -> List[Point]:
    """
    Чтение файла
    :param filename: путь к файлу типа pdb
    :return: список координат атомов в этом файле
    """
    file: TextIO = open(filename)
    res = []
    while file.readable():
        line: str = file.readline()
        if line.startswith("ENDMDL") or line == "":
            break
        if not (line.startswith("ATOM") or line.startswith("HETATM")):
            continue
        if line[-3] == 'H' or line[-4] == 'H':  # водород
            continue

        point_coords = line[31:54].split()
        x = float(point_coords[0])
        y = float(point_coords[1])
        z = float(point_coords[2])

        point = Point(x, y, z)
        res.append(point)

    return res
示例#19
0
def _process(image, annotations, detector, reid_model):
    result = detector.get_bboxes(img_filename)

    bboxes, crops = [], []
    for row in range(len(result)):
        if result[row][4] < 0.3:
            continue
        x1, y1, x2, y2 = map(int, result[row][:4])
        bbox = Bbox(x1=x1, y1=y1, x2=x2, y2=y2)
        bbox.clip(max_w=image.shape[1], max_h=image.shape[0])
        bboxes.append(bbox)
        crops.append(image[bbox.y1:bbox.y2, bbox.x1:bbox.x2, :])

    embeddings = reid_model.get_embeddings(crops)

    shelves_per_images: Dict[str, List[Shelve]] = {}

    for filename, shelves in annotations.items():
        shelves_per_images[filename] = []

        for shelve_idx, shelve in tqdm.tqdm(enumerate(shelves),
                                            total=len(shelves)):
            shelve_name, shelve_points = shelve

            shelve = Shelve(name='shelve_{}'.format(shelve_idx),
                            points=[Point(x, y) for x, y in shelve_points])
            shelves_per_images[filename].append(shelve)

            crops = []
            for bbox, embedding in zip(bboxes, embeddings):
                area = bbox.intersection_area(shelve.points)
                if area <= 0:
                    continue

                intersection_area = area / bbox.area
                if intersection_area <= threshold:
                    continue

                item = Item(bbox, embedding=embedding)
                shelve.items.add(item)
                x1 = bbox.x1
                y1 = bbox.y1
                x2 = bbox.x2
                y2 = bbox.y2
                crops.append(image[y1:y2, x1:x2, :])

    for filename, shelves in shelves_per_images.items():
        for shelve in shelves:
            embeddings = np.array([item.embedding for item in shelve.items])
            if len(embeddings) == 0:
                continue
            clustering = DBSCAN(eps=0.2, min_samples=2,
                                metric='cosine').fit(embeddings)
            for item, label in zip(shelve.items, clustering.labels_):
                item.label = label

    return shelves_per_images
示例#20
0
def generate():
    number_of_vertex = random.randrange(3, 10, 1)
    points_array = []
    i = 0
    while i < number_of_vertex:
        point = Point(random.randrange(0, 10, 1), random.randrange(0, 10, 1))
        points_array.append(point)
        i += 1
    return points_array
示例#21
0
def lkhParseOutput(output, elapsedTime):
    bestSoFar = float('inf')
    for line in reversed(output):
        if 'Cost = ' in line and 'Time = ' in line:
            bestSoFar = min(
                bestSoFar,
                int(line[line.index('Cost = ') + 7:line.index(', Time')]))
    return Point(round(elapsedTime, 1),
                 bestSoFar) if bestSoFar != float('inf') else None
示例#22
0
def main():
    c = Circle()
    c.center = Point()
    c.center.x = 0
    c.center.y = 0
    c.radius = 100

    rect = Rectangle()
    rect.corner = Point()
    rect.corner.x = -100
    rect.corner.y = 100
    rect.width = 200
    rect.height = 300

    bob = turtle.Turtle()
    draw_circle(bob, c)
    draw_rectangle(bob, rect)
    turtle.mainloop()
def create(pt, r=None):
    n = len(pt)
    if (r == None):
        if n == 1:
            x, y = pt[0]
            return Point(x, y)
        elif n == 2:
            return Segment(pt)
        elif n == 3:
            return Triangle(pt)
        else:
            return Polygon(pt)
    elif n == 1:
        x, y = pt[0]
        if (r > 0):
            return Circle(x, y, r)
        else:
            return Point(x, y)
示例#24
0
def find_center_line(input_file: str, s_start: Point, min_z: float,
                     max_z: float) -> TunnelCenterLine:
    """
    Поиск туннеля в молекуле
    :param input_file: название файла с туннелем(должен быть в папке input_files)
    :param s_start: начальная точка x, y, z
    :param min_z: нижняя граница туннеля
    :param max_z: верхняя граница туннеля
    :return:туннель заданный последовательностью точек
    """
    directory: str = "input_files"
    points: List[Point] = load_data(os.path.join(directory, input_file))

    # r: float = 100
    # circle_ponts = [(r * cos(radians(teta + 45)), r * sin(radians(teta + 45))) for teta in range(360) if teta % 2 == 0]
    # points: List[Point] = [Point(x, y, z) for x, y in circle_ponts for z in range(-50, 51, 10)]

    save_center_line_to_pdb(points, 'in.pdb')

    np_points = np.array(list(map(lambda p: p.coords, points)))

    tri = Delaunay(np_points)

    vertices, edges = get_voronoy_edges(tri)
    g: int = len(vertices)
    save_center_line_to_pdb(vertices, 'verts.pdb')

    graph: Graph = create_graph_from_edges(edges, set(range(g)),
                                           set(range(len(edges))))

    s_start_ind: int = min(range(g), key=lambda i: s_start.dist(vertices[i]))

    # def stop(ind: int) -> bool:
    #     return vertices[ind].coords[2] > max_z or vertices[ind].coords[2] < min_z

    stop_max = lambda ind: vertices[ind].coords[2] > max_z
    stop_min = lambda ind: vertices[ind].coords[2] < min_z
    best_tunnel_indexes: List[int] = compute_tunnel(graph, g, s_start_ind,
                                                    stop_min)
    #best_tunnel: List[Point] = [vertices[i] for i in best_tunnel_indexes]

    best_tunnel_indexes2: List[int] = compute_tunnel(graph, g, s_start_ind,
                                                     stop_max)
    #best_tunnel2: List[Point] = [vertices[i] for i in best_tunnel_indexes2]
    tunnel_indexes = [
        *best_tunnel_indexes, *(list(reversed(best_tunnel_indexes2))[1:])
    ]
    best_tunnel: List[Point] = [vertices[tunnel_indexes[0]]]
    for i in range(1, len(tunnel_indexes)):
        mid_point = (vertices[tunnel_indexes[i - 1]] +
                     vertices[tunnel_indexes[i]]) / 2
        best_tunnel.append(mid_point)
        best_tunnel.append(vertices[tunnel_indexes[i]])
    #tunnel = [*best_tunnel, *best_tunnel2]
    #plot(points, tri, vertices, edges)
    return best_tunnel
示例#25
0
def trilateration(point1, r1, point2, r2, point3, r3):
    A = 2 * point2.x - 2 * point1.x
    B = 2 * point2.y - 2 * point1.y
    C = r1**2 - r2**2 - point1.x**2 + point2.x**2 - point1.y**2 + point2.y**2
    D = 2 * point3.x - 2 * point2.x
    E = 2 * point3.y - 2 * point2.y
    F = r2**2 - r3**2 - point2.x**2 + point3.x**2 - point2.y**2 + point3.y**2
    x = (C * E - F * B) / (E * A - B * D)
    y = (C * D - A * F) / (B * D - A * E)
    return Point(x, y)
示例#26
0
 def newPoint(x, y, z=None):
     res = None
     for point in PointFactory.registry:
         if (point.x == x) and (point.y == y) and (point.z == z):
             res = point
             break
     if res is None:
         res = Point(x, y, z)
         PointFactory.registry.append(res)
     return res
示例#27
0
def decrease_lambda(grid, decrement_step_size):
    """
    Creates a copy of the given grid and for this decreases the lambda value by the decrement_step_size.

    :param grid: The given grid.
    :param decrement_step_size: The amount lambda has to be decreased.
    :return: A copy of the given grid, where the lambda value is decreased.
    """
    lambda_val = grid.lambda_val - decrement_step_size
    decreased_grid = Grid(lambda_val, list(), list(), list())
    for edge_point in grid.edge_points:
        new_edge_point = Point(edge_point.position)
        edge_point.add_next_point(new_edge_point)
        decreased_grid.edge_points.append(new_edge_point)
    for point in grid.points:
        new_point = Point(point.position)
        point.add_next_point(new_point)
        decreased_grid.points.append(new_point)
    decreased_grid.springs = reconnect_grid(grid)
    return decreased_grid
示例#28
0
def Convert():
	if not os.path.exists("oco2/data"):
		os.makedirs("oco2/data")

	nc4_l = os.listdir('oco2/tmp/NC4/')
	nc4_l.sort()
	if DEBUG:
		print(nc4_l[:10])


	for nc4 in nc4_l:
		_path = 'oco2/tmp/NC4/' + nc4
		try:
			with netCDF4.Dataset(_path) as f:
				
				lon_l = np.array(f.variables['longitude'] )
				lat_l = np.array(f.variables['latitude'])
				co2_l = np.array(f.variables['xco2'])
				date_l = np.array(f.variables['date'])
				if DEBUG:
					print(f'{type(date_l)}')
					print(f'{date_l[0]}')
					for i in date_l[0]:
						print(f'{i} = {human_size(i)}')
					print(f'size: date_l={human_size(date_l[0])}')
					print(f'size: co2_l={human_size(co2_l[0])}')
					print(f"oco2/data/{date_l[0][0]:4d}-{date_l[0][1]:02d}-{date_l[0][2]:02d}.json")
				

					print(f'file: {nc4}')
					print(f'points: {len(date_l)} {len(lat_l)} {len(lon_l)} {len(co2_l)}')
					print(f'size: lon_l={human_size(lon_l)}')
					print(f'size: lat_l={human_size(lat_l)}')
					print(f'size: co2_l={human_size(co2_l)}')
					print(f'size: date={human_size(date_l)}')

				
				with open(f"oco2/data/{date_l[0][0]:4d}-{date_l[0][1]:02d}-{date_l[0][2]:02d}.json", 'w') as f1:
					print(f"oco2/data/{date_l[0][0]:4d}-{date_l[0][1]:02d}-{date_l[0][2]:02d}.json")
					f1.write("[\n")
					for i in range(len(co2_l)):
						f1.write(str(Point(lat_l[i], lon_l[i], date_l[i][0], co2_l[i])))
						if i != len(co2_l)-1:
							f1.write(',\n')
					f1.write(']')
		except Exception as e:
			print(e)
		finally:
			if not DEBUG:
				print(f'remove {_path}')
				if os.path.isfile(_path):
					os.remove(_path)
				else:    ## Show an error ##
					print("Error: %s file not found" % _path)
示例#29
0
def div_loc(point, x_max, y_max):
    x = point.x / x_max
    if x > 1:
        x = 1 - random.random() * 0.2
    elif x < 0:
        x = 0 + random.random() * 0.2
    y = point.y / y_max
    if y > 1:
        y = 1 - random.random() * 0.2
    elif y < 0:
        y = 0 + random.random() * 0.2
    return Point(x, y)
示例#30
0
def import_lines():
    from classes import Point, Line
    fin = open('lines.txt','r')
    lines = []

    riga = fin.readline().strip()
    while riga != '':
        vett = riga.split('|')
        v1 = vett[0]
        v2 = vett[1]

        p1 = v1.split('-')
        p2 = v2.split('-')

        line = Line(Point(int(p1[0]),int(p1[1])),Point(int(p2[0]),int(p2[1])))
        lines.append(line)

        riga = fin.readline().strip()

    fin.close()
    return lines