예제 #1
0
    def _draw_track(self, dr: svgwrite.Drawing, tr: Track, size: XY,
                    offset: XY):
        color = self.color(self.poster.length_range, tr.length, tr.special)

        str_length = utils.format_float(self.poster.m2u(tr.length))

        date_title = f"{str(tr.start_time)[:10]} {str_length}km"
        for line in utils.project(tr.bbox(), size, offset, tr.polylines):

            distance1 = self.poster.special_distance["special_distance"]
            distance2 = self.poster.special_distance["special_distance2"]
            has_special = distance1 < tr.length / 1000 < distance2
            color = self.color(self.poster.length_range_by_date, tr.length,
                               has_special)
            if tr.length / 1000 >= distance2:
                color = self.poster.colors.get(
                    "special2") or self.poster.colors.get("special")
            polyline = dr.polyline(
                points=line,
                stroke=color,
                fill="none",
                stroke_width=0.5,
                stroke_linejoin="round",
                stroke_linecap="round",
            )
            polyline.set_desc(title=date_title)
            dr.add(polyline)
    def name(self):
        if logging_enabled == True:
            print(
                "- Entered dist_sim_kernel::GaussianKernel::name Public Method"
            )

        return 'Gaussian_yeta={}'.format(format_float(self.yeta))
예제 #3
0
파일: exp.py 프로젝트: yunshengb/GraphSim
def autolabel(rects, metric):
    special_float_format = 3 if metric == 'mse' else None
    for rect in rects:
        height = rect.get_height()
        plt.text(
            rect.get_x() + rect.get_width() / 2., 1.005 * height,
            format_float(height, special_float_format),
            ha='center', va='bottom')
예제 #4
0
    def _update_products(self):

        counter = 0
        updated_prices = 0
        update_names = 0
        created_products = 0

        for key, value in self.df.iterrows():
            if counter == 0:
                counter += 1
                continue
            code = value[2]
            if str(code) != 'nan':
                brand = value[0]
                refence = value[1]
                price = format_float(value[5])
                name = value[3].replace("Ð", "Ñ").replace("║", "|")
                try:
                    product = Product.get(code=code)
                except Exception:
                    Product.create(brand=brand,
                                   reference=refence,
                                   code=code,
                                   name=name,
                                   price=price)
                    counter += 1
                    created_products += 1
                    continue

                if product.name != name:
                    product.name = name
                    product.save()
                    update_names += 1

                if es_casi_igual(product.price, price):
                    pass
                else:
                    # Actualizar precio.
                    product.price = price
                    product.save()
                    updated_prices += 1

                counter += 1

        if updated_prices or update_names or created_products:
            messagebox.showinfo(
                "Precios Actualizados!",
                f"{updated_prices} precios actualizados, {update_names} nombre modificados, {created_products} productos nuevos."
            )
    def get_annual_profitability(col):
        """
        HTML Col Types:
            1. 7,57%
            2. SELIC + 0,03%
            3. IPCA + 3,08%
        """
        col = col.find('span').text.lower()
        col_clean = col.replace('selic', '').replace('ipca',
                                                     '').replace('+', '')
        col_clean = format_float(col_clean)

        if 'selic' in col:
            annual_profitability = (col_clean, 'SELIC')
        elif 'ipca' in col:
            annual_profitability = (col_clean, 'IPCA')
        else:
            annual_profitability = (col_clean, )
        return annual_profitability
예제 #6
0
파일: poster.py 프로젝트: shaonianche/blog
    def __draw_footer(self, d):
        text_color = self.colors["text"]
        header_style = "font-size:4px; font-family:Arial"
        value_style = "font-size:9px; font-family:Arial"
        small_value_style = "font-size:3px; font-family:Arial"

        (
            total_length,
            average_length,
            min_length,
            max_length,
            weeks,
        ) = self.__compute_track_statistics()

        d.add(
            d.text(
                self.trans("ATHLETE"),
                insert=(10, self.height - 20),
                fill=text_color,
                style=header_style,
            ))
        d.add(
            d.text(
                self.athlete,
                insert=(10, self.height - 10),
                fill=text_color,
                style=value_style,
            ))
        d.add(
            d.text(
                self.trans("STATISTICS"),
                insert=(120, self.height - 20),
                fill=text_color,
                style=header_style,
            ))
        d.add(
            d.text(
                self.trans("Number") + f": {len(self.tracks)}",
                insert=(120, self.height - 15),
                fill=text_color,
                style=small_value_style,
            ))
        d.add(
            d.text(
                self.trans("Weekly") + ": " +
                format_float(len(self.tracks) / weeks),
                insert=(120, self.height - 10),
                fill=text_color,
                style=small_value_style,
            ))
        d.add(
            d.text(
                self.trans("Total") + ": " +
                self.format_distance(total_length),
                insert=(141, self.height - 15),
                fill=text_color,
                style=small_value_style,
            ))
        d.add(
            d.text(
                self.trans("Avg") + ": " +
                self.format_distance(average_length),
                insert=(141, self.height - 10),
                fill=text_color,
                style=small_value_style,
            ))
        d.add(
            d.text(
                self.trans("Min") + ": " + self.format_distance(min_length),
                insert=(167, self.height - 15),
                fill=text_color,
                style=small_value_style,
            ))
        d.add(
            d.text(
                self.trans("Max") + ": " + self.format_distance(max_length),
                insert=(167, self.height - 10),
                fill=text_color,
                style=small_value_style,
            ))
예제 #7
0
파일: poster.py 프로젝트: shaonianche/blog
 def format_distance(self, d: float) -> str:
     """Formats a distance using the locale specific float format and the selected unit."""
     return format_float(self.m2u(d)) + " " + self.u()
예제 #8
0
 def name(self):
     return 'Inverse_scale={}'.format(format_float(self.scale))
예제 #9
0
 def name(self):
     return 'Exp_scale={}'.format(format_float(self.scale))
예제 #10
0
 def parse_data(self):
     self.ipca_value = format_float(self.ipca_html.text)
예제 #11
0
def update_layers_warper(service):
    """
    Update layers for a Warper service.
    """
    params = {'field': 'title', 'query': '', 'show_warped': '1', 'format': 'json'}
    headers = {'Content-Type': 'application/json', 'Accept': 'application/json'}
    request = requests.get(service.url, headers=headers, params=params)
    records = json.loads(request.content)
    total_pages = int(records['total_pages'])

    for i in range(1, total_pages + 1):
        params = {'field': 'title', 'query': '', 'show_warped': '1', 'format': 'json', 'page': i}
        request = requests.get(service.url, headers=headers, params=params)
        records = json.loads(request.content)
        print 'Fetched %s' % request.url
        layers = records['items']
        for layer in layers:
            name = layer['id']
            title = layer['title']
            abstract = layer['description']
            bbox = layer['bbox']
            # dates
            dates = []
            if 'published_date' in layer:
                dates.append(layer['published_date'])
            if 'date_depicted' in layer:
                dates.append(layer['date_depicted'])
            if 'depicts_year' in layer:
                dates.append(layer['depicts_year'])
            if 'issue_year' in layer:
                dates.append(layer['issue_year'])
            layer, created = Layer.objects.get_or_create(name=name, service=service)
            if layer.active:
                # update fields
                layer.type = 'Hypermap:WARPER'
                layer.title = title
                layer.abstract = abstract
                layer.is_public = True
                layer.url = '%s/wms/%s?' % (service.url, name)
                layer.page_url = '%s/%s' % (service.url, name)
                # bbox
                x0 = None
                y0 = None
                x1 = None
                y1 = None
                if bbox:
                    bbox_list = bbox.split(',')
                    x0 = format_float(bbox_list[0])
                    y0 = format_float(bbox_list[1])
                    x1 = format_float(bbox_list[2])
                    y1 = format_float(bbox_list[3])
                layer.bbox_x0 = x0
                layer.bbox_y0 = y0
                layer.bbox_x1 = x1
                layer.bbox_y1 = y1
                # crsOptions
                for crs_code in [3857, 4326, 900913]:
                    srs, created = SpatialReferenceSystem.objects.get_or_create(code=crs_code)
                    layer.srs.add(srs)
                layer.save()
                # dates
                add_mined_dates(layer)
                add_metadata_dates_to_layer(dates, layer)
예제 #12
0
def update_layers_wm(service):
    """
    Update layers for an WorldMap.
    """
    response = requests.get('http://worldmap.harvard.edu/data/search/api?start=0&limit=10')
    data = json.loads(response.content)
    total = data['total']

    for i in range(0, total, 10):
        url = 'http://worldmap.harvard.edu/data/search/api?start=%s&limit=10' % i
        print 'Fetching %s' % url
        response = requests.get(url)
        data = json.loads(response.content)
        for row in data['rows']:
            name = row['name']
            title = row['title']
            abstract = row['abstract']
            bbox = row['bbox']
            page_url = row['detail']
            category = ''
            if 'topic_category' in row:
                category = row['topic_category']
            username = ''
            if 'owner_username' in row:
                username = row['owner_username']
            temporal_extent_start = ''
            if 'temporal_extent_start' in row:
                temporal_extent_start = row['temporal_extent_start']
            temporal_extent_end = ''
            if 'temporal_extent_end' in row:
                temporal_extent_end = row['temporal_extent_end']
            # we use the geoserver virtual layer getcapabilities for wm endpoint
            endpoint = 'http://worldmap.harvard.edu/geoserver/geonode/%s/wms?' % name
            is_public = True
            if '_permissions' in row:
                if not row['_permissions']['view']:
                    is_public = False
            layer, created = Layer.objects.get_or_create(name=name, service=service)
            if layer.active:
                # update fields
                layer.type = 'Hypermap:WorldMap'
                layer.title = title
                layer.abstract = abstract
                layer.is_public = is_public
                layer.url = endpoint
                layer.page_url = page_url
                # category and owner username
                layer_wm, created = LayerWM.objects.get_or_create(layer=layer)
                layer_wm.category = category
                layer_wm.username = username
                layer_wm.temporal_extent_start = temporal_extent_start
                layer_wm.temporal_extent_end = temporal_extent_end
                layer_wm.save()
                # bbox
                x0 = format_float(bbox['minx'])
                y0 = format_float(bbox['miny'])
                x1 = format_float(bbox['maxx'])
                y1 = format_float(bbox['maxy'])
                # In many cases for some reason to be fixed GeoServer has x coordinates flipped in WM.
                x0, x1 = flip_coordinates(x0, x1)
                y0, y1 = flip_coordinates(y0, y1)
                layer.bbox_x0 = x0
                layer.bbox_y0 = y0
                layer.bbox_x1 = x1
                layer.bbox_y1 = y1
                # keywords
                for keyword in row['keywords']:
                    layer.keywords.add(keyword)
                # crsOptions
                for crs_code in [3857, 4326, 900913]:
                    srs, created = SpatialReferenceSystem.objects.get_or_create(code=crs_code)
                    layer.srs.add(srs)
                layer.save()
                # dates
                add_mined_dates(layer)
                add_metadata_dates_to_layer([layer_wm.temporal_extent_start, layer_wm.temporal_extent_end], layer)
 def get_unit_price(col):
     unit_price = format_float(col.find('span').text)
     return unit_price
 def get_minimum_investment(col):
     minimum_investment = format_float(col.find('span').text)
     return minimum_investment
예제 #15
0
 def name(self):
     return 'Gaussian_yeta={}'.format(format_float(self.yeta))
예제 #16
0
    def draw(self, dr: svgwrite.Drawing, size: XY, offset: XY):
        if self.poster.tracks is None:
            raise PosterError("No tracks to draw")
        year_size = 200 * 4.0 / 80.0
        year_style = f"font-size:{year_size}px; font-family:Arial;"
        year_length_style = f"font-size:{110 * 3.0 / 80.0}px; font-family:Arial;"
        month_names_style = f"font-size:2.5px; font-family:Arial"
        total_length_year_dict = self.poster.total_length_year_dict
        for year in range(self.poster.years.from_year, self.poster.years.to_year + 1):
            start_date_weekday, _ = calendar.monthrange(year, 1)
            github_rect_first_day = datetime.date(year, 1, 1)
            # Github profile the first day start from the last Monday of the last year or the first Monday of this year
            # It depands on if the first day of this year is Monday or not.
            github_rect_day = github_rect_first_day + datetime.timedelta(
                -start_date_weekday
            )
            year_length = total_length_year_dict.get(year, 0)
            year_length = utils.format_float(self.poster.m2u(year_length))
            month_names = [
                locale.nl_langinfo(day)[:3]  # Get only first three letters
                for day in [
                    locale.MON_1,
                    locale.MON_2,
                    locale.MON_3,
                    locale.MON_4,
                    locale.MON_5,
                    locale.MON_6,
                    locale.MON_7,
                    locale.MON_8,
                    locale.MON_9,
                    locale.MON_10,
                    locale.MON_11,
                    locale.MON_12,
                ]
            ]
            km_or_mi = "mi"
            if self.poster.units == "metric":
                km_or_mi = "km"
            dr.add(
                dr.text(
                    f"{year}",
                    insert=offset.tuple(),
                    fill=self.poster.colors["text"],
                    alignment_baseline="hanging",
                    style=year_style,
                )
            )

            dr.add(
                dr.text(
                    f"{year_length} {km_or_mi}",
                    insert=(offset.tuple()[0] + 165, offset.tuple()[1] + 2),
                    fill=self.poster.colors["text"],
                    alignment_baseline="hanging",
                    style=year_length_style,
                )
            )
            # add month name up to the poster one by one because of svg text auto trim the spaces.
            for num, name in enumerate(month_names):
                dr.add(
                    dr.text(
                        f"{name}",
                        insert=(offset.tuple()[0] + 15.5 * num, offset.tuple()[1] + 14),
                        fill=self.poster.colors["text"],
                        style=month_names_style,
                    )
                )

            rect_x = 10.0
            dom = (2.6, 2.6)
            # add every day of this year for 53 weeks and per week has 7 days
            for i in range(54):
                rect_y = offset.y + year_size + 2
                for j in range(7):
                    if int(github_rect_day.year) > year:
                        break
                    rect_y += 3.5
                    color = "#444444"
                    date_title = str(github_rect_day)
                    if date_title in self.poster.tracks_by_date:
                        tracks = self.poster.tracks_by_date[date_title]
                        length = sum([t.length for t in tracks])
                        distance1 = self.poster.special_distance["special_distance"]
                        distance2 = self.poster.special_distance["special_distance2"]
                        has_special = distance1 < length / 1000 < distance2
                        color = self.color(
                            self.poster.length_range_by_date, length, has_special
                        )
                        if length / 1000 >= distance2:
                            color = self.poster.colors.get(
                                "special2"
                            ) or self.poster.colors.get("special")
                        str_length = utils.format_float(self.poster.m2u(length))
                        date_title = f"{date_title} {str_length} {km_or_mi}"

                    rect = dr.rect((rect_x, rect_y), dom, fill=color)
                    rect.set_desc(title=date_title)
                    dr.add(rect)
                    github_rect_day += datetime.timedelta(1)
                rect_x += 3.5
            offset.y += 3.5 * 9 + year_size + 1.5
예제 #17
0
 def test_format_float(self):
     self.assertEqual("3.14", format_float(3.1415926))
     self.assertEqual("3.142", format_float(3.1415926, 3))
     self.assertEqual("3.1416", format_float(3.1415926, 4))
     self.assertEqual("3", format_float(3.1415926, 0))
예제 #18
0
    def name(self):
        if logging_enabled == True:
            print(
                "- Entered dist_sim_kernel::InverseKernel::name Public Method")

        return 'Inverse_scale={}'.format(format_float(self.scale))
예제 #19
0
    def _draw(self, dr: svgwrite.Drawing, size: XY, offset: XY, year: int):
        min_size = min(size.x, size.y)
        year_size = min_size * 4.0 / 80.0
        year_style = f"font-size:{year_size}px; font-family:Arial;"
        month_style = f"font-size:{min_size * 3.0 / 80.0}px; font-family:Arial;"
        day_style = f"dominant-baseline: central; font-size:{min_size * 1.0 / 80.0}px; font-family:Arial;"
        day_length_style = f"font-size:{min_size * 1.0 / 80.0}px; font-family:Arial;"

        dr.add(
            dr.text(
                f"{year}",
                insert=offset.tuple(),
                fill=self.poster.colors["text"],
                alignment_baseline="hanging",
                style=year_style,
            ))
        offset.y += year_size
        size.y -= year_size
        count_x = 31
        for month in range(1, 13):
            date = datetime.date(year, month, 1)
            (_, last_day) = calendar.monthrange(year, month)
            count_x = max(count_x, date.weekday() + last_day)

        cell_size = min(size.x / count_x, size.y / 36)
        spacing = XY(
            (size.x - cell_size * count_x) / (count_x - 1),
            (size.y - cell_size * 3 * 12) / 11,
        )

        # chinese weekday key number is the third.
        keyword_num = 0
        if locale.getlocale()[0] == "zh_CN":
            keyword_num = 2
        # first character of localized day names, starting with Monday.
        dow = [
            locale.nl_langinfo(day)[keyword_num].upper() for day in [
                locale.DAY_2,
                locale.DAY_3,
                locale.DAY_4,
                locale.DAY_5,
                locale.DAY_6,
                locale.DAY_7,
                locale.DAY_1,
            ]
        ]

        for month in range(1, 13):
            date = datetime.date(year, month, 1)
            y = month - 1
            y_pos = offset.y + (y * 3 + 1) * cell_size + y * spacing.y
            dr.add(
                dr.text(
                    date.strftime("%B"),
                    insert=(offset.x, y_pos - 2),
                    fill=self.poster.colors["text"],
                    alignment_baseline="hanging",
                    style=month_style,
                ))

            day_offset = date.weekday()
            while date.month == month:
                x = date.day - 1
                x_pos = offset.x + (day_offset + x) * cell_size + x * spacing.x
                pos = (x_pos + 0.05 * cell_size, y_pos + 1.15 * cell_size)
                dim = (cell_size * 0.9, cell_size * 0.9)
                text_date = date.strftime("%Y-%m-%d")
                if text_date in self.poster.tracks_by_date:
                    tracks = self.poster.tracks_by_date[text_date]
                    length = sum([t.length for t in tracks])
                    has_special = len([t for t in tracks if t.special]) > 0
                    color = self.color(self.poster.length_range_by_date,
                                       length, has_special)
                    dr.add(dr.rect(pos, dim, fill=color))
                    dr.add(
                        dr.text(
                            utils.format_float(self.poster.m2u(length)),
                            insert=(
                                pos[0] + cell_size / 2,
                                pos[1] + cell_size + cell_size / 2,
                            ),
                            text_anchor="middle",
                            style=day_length_style,
                            fill=self.poster.colors["text"],
                        ))
                else:
                    dr.add(dr.rect(pos, dim, fill="#444444"))

                dr.add(
                    dr.text(
                        dow[date.weekday()],
                        insert=(
                            offset.x + (day_offset + x) * cell_size +
                            cell_size / 2,
                            pos[1] + cell_size / 2,
                        ),
                        text_anchor="middle",
                        alignment_baseline="middle",
                        style=day_style,
                    ))
                date += datetime.timedelta(1)