Copyright © 2018 STMicroelectronics
STM32Cube is an STMicroelectronics original initiative to ease developers life by reducing development efforts, time and cost.
STM32Cube covers STM32 portfolio.
STM32Cube Version 1.x includes:
All embedded software utilities, delivered with a full set of examples.
The STM32Cube firmware solution offers a straightforward API with a modular architecture, making it simple to fine tune custom applications and scalable to fit most requirements.
The HAL (Hardware Abstraction Layer) and LL (Low Layers) drivers provided within this package support the STM32G081/71/70, STM32G041/31/30, STM32G0C1/B1/B0 and STM32G061/51/50 lines.
The HAL and LL drivers provided within this package are compliant with MISRA-C:2012 guidelines, and have been reviewed with a static analysis tool to eliminate possible run-time errors. Reports are available on demand.
For quick getting started with the STM32CubeG0 firmware package, refer to UM2303 and you can download firmware updates and all the latest documentation from www.st.com/stm32cubefw
Here is the list of references to user documents:
A set of applications are provided for STM32G0C1E-EV board to demonstrate how to develop a full USBPD application with USB Data.
The simple USB applications with Full USBPD protocol support, demonstrates SINK and SOURCE with USB data capability can be found under this path: Projects\STM32G0C1E-EV\Applications\USB-PD.
In order to have more details on how to use USB and USBPD in the same application, it is recommended to consult the STM32 Wiki pages:
CMSIS Device updates
HAL/LL Drivers updates
BSP updates
Middlewares updates
Utilities updates
Projects updates
| Name | Version | License | Release notes |
|---|---|---|---|
| Projects | V1.5.0 | see Projects Release note for details | release notes |
For applications using device connected on CN7 (Type-C connector on MB1352):
When the power source jumper JP24 is configured to D5V position (with this configuration the mother board is powered from the daughter board), there is no risk to get an over voltage on USB Vbus connector CN7.
When the ST-Link is used as power source there is a risk to get an over voltage in connector. In such power configuration, software safety protection is required to detect the overvoltage. Please refer to /* SAFETY PROTECTION CODE BEGIN */ section in main.c of USB_Host applications.
Note: in the tables above, version highlighted have changed since previous release.
Drivers
| Name | Version | Release notes |
|---|---|---|
| Cortex-M CMSIS V5.6.0 | V5.6.0_cm0 | release notes |
| STM32G0xx CMSIS | V1.4.1 | release notes |
| STM32G0xx_HAL_Driver | V1.4.2 | release notes |
| BSP STM32G0xx_Nucleo | V1.1.1 | release notes |
| BSP STM32G0C1E-EV | V1.0.1 | release notes |
| BSP STM32G081B_EVAL | V1.3.1 | release notes |
| BSP STM32G071B-Discovery | V1.2.1 | release notes |
| BSP STM32G0316-DISCO | V1.0.2 | release notes |
| BSP STM32G0xx_Nucleo_32 | V1.0.2 | release notes |
| BSP Adafruit Shield (reference ID 802) | V3.0.4 | release notes |
| BSP Common | V5.1.2 | release notes |
| BSP hx8347d | V1.1.2 | release notes |
| BSP stlm75 | V2.0.2 | release notes |
| BSP st7735 | V1.1.5 | release notes |
| BSP cbtl08gp053 | V1.0.1 | release notes |
| BSP tusb546 | V1.0.3 | release notes |
| BSP sn65dp141 | V1.0.2 | release notes |
| BSP ina230 | V1.0.0 | release notes |
| BSP ssd1315 | V1.1.0 | release notes |
Middleware
| Name | Version | Release notes |
|---|---|---|
| FatFS | R0.12c | release notes |
| ST modified 2019101 | release notes ST | |
| FreeRTOS | V10.3.1 | release notes |
| ST modified 2020083 | release notes ST | |
| STM32_USBPD_Library - Core | v4.0.0 | release notes |
| STM32_USBPD_Library - Devices | g0_v3.3.1 | release notes |
| STM32_USB_Host_Library | V3.4.0 | release notes |
| STM32_USB_Device_Library | V2.8.0 | release notes |
| OpenBootloader | V3.0.1 | release notes |
Utilities
| Name | Version | Release notes |
|---|---|---|
| CPU | V1.1.1 | release notes |
| Fonts | V1.0.1 | release notes |
| Log | V1.0.2 | release notes |
| GUI_INTERFACE | V2.0.0 | release notes |
| TRACER_EMB | V1.6.1 | release notes |
This software release is compatible with:
Patch release of STM32CubeG0 (STM32Cube for STM32G0 Series) Firmware package supporting STM32G0C1xx/B1xx/B0xx, STM32G061xx/51xx/50xx, STM32G041xx/31xx/30xx and STM32G081xx/71xx/70xx devices.
In the STM32CubeG0 MCU Package, examples and applications projects are generated with the STM32CubeMX tool to initialize the system, peripherals and middleware stacks. User can open the provided ioc file in STM32CubeMX to modify the settings, add additional peripherals and/or middleware, to build his final application.
Demonstrations binaries are no more delivered within the STM32CubeG0 MCU package. They are available for download, in addition to their required media files if any, in a standalone package accessible through each hardware board official webpage. Please refer to the corresponding demonstration binary readme.txt to get webpage for each board.
Projects updates
| Name | Version | License | Release notes |
|---|---|---|---|
| Projects | V1.4.0 | see Projects Release note for details | release notes |
For applications using device connected on CN7 (Type-C connector on MB1352):
When the power source jumper JP24 is configured to D5V position (with this configuration the mother board is powered from the daughter board), there is no risk to get an over voltage on USB Vbus connector CN7.
When the ST-Link is used as power source there is a risk to get an over voltage in connector. In such power configuration, software safety protection is required to detect the overvoltage.
Please refer to /* SAFETY PROTECTION CODE BEGIN */ section in main.c of USB_Host applications.
Note: in the tables above, version highlighted have changed since previous release.
Drivers
| Name | Version | License | Release notes |
|---|---|---|---|
| Cortex-M CMSIS V5.6.0 | V5.6.0_cm0 | Apache License v2.0 | release notes |
| STM32G0xx CMSIS | V1.4.0 | Apache License v2.0 | release notes |
| STM32G0xx_HAL_Driver | V1.4.1 | BSD 3-Clause | release notes |
| BSP STM32G0xx_Nucleo | V1.1.1 | BSD 3-Clause | release notes |
| BSP STM32G0C1E-EV | V1.0.0 | BSD 3-Clause | release notes |
| BSP STM32G081B_EVAL | V1.3.0 | BSD 3-Clause | release notes |
| BSP STM32G071B-Discovery | V1.2.0 | BSD 3-Clause | release notes |
| BSP STM32G0316-DISCO | V1.0.1 | BSD 3-Clause | release notes |
| BSP STM32G0xx_Nucleo_32 | V1.0.1 | BSD 3-Clause | release notes |
| BSP Adafruit Shield (reference ID 802) | V3.0.4 | BSD 3-Clause | release notes |
| BSP Common | V5.1.2 | BSD 3-Clause | release notes |
| BSP hx8347d | V1.1.2 | BSD 3-Clause | release notes |
| BSP stlm75 | V2.0.2 | BSD 3-Clause | release notes |
| BSP st7735 | V1.1.5 | BSD 3-Clause | release notes |
| BSP cbtl08gp053 | V1.0.1 | BSD 3-Clause | release notes |
| BSP tusb546 | V1.0.3 | BSD 3-Clause | release notes |
| BSP sn65dp141 | V1.0.2 | BSD 3-Clause | release notes |
| BSP ina230 | V1.0.0 | BSD 3-Clause | release notes |
| BSP ssd1315 | V1.1.0 | BSD 3-Clause | release notes |
Middleware
| Name | Version | License | Release notes |
|---|---|---|---|
| FatFS | R0.12c | BSD 3-Clause | release notes |
| ST modified 20191011 | BSD 3-Clause | release notes ST | |
| FreeRTOS | V10.3.1 | MIT-License | release notes |
| ST modified 20200831 | BSD 3-Clause | release notes ST | |
| STM32_USBPD_Library - Core | V3.2.0 | SLA0044 | release notes |
| STM32_USBPD_Library - Devices | V3.1.0 | SLA0044 | release notes |
| STM32_USB_Host_Library | V3.3.4 | SLA0044 | release notes |
| STM32_USB_Device_Library | V2.7.1 | SLA0044 | release notes |
| OpenBootloader | V3.0.0 | SLA0044 | release notes |
Utilities
| Name | Version | License | Release notes |
|---|---|---|---|
| CPU | V1.1.1 | BSD 3-Clause | release notes |
| Fonts | V1.0.1 | BSD 3-Clause | release notes |
| Log | V1.0.2 | BSD 3-Clause | release notes |
| GUI_INTERFACE | V1.12.0 | BSD 3-Clause | release notes |
| TRACER_EMB | V1.5.0 | BSD 3-Clause | release notes |
| Toolchain + ST-Link | Version | Device | Patch(if available) |
|---|---|---|---|
| IAR Embedded Workbench for ARM (EWARM) | V8.30.1 | G0C1xx/B1xx/B0xx | Patch EWARM |
| IAR Embedded Workbench for ARM (EWARM) | V8.30.1 | G061xx/51xx/50xx | Patch EWARM |
| RealView Microcontroller Development Kit (MDK-ARM) | V5.29 | G0C1xx/B1xx/B0xx | Patch MDK-ARM |
| RealView Microcontroller Development Kit (MDK-ARM) | V5.29 | G061xx/51xx/50xx | Patch MDK-ARM |
| STM32CubeIDE | V1.5.0 | G0C1xx/B1xx/B0xx |
This software release is compatible with:
Official release of STM32CubeG0 (STM32Cube for STM32G0 Series) Firmware package introducing STM32G0C1xx/B1xx/B0xx and STM32G061xx/51xx/50xx devices.
Maintenance release of STM32CubeG0 (STM32Cube for STM32G0 Series) Firmware package supporting STM32G041xx/31xx/30xx devices and STM32G081xx/71xx/70xx devices.
In the STM32CubeG0 MCU Package, examples and applications projects are generated with the STM32CubeMX tool to initialize the system, peripherals and middleware stacks. User can open the provided ioc file in STM32CubeMX to modify the settings, add additional peripherals and/or middleware, to build his final application.
Demonstrations binaries are no more delivered within the STM32CubeG0 MCU package. They are available for download, in addition to their required media files if any, in a standalone package accessible through each hardware board official webpage. Please refer to the corresponding demonstration binary readme.txt to get webpage for each board.
Upgrade to CMSIS V5.6.0
DSP libraries moved to CMSIS/DSP/Lib (DSP-based user projects impacted)
Add new examples, templates, Applications and Demonstration for STM32G0C1E-EV and NUCLEO-G0B1RE boards.
The STM32CubeG0 Firmware package comes with a rich set of examples running on STMicroelectronics boards, organized by board and provided with preconfigured projects for the main supported toolchains.
The exhaustive list of projects is provided in this table (STM32CubeProjectsList.html).
| Name | Version | License | Release notes |
|---|---|---|---|
| Projects | V1.4.0 | see Projects Release note for details | release notes |
For applications using device connected on CN7 (Type-C connector on MB1352):
When the power source jumper JP24 is configured to D5V position (with this configuration the mother board is powered from the daughter board), there is no risk to get an over voltage on USB Vbus connector CN7.
When the ST-Link is used as power source there is a risk to get an over voltage in connector. In such power configuration, software safety protection is required to detect the overvoltage.
Please refer to /* SAFETY PROTECTION CODE BEGIN */ section in main.c of USB_Host applications.
Note: in the tables above, version highlighted have changed since previous release.
Drivers
| Name | Version | License | Release notes |
|---|---|---|---|
| Cortex-M CMSIS V5.6.0 | V5.6.0_cm0 | Apache License v2.0 | release notes |
| STM32G0xx CMSIS | V1.4.0 | Apache License v2.0 | release notes |
| STM32G0xx_HAL_Driver | V1.4.0 | BSD 3-Clause | release notes |
| BSP STM32G0xx_Nucleo | V1.1.1 | BSD 3-Clause | release notes |
| BSP STM32G0C1E-EV | V1.0.0 | BSD 3-Clause | release notes |
| BSP STM32G081B_EVAL | V1.3.0 | BSD 3-Clause | release notes |
| BSP STM32G071B-Discovery | V1.2.0 | BSD 3-Clause | release notes |
| BSP STM32G0316-DISCO | V1.0.1 | BSD 3-Clause | release notes |
| BSP STM32G0xx_Nucleo_32 | V1.0.1 | BSD 3-Clause | release notes |
| BSP Adafruit Shield (reference ID 802) | V3.0.4 | BSD 3-Clause | release notes |
| BSP Common | V5.1.2 | BSD 3-Clause | release notes |
| BSP hx8347d | V1.1.2 | BSD 3-Clause | release notes |
| BSP stlm75 | V2.0.2 | BSD 3-Clause | release notes |
| BSP st7735 | V1.1.5 | BSD 3-Clause | release notes |
| BSP cbtl08gp053 | V1.0.1 | BSD 3-Clause | release notes |
| BSP tusb546 | V1.0.3 | BSD 3-Clause | release notes |
| BSP sn65dp141 | V1.0.2 | BSD 3-Clause | release notes |
| BSP ina230 | V1.0.0 | BSD 3-Clause | release notes |
| BSP ssd1315 | V1.1.0 | BSD 3-Clause | release notes |
Middleware
| Name | Version | License | Release notes |
|---|---|---|---|
| FatFS | R0.12c | BSD 3-Clause | release notes |
| ST modified 20191011 | BSD 3-Clause | release notes ST | |
| FreeRTOS | V10.3.1 | MIT-License | release notes |
| ST modified 20200831 | BSD 3-Clause | release notes ST | |
| STM32_USBPD_Library - Core | V3.2.0 | SLA0044 | release notes |
| STM32_USBPD_Library - Devices | V3.1.0 | SLA0044 | release notes |
| STM32_USB_Host_Library | V3.3.4 | SLA0044 | release notes |
| STM32_USB_Device_Library | V2.7.1 | SLA0044 | release notes |
| OpenBootloader | V3.0.0 | SLA0044 | release notes |
Utilities
| Name | Version | License | Release notes |
|---|---|---|---|
| CPU | V1.1.1 | BSD 3-Clause | release notes |
| Fonts | V1.0.1 | BSD 3-Clause | release notes |
| Log | V1.0.2 | BSD 3-Clause | release notes |
| GUI_INTERFACE | V1.12.0 | BSD 3-Clause | release notes |
| TRACER_EMB | V1.5.0 | BSD 3-Clause | release notes |
| Toolchain + ST-Link | Version | Device | Patch(if available) |
|---|---|---|---|
| IAR Embedded Workbench for ARM (EWARM) | V8.30.1 | G0C1xx/B1xx/B0xx | Patch EWARM |
| IAR Embedded Workbench for ARM (EWARM) | V8.30.1 | G061xx/51xx/50xx | Patch EWARM |
| RealView Microcontroller Development Kit (MDK-ARM) | V5.29 | G0C1xx/B1xx/B0xx | Patch MDK-ARM |
| RealView Microcontroller Development Kit (MDK-ARM) | V5.29 | G061xx/51xx/50xx | Patch MDK-ARM |
| STM32CubeIDE | V1.5.0 | G0C1xx/B1xx/B0xx |
This software release is compatible with:
Maintenance release of STM32CubeG0 (STM32Cube for STM32G0 Series) Firmware package supporting STM32G041xx/31xx/30xx devices and STM32G081xx/71xx/70xx devices.
In the STM32CubeG0 MCU Package, examples and applications projects are generated with the STM32CubeMX tool to initialize the system, peripherals and middleware stacks. User can open the provided ioc file in STM32CubeMX to modify the settings, add additional peripherals and/or middleware, to build his final application.
Demonstrations binaries are no more delivered within the STM32CubeG0 MCU package. They are available for download, in addition to their required media files if any, in a standalone package accessible through each hardware board official webpage. Please refer to the corresponding demonstration binary readme.txt to get webpage for each board.
| Name | Version | License | Release notes |
|---|---|---|---|
| Projects | V1.3.0 | see Projects Release note for details | release notes |
Note: in the tables above, version highlighted have changed since previous release.
Drivers
| Name | Version | License | Release notes |
|---|---|---|---|
| Cortex-M CMSIS V5.4 | V5.4.0 | Apache License v2.0 | release notes |
| STM32G0xx CMSIS | V1.3.0 | Apache License v2.0 | release notes |
| STM32G0xx_HAL_Driver | V1.3.0 | BSD 3-Clause | release notes |
| BSP STM32G0xx_Nucleo | V1.1.0 | BSD 3-Clause | release notes |
| BSP STM32G081B_EVAL | V1.2.0 | BSD 3-Clause | release notes |
| BSP STM32G071B-Discovery | V1.1.0 | BSD 3-Clause | release notes |
| BSP STM32G0316-DISCO | V1.0.0 | BSD 3-Clause | release notes |
| BSP STM32G0xx_Nucleo_32 | V1.0.0 | BSD 3-Clause | release notes |
| BSP Adafruit Shield (reference ID 802) | V3.0.4 | BSD 3-Clause | release notes |
| BSP Common | V5.1.2 | BSD 3-Clause | release notes |
| BSP hx8347d | V1.1.2 | BSD 3-Clause | release notes |
| BSP stlm75 | V2.0.2 | BSD 3-Clause | release notes |
| BSP st7735 | V1.1.5 | BSD 3-Clause | release notes |
| BSP cbtl08gp053 | V1.0.0 | BSD 3-Clause | release notes |
| BSP tusb546 | V1.0.2 | BSD 3-Clause | release notes |
| BSP sn65dp141 | V1.0.1 | BSD 3-Clause | release notes |
| BSP ina230 | V1.0.0 | BSD 3-Clause | release notes |
| BSP ssd1315 | V1.0.0 | BSD 3-Clause | release notes |
Middlewares
| Name | Version | License | Release notes |
|---|---|---|---|
| FatFS | R0.12c | BSD 3-Clause | release notes |
| ST modified 20190329 | BSD 3-Clause | release notes ST | |
| FreeRTOS | V10.0.1 | MIT | release notes |
| ST modified 20190329 | BSD 3-Clause | release notes ST | |
| STM32_USBPD_Library - Core | V2.6.0 | SLA0044 | release notes |
| STM32_USBPD_Library - Devices | V2.6.0 | SLA0044 | release notes |
Utilities
| Name | Version | License | Release notes |
|---|---|---|---|
| CPU | V1.1.1 | BSD 3-Clause | release notes |
| Fonts | V1.0.1 | BSD 3-Clause | release notes |
| Log | V1.0.2 | BSD 3-Clause | release notes |
| GUI_INTERFACE | V1.7.0 | BSD 3-Clause | release notes |
| TRACER_EMB | V1.2.0 | BSD 3-Clause | release notes |
This software release is compatible with:
First Official release of STM32CubeG0 (STM32Cube for STM32G0 Series) Firmware package supporting STM32G041xx/31xx/30xx devices and introducing new STM32G0316-DISCO and NUCLEO-G031K8 boards.
Maintenance release of STM32CubeG0 (STM32Cube for STM32G0 Series) Firmware package supporting STM32G081xx/71xx/70xx devices
In the STM32CubeG0 MCU Package, examples and applications projects are generated with the STM32CubeMX tool to initialize the system, peripherals and middleware stacks. User can open the provided ioc file in STM32CubeMX to modify the settings, add additional peripherals and/or middleware, to build his final application.
Demonstrations binaries are no more delivered within the STM32CubeG0 MCU package. They are available for download, in addition to their required media files if any, in a standalone package accessible through each hardware board official webpage. Please refer to the corresponding demonstration binary readme.txt to get webpage for each board.
The STM32CubeG0 Firmware package comes with a rich set of examples running on STMicroelectronics boards, organized by board and provided with preconfigured projects for the main supported toolchains.
The exhaustive list of projects is provided in this table (STM32CubeProjectsList.html).
| Name | Version | License | Release notes |
|---|---|---|---|
| Projects | V1.2.0 | see Projects Release note for details | release notes |
| Name | Version | License | Release notes |
|---|---|---|---|
| Cortex-M CMSIS V4.5 | V4.5.0 | BSD 3-Clause | release notes |
| STM32G0xx CMSIS | V1.2.0 | BSD 3-Clause | release notes |
| STM32G0xx_HAL_Driver | V1.2.0 | BSD 3-Clause | release notes |
| BSP STM32G0xx_Nucleo | V1.1.0 | BSD 3-Clause | release notes |
| BSP STM32G081B_EVAL | V1.1.1 | BSD 3-Clause | release notes |
| BSP STM32G071B-Discovery | V1.1.0 | BSD 3-Clause | release notes |
| BSP STM32G0316-DISCO | V1.0.0 | BSD 3-Clause | release notes |
| BSP STM32G0xx_Nucleo_32 | V1.0.0 | BSD 3-Clause | release notes |
| BSP Adafruit Shield (reference ID 802) | V2.0.1 | BSD 3-Clause | release notes |
| BSP Common | V5.1.2 | BSD 3-Clause | release notes |
| BSP hx8347d | V1.1.2 | BSD 3-Clause | release notes |
| BSP stlm75 | V2.0.2 | BSD 3-Clause | release notes |
| BSP st7735 | V1.1.5 | BSD 3-Clause | release notes |
| BSP cbtl08gp053 | V1.0.0 | BSD 3-Clause | release notes |
| BSP tusb546 | V1.0.2 | BSD 3-Clause | release notes |
| BSP sn65dp141 | V1.0.1 | BSD 3-Clause | release notes |
| BSP ina230 | V1.0.0 | BSD 3-Clause | release notes |
| BSP ssd1315 | V1.0.0 | BSD 3-Clause | release notes |
Middlewares
| Name | Version | License | Release notes |
|---|---|---|---|
| FatFS | R0.12c | FatFs License | release notes |
| ST modified 20170710 | SLA0044 | release notes ST | |
| FreeRTOS | V10.0.1 | MIT | release notes |
| ST modified 20190329 | BSD 3-Clause | release notes ST | |
| STM32_USBPD_Library - Core | V2.5.2 | SLA0044 | release notes |
| STM32_USBPD_Library - Devices | V2.5.0 | SLA0044 | release notes |
Utilities
| Name | Version | License | Release notes |
|---|---|---|---|
| CPU | V1.1.0 | BSD 3-Clause | release notes |
| Fonts | V1.0.0 | BSD 3-Clause | release notes |
| Log | V1.0.0 | BSD 3-Clause | release notes |
| GUI_INTERFACE | V1.5.0 | BSD 3-Clause | release notes |
| TRACER_EMB | V1.0.0 | BSD 3-Clause | release notes |
Note: in the tables above, version highlighted have changed since previous release.
This software release is compatible with:
Official release of STM32CubeG0 (STM32Cube for STM32G0 Series) supporting STM32G081xx/71xx/70xx devices and introducing new STM32G071-DISCO board, designed to highlight USBPD features.
NUCLEO-G071RB, NUCLEO-G070RB and STM32G081B-EVAL completed with new examples in STM32CubeMX format.
In the STM32CubeG0 MCU Package, examples and applications projects are generated with the STM32CubeMX tool to initialize the system, peripherals and middleware stacks. User can open the provided ioc file in STM32CubeMX to modify the settings, add additional peripherals and/or middleware, to build his final application.
The STM32CubeG0 Firmware package comes with a rich set of examples running on STMicroelectronics boards, organized by board and provided with preconfigured projects for the main supported toolchains.
The exhaustive list of projects is provided in this table (STM32CubeProjectsList.html).
Demonstrations binaries are no more delivered within the STM32CubeG0 MCU package. They are available for download, in addition to their required media files if any, in a standalone package accessible through each hardware board official webpage. Please refer to the corresponding demonstration binary readme.txt to get webpage for each board.
| Name | Version | License | Release notes |
|---|---|---|---|
| Projects | V1.1.0 | see Projects Release note for details | release notes |
Drivers
| Name | Version | License | Release notes |
|---|---|---|---|
| Cortex-M CMSIS V4.5 | V4.5.0 | BSD 3-Clause | release notes |
| STM32G0xx CMSIS | V1.1.0 | BSD 3-Clause | release notes |
| STM32G0xx HAL | V1.1.0 | BSD 3-Clause | release notes |
| BSP STM32G0xx_Nucleo | V1.0.0 | BSD 3-Clause | release notes |
| BSP STM32G081B_EVAL | V1.1.1 | BSD 3-Clause | release notes |
| BSP STM32G071B-Discovery | V1.0.0 | BSD 3-Clause | release notes |
| BSP Adafruit Shield (reference ID 802) | V2.0.1 | BSD 3-Clause | release notes |
| BSP Common | V5.1.0 | BSD 3-Clause | release notes |
| BSP hx8347d | V1.1.2 | BSD 3-Clause | release notes |
| BSP stlm75 | V2.0.2 | BSD 3-Clause | release notes |
| BSP st7735 | V1.1.4 | BSD 3-Clause | release notes |
| BSP cbtl08gp053 | V1.0.0 | BSD 3-Clause | release notes |
| BSP tusb546 | V1.0.2 | BSD 3-Clause | release notes |
| BSP sn65dp141 | V1.0.1 | BSD 3-Clause | release notes |
| BSP ina230 | V1.0.0 | BSD 3-Clause | release notes |
| BSP ssd1315 | V1.0.0 | BSD 3-Clause | release notes |
Middlewares
| Name | Version | License | Release notes |
|---|---|---|---|
| FreeRTOS V10.0.1 ST modified 20180813 | V10.0.1 | FatFs License | release notes |
| ST modified 20180813 | SLA0044 | release notes | |
| FatFS R0.12c ST modified 20170710 | R0.12c | MIT | release notes |
| ST modified 20170710 | SLA0044 | release notes | |
| STM32_USBPD_Library - Core | V2.5.0 | SLA0044 | release notes |
| STM32_USBPD_Library - Devices | V2.5.0 | SLA0044 | release notes |
Utilities
| Name | Version | License | Release notes |
|---|---|---|---|
| CPU | V1.1.0 | BSD 3-Clause | release notes |
| Fonts | V1.0.0 | BSD 3-Clause | release notes |
| Log | V1.0.0 | BSD 3-Clause | release notes |
| GUI_INTERFACE | V1.5.0 | BSD 3-Clause | release notes |
| TRACER_EMB | V1.0.0 | BSD 3-Clause | release notes |
Note: in the tables above, version highlighted have changed since previous release.
This software release is compatible with:
First release of STM32CubeG0 (STM32Cube for STM32G0 Series) supporting STM32G081xx/71xx/70xx devices
In the STM32CubeG0 MCU Package, most of the examples and applications projects are generated with the STM32CubeMX tool to initialize the system, peripherals and middleware stacks. User can open the provided ioc file in STM32CubeMX to modify the settings, add additional peripherals and/or middleware, to build his final application.
The STM32CubeG0 Firmware package comes with a rich set of examples running on STMicroelectronics boards, organized by board and provided with preconfigured projects for the main supported toolchains.
The exhaustive list of projects is provided in this table (STM32CubeProjectsList.html).
| Name | Version | License | Release notes |
|---|---|---|---|
| Projects | V1.0.0 | see Projects Release note for details | release notes |
Drivers
| Name | Version | License | Release notes |
|---|---|---|---|
| Cortex-M CMSIS V4.5 | V4.5.0 | BSD 3-Clause | release notes |
| STM32G0xx CMSIS | V1.0.0 | BSD 3-Clause | release notes |
| STM32G0xx HAL | V1.0.0 | BSD 3-Clause | release notes |
| BSP STM32G0xx_Nucleo | V1.0.0 | BSD 3-Clause | release notes |
| BSP STM32G081B_EVAL | V1.0.0 | BSD 3-Clause | release notes |
| BSP Adafruit Shield (reference ID 802) | V2.0.1 | BSD 3-Clause | release notes |
| BSP Common | V5.1.0 | BSD 3-Clause | release notes |
| BSP hx8347d | V1.1.2 | BSD 3-Clause | release notes |
| BSP stlm75 | V2.0.0 | BSD 3-Clause | release notes |
| BSP st7735 | V1.1.2 | BSD 3-Clause | release notes |
| BSP cbtl08gp053 | V1.0.0 | BSD 3-Clause | release notes |
| BSP tusb546 | V1.0.2 | BSD 3-Clause | release notes |
| BSP sn65dp141 | V1.0.1 | BSD 3-Clause | release notes |
Middlewares
| Name | Version | License | Release notes |
|---|---|---|---|
| FreeRTOS V10.0.1 ST modified 20180730 | V10.0.1 | FatFs License | release notes |
| ST modified 20180813 | SLA0044 | release notes | |
| FatFS R0.12c ST modified 20170710 | R0.12c | MIT | release notes |
| ST modified 20170710 | SLA0044 | release notes | |
| STM32_USBPD_Library - Core | V2.2.5 | SLA0044 | release notes |
| STM32_USBPD_Library - Devices | V2.3.0 | SLA0044 | release notes |
Utilities
| Name | Version | License | Release notes |
|---|---|---|---|
| CPU | V1.1.0 | BSD 3-Clause | release notes |
| Fonts | V1.0.0 | BSD 3-Clause | release notes |
| Log | V1.0.0 | BSD 3-Clause | release notes |
| GUI_INTERFACE | V1.1.2 | BSD 3-Clause | release notes |


|||
photo
gallary
Filter photos by categories:
All
wedding
wild
nature
others
Home
About Us
Services
Portfolio
Nature Photography
Wild Photography
Wedding Photography
Others
Clients
Contact Us


fflush
, fflush_unlocked
—flush buffered file output#include <stdio.h> int fflush(FILE *fp); #define _BSD_SOURCE #include <stdio.h> int fflush_unlocked(FILE *fp); #include <stdio.h> int _fflush_r(struct _reent *reent, FILE *fp); #define _BSD_SOURCE #include <stdio.h> int _fflush_unlocked_r(struct _reent *reent, FILE *fp);
Description
The stdio
output functions can buffer output before delivering it
to the host system, in order to minimize the overhead of system calls.
Use fflush
to deliver any such pending output (for the file
or stream identified by fp) to the host system.
If fp is NULL
, fflush
delivers pending output from all
open files.
Additionally, if fp is a seekable input stream visiting a file descriptor, set the position of the file descriptor to match next unread byte, useful for obeying POSIX semantics when ending a process without consuming all input from the stream.
fflush_unlocked
is a non-thread-safe version of fflush
.
fflush_unlocked
may only safely be used within a scope
protected by flockfile() (or ftrylockfile()) and funlockfile(). This
function may safely be used in a multi-threaded program if and only
if they are called while the invoking thread owns the (FILE *)
object, as is the case after a successful call to the flockfile() or
ftrylockfile() functions. If threads are disabled, then
fflush_unlocked
is equivalent to fflush
.
The alternate functions _fflush_r
and _fflush_unlocked_r
are
reentrant versions, where the extra argument reent is a pointer to
a reentrancy structure, and fp must not be NULL.
Returns
fflush
returns 0
unless it encounters a write error; in that
situation, it returns EOF
.
Portability
fflush
. The behavior on input streams is only
specified by POSIX, and not all implementations follow POSIX rules.
fflush_unlocked
is a BSD extension also provided by GNU libc.
No supporting OS subroutines are required.


We have the following code…
var key,
obj = {
name: 'john',
surname: 'doe'
};
for ( key in obj ) {
if ( obj.hasOwnProperty( key ) ) {
console.log( key + ' exists in obj' );
console.log( key + ': ' + obj[key] );
continue;
}
console.log( key + " doesn't exist in obj" );
}
… and the result of executing it is…
name exists in obj
name: john
surname exists in obj
surname: doe
… but we want to get the following result, can you help us?
name doesn't exist in obj
surname exists in obj
surname: doe


| Total net profit | -5.26 | Gross profit | 5.21 | Gross loss | -10.47 |
| Profit factor | 0.5 | Expected payoff | -0.31 | ||
| Absolute drawdown | -5.42 | Maximal drawdown (%) | 5.12 (-1706.67%) | ||
| Total trades | 17 | Profit trades (% of total) | 3 (17.65%) | Loss trades (% of total) | 14 (82.35%) |
| Long positions (won %) | 9 (22.22%) | Short positions (won %) | 8 (12.5%) | ||
| Largest | profit trade | 2.51 | loss trade | -1.33 | |
| Average | profit trade | 1.74 | loss trade | -0.75 | |
| Minimum | profit trade | 0.6 | loss trade | -0.3 | |
| Maximum | take profit in pips | 695.4 | stop loss in pips | -130.0 | |
| Average | take profit in pips | 200.1 | stop loss in pips | -73.4 | |
| Minimum | take profit in pips | 19.8 | stop loss in pips | -30.0 | |
| Maximum | Reward-Risk | 23.2 | Duration in minutes | 100 | |
| Average | Reward-Risk | 4.3 | Duration in minutes | 19.4 | |
| Minimum | Reward-Risk | 0.2 | Duration in minutes | 0 | |
| Maximum | consecutive wins (profit in money) | 2.0 (2.7) | consecutive losses (loss in money) | 7.0 (-3.82) | |
| Average | consecutive wins | 1.0 | consecutive losses | 6.0 |
| Total net profit | -1.97 | Gross profit | 4.61 | Gross loss | -6.58 |
| Profit factor | 0.7 | Expected payoff | -0.22 | ||
| Absolute drawdown | -2.13 | Maximal drawdown (%) | 3.73 (233.12%) | ||
| Total trades | 9 | Profit trades (% of total) | 2 (22.22%) | Loss trades (% of total) | 7 (77.78%) |
| Largest | profit trade | 2.51 | loss trade | -1.33 | |
| Average | profit trade | 2.3 | loss trade | -0.94 | |
| Minimum | profit trade | 2.1 | loss trade | -0.5 | |
| Maximum | take profit in pips | 246.2 | stop loss in pips | -130.0 | |
| Average | take profit in pips | 144.7 | stop loss in pips | -91.9 | |
| Minimum | take profit in pips | 20.6 | stop loss in pips | -49.9 | |
| Maximum | Reward-Risk | 4.0 | Duration in minutes | 91.0 | |
| Average | Reward-Risk | 1.8 | Duration in minutes | 23.1 | |
| Minimum | Reward-Risk | 0.2 | Duration in minutes | 0.0 | |
| Maximum | consecutive wins (profit in money) | 1.0 (2.1) | consecutive losses (loss in money) | 4.0 (-3.73) | |
| Average | consecutive wins | 1.0 | consecutive losses | 2.0 |
| Total net profit | -3.29 | Gross profit | 0.6 | Gross loss | -3.89 |
| Profit factor | 0.15 | Expected payoff | -0.41 | ||
| Absolute drawdown | -3.32 | Maximal drawdown (%) | 3.02 (-1006.67%) | ||
| Total trades | 8 | Profit trades (% of total) | 1 (12.5%) | Loss trades (% of total) | 7 (87.5%) |
| Largest | profit trade | 0.6 | loss trade | -1.0 | |
| Average | profit trade | 0.6 | loss trade | -0.56 | |
| Minimum | profit trade | 0.6 | loss trade | -0.3 | |
| Maximum | take profit in pips | 695.4 | stop loss in pips | -92.7 | |
| Average | take profit in pips | 262.5 | stop loss in pips | -52.5 | |
| Minimum | take profit in pips | 19.8 | stop loss in pips | -30.0 | |
| Maximum | Reward-Risk | 23.2 | Duration in minutes | 100.0 | |
| Average | Reward-Risk | 7.1 | Duration in minutes | 15.3 | |
| Minimum | Reward-Risk | Duration in minutes | 0.0 | ||
| Maximum | consecutive wins (profit in money) | 1.0 (0.6) | consecutive losses (loss in money) | 6.0 (-3.32) | |
| Average | consecutive wins | 1.0 | consecutive losses | 6.0 |


TIME SERIES ANALYSIS WITH POWER METERS, PART 1
To better follow the energy consumption, the government wants energy suppliers to install smart meters in every home in England, Wales and Scotland. There are more than 26 million homes for the energy suppliers to get to, with the goal of every home having a smart meter by 2020.
In this dataset, you will find a fraction of the data from the London data store, that contains the energy consumption readings for a sample of 50 London Households that took part in the UK Power Networks between November 2011 and February 2014. The data from the smart meters seems associated only to the electrical consumption.
The purpose of this notebook is to make you familiar with some building blocks of Time Series analysis. It follows a pedagogical flow.
I used Datacamp.com, AnalyticsVidhya.com and Kaggle.com as resource. The data itself is available on Kaggle.
from google.colab import files
uploaded = files.upload()
In this chunk number 100, the figures are given as daily aggregated numbers. There are lots of blocks of csv files. At the moment we are only looking at block number 100.
print (uploaded['block_100.csv'][:200].decode('utf-8') + '...')
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
sns.set()
import io
df = pd.read_csv(io.StringIO(uploaded['block_100.csv'].decode('utf-8')))
df.head()
LCLid s are the ID numbers of Power Meters. They have 1 record per day in this csv file. But how many power meters do we have here?
len(df.groupby(['LCLid']))
how many days?
len(df['day'].unique())
The complete dataset can be quite complex, so it is better to start small. One way to do it can be picking up one power meter randomly and looking into it.
import random
random.seed(10)
my_powermeter = random.choice(df['LCLid'])
#pm stands for power meter
pm_data = df[df['LCLid'] == my_powermeter]
pm_data.info()
convert the day column to date format
pm_data.day = pd.to_datetime(pm_data.day)
#and set index inplace!
pm_data.set_index('day', inplace=True)
pm_data.head() #see that now date is the index
pm_data.info()
Now we will see the distribution of median energy consumption and spot if there are some anomalies
pm_data['energy_median'].describe()
It is a huge difference between the median and the max value. There is potentially something fishy there. A simple boxplot can help seeing that...
plt.figure(figsize=(5,5))
sns.boxplot(y = pm_data['energy_median'], data = pm_data)
We will replace those observations greater than 0.25 with 0.25 for this data at this point. They need more attention thou. Maybe these are not measurement errors but some special events which should not be excluded. However, we will do this manuplation for our exploration purposes. You can try median imputation for yourself.
pm_data['energy_median'] = [0.25 if i > 0.25 else i for i in pm_data['energy_median']]
Now try a bit of exploration without those outliers
pm_data['energy_median'].plot(figsize=(18,7), linewidth=5, fontsize=20)
plt.xlabel('Date', fontsize=20);
This increase in winter confirms our intuition right? We can try some rolling average also, or moving average...
Median = pm_data[['energy_median']]
Median.rolling(10).mean().plot(figsize=(18,7), linewidth=5, fontsize=20)
plt.xlabel('Date', fontsize=20);
Detrending our data is easy by taking First-Differences. It is the difference between the successive data points.
pm_data['energy_median'].diff().plot(figsize=(18,7), linewidth=3, fontsize=20)
plt.xlabel('Date', fontsize=20);
realize that the peaks in winter are still visible. That is up to 8-9% increase
Differencing is helpful in converting your time series into a stationary time series. Stationary data don't change over time. This is good because many time series forecasting methods are based on the assumption that the time series is approximately stationary. It can turn out that our data is already stationary and we dont need this transformation thou...
There is also a concept of autocorrelation. A time series is periodic if it repeats itself at equally spaced intervals like this one (every 12 months)
Another way of thinking about this is that the time series is correlated with itself shifted by 12 months. That means that, if you took the time series and moved it 12 months backwards or forwards, it would map onto itself in some way.
Considering the correlation of a time series with such a shifted version of itself is captured by the concept of autocorrelation.
plt.figure(figsize=(18,6))
pd.plotting.autocorrelation_plot(pm_data['energy_median'])
The grey lines are the lines of statistical significance. We can say there is some autocorrelation until 50 lags. But we can not say that it is perfect as it is in a decline from 50% to 25%. If the blue line goes inside the grey lines then the autocorrelation is not significant.
Let's see if the trends are similar accross all these power meters first. From this line onwards we will look at daily total energy consumption, not the median.
g = sns.FacetGrid(df, col="LCLid", col_wrap=7, size=2)
g = g.map(plt.plot, "energy_sum", marker=".")
In general we can say that there are big and small consumers. We observe curious spikes also time to time
In order to work on different power meters in a simpler way, we can create a small Class. First method in the class asks the power meter id to the user and makes a time series object. The other methods in the class replicate the plots by using that time series object
#pm is a powermeter class
class pm():
#assumes all above libraries are available
def make_pm_df(df):
powermeter_id = input()
data = df[df['LCLid'] == powermeter_id]
data.day = pd.to_datetime(data.day)
data.set_index('day', inplace=True)
return data
def anomaly_checker(data, variable):
plt.figure(figsize=(5,5))
sns.boxplot(y = data[variable], data = data)
def time_series_plotter(data, variable):
data[variable].plot(figsize=(18,7), linewidth=5, fontsize=20)
plt.xlabel('Date', fontsize=20);
def moving_average_plotter(data, variable):
var = data[[variable]]
var.rolling(10).mean().plot(figsize=(18,7), linewidth=5, fontsize=20)
plt.xlabel('Date', fontsize=20);
"STATIONARITY IS A BITCH!"
Now sit back and relax before we continue. We will try to answer a few fundamental questions about time series. These are very different than panel data. First of all it has constant time intervals. We check it and see long term trends and forecast for the future.
Dates are the index here and we can not shuffle them.
A Time Series is said to be stationary if its statistical properties such as mean, variance remain constant over time. But why is it important? Most of the TS models work on the assumption that the TS is stationary. Intuitively, we can say that if a TS has a particular behaviour over time, there is a very high probability that it will follow the same in the future. Also, the theories related to stationary series are more mature and easier to implement as compared to non-stationary series.
We will consider it stationary when it has
Let's now pick up one power meter see if it is stationary or not. The simplest way to do it is to apply a Dickey-Fuller Test. Here the null hypothesis is that the data is non-stationary. And the Alternate Hypothesis is that it is stationary.
A good news can be that our time series is stationary. It means we should be able to reject the null hypothesis. That can only happen if our p value is less than, say 5%...
#get your data for a power meter of your choice. We use the class we have created before
data = pm.make_pm_df(df)
data.head()
pm.time_series_plotter(data, 'energy_sum')
pm.anomaly_checker(data, 'energy_sum')
There is an anomaly just before the April, measuring Zero consumption. We will try to model continuous consumption and assume that noone is moving out.
So lets filter them out. Let it go until Feb 15
data = data['2012-07-02':'2014-02-15']
#And apply the test
from pandas import Series
from statsmodels.tsa.stattools import adfuller
series = data['energy_sum']
X = series.values
result = adfuller(X)
print('ADF Statistic: %f' % result[0])
print('p-value: %f' % result[1])
print('Critical Values:')
for key, value in result[4].items():
print('\t%s: %.3f' % (key, value))
Here we can reject the null hypothesis, so our data is stationary.
In fact many time series are not stationary. If that is the case, we try to take it as close as possible to stationary by playing with Trend and Seasonality. However, that is a subject of another tutorial.
Since we consider our data to be stationary with a confidence of greater than 99% already, we won't deal with these steps but proceed ahead.
moving_avg = data[['energy_sum']].rolling(45).mean()
plt.figure(figsize=(18,6))
plt.plot(data['energy_sum'])
plt.plot(moving_avg, color='red');
Forecasting a Time Series
There are AR (auto regressive) models and MA (moving average) models. We will use the ARIMA function which handles and combines them. But what is ARIMA?
 The predictors depend on the parameters (p,d,q) of the ARIMA model:
An importance concern here is how to determine the value of ‘p’ and ‘q’. We use two plots to determine these numbers. Lets discuss them first.
The ACF and PACF plots for the TS after differencing can be plotted as:
from statsmodels.tsa.arima_model import ARIMA
#ACF and PACF plots:
from statsmodels.tsa.stattools import acf, pacf
lag_acf = acf(data['energy_sum'], nlags=10)
lag_pacf = pacf(data['energy_sum'], nlags=10, method='ols')
plt.figure(figsize=(8,3))
#Plot ACF:
plt.subplot(121)
plt.plot(lag_acf)
plt.axhline(y=0,linestyle='--',color='gray')
plt.axhline(y=-1.96/np.sqrt(len(data['energy_sum'])),linestyle='--',color='gray')
plt.axhline(y=1.96/np.sqrt(len(data['energy_sum'])),linestyle='--',color='gray')
plt.title('Autocorrelation Function')
#Plot PACF:
plt.subplot(122)
plt.plot(lag_pacf)
plt.axhline(y=0,linestyle='--',color='gray')
plt.axhline(y=-1.96/np.sqrt(len(data['energy_sum'])),linestyle='--',color='gray')
plt.axhline(y=1.96/np.sqrt(len(data['energy_sum'])),linestyle='--',color='gray')
plt.title('Partial Autocorrelation Function')
plt.tight_layout()
In this plot, the two dotted lines on either sides of 0 are the confidence interevals. These can be used to determine the ‘p’ and ‘q’ values as:
p – The lag value where the PACF chart crosses the upper confidence interval for the first time. If you notice closely, in this case p=4.
q – The lag value where the ACF chart does not cross the upper confidence interval. So, q=0.
p talks about AR and q talks about MA in ARIMA. Since q is zero and p is 4, this will be an AR model.
THIS IS HOW THE FITTED VALUES LOOK LIKE IN RED COLOR:
model = ARIMA(data['energy_sum'], order=(4, 0, 1))
results_AR = model.fit(disp=-1)
plt.figure(figsize=(18,6))
plt.plot(data['energy_sum'])
plt.plot(results_AR.fittedvalues, color='red')
plt.title('RSS: %.4f'% sum((results_AR.fittedvalues-data['energy_sum'])**2))
WE CAN ALSO VISUALIZE HOW IT IS FORECASTING:
data['forecast'] = results_AR.predict(start = 500, end= 600, dynamic= True)
data[['energy_sum', 'forecast']].plot(figsize=(18, 6))
plt.show()
WE CAN SEE THE DIFFERENCES BETWEEN PREDICTED AND THE ACTUAL VALUES:
predictions_AR_diff = pd.Series(results_AR.fittedvalues, copy=True)
print(predictions_AR_diff.tail())
WE CAN ADD MORE PARAMETERS IF WE DONT WANT IT THAT MUCH SMOOTH:
import statsmodels.api as sm
# Applying Seasonal ARIMA model to forcast the data
mod = sm.tsa.SARIMAX(data['energy_sum'], trend='n', order=(4,0,1), seasonal_order=(1,1,1,12))
results = mod.fit()
THEN THE FORECAST WILL LOOK LIKE THIS:
data['forecast'] = results.predict(start = 500, end= 600, dynamic= True)
data[['energy_sum', 'forecast']].plot(figsize=(18, 6))
plt.show()
In the next tutorials we will try different models for different power meters, we will forecast for the future and bring together some ideas from other resources on the web. Please let me know about the problems you have spotted and then I will fix them.
Thank you for reading


"Research, Learn, Practice, Repeat!"AJ Acevedo
"If you can't explain it simply, you don't understand it well enough"Albert Einstein
"Try to learn something about everything and everything about something"Thomas Henry Huxley
"Believe you can and you're half way there"Theodore Roosevelt
"The best theory is inspired by practice. The best practice is inspired by theory"Donald Knuth
"Dream as if you'll live forever, live as if you'll die today"James Dean
"Whether you think you can or you think you can't, you're right"Henry Ford
"Insanity is doing the same thing over and over again, but expecting different results"Albert Einsteine
"I know that you believe you understand what you think I said, but I'm not sure you realize that what you heard is not what I meant"Robert McCloskey
"A goal without a plan is just a dream"


Source code for dicom2nifti.compressed_dicom
import subprocess
import os
import logging
import dicom2nifti.settings as settings
from dicom2nifti.exceptions import ConversionError
import pydicom
logger = logging.getLogger(__name__)
[docs]def read_file(dicom_file, defer_size=None, stop_before_pixels=False, force=False):
if _is_compressed(dicom_file, force):
_decompress_dicom(dicom_file)
dicom_header = pydicom.read_file(dicom_file,
defer_size=defer_size,
stop_before_pixels=stop_before_pixels,
force=force)
return dicom_header
def _compress_dicom(input_file):
"""
This function can be used to convert a jpeg compressed image to an uncompressed one for further conversion
:param input_file: single dicom file to compress
"""
gdcmconv_executable = _get_gdcmconv()
subprocess.check_output([gdcmconv_executable, '-K', input_file, input_file])
def _get_gdcmconv():
"""
Get the full path to gdcmconv.
If not found raise error
"""
gdcmconv_executable = settings.gdcmconv_path
if gdcmconv_executable is None:
gdcmconv_executable = _which('gdcmconv')
if gdcmconv_executable is None:
gdcmconv_executable = _which('gdcmconv.exe')
if gdcmconv_executable is None:
raise ConversionError('GDCMCONV_NOT_FOUND')
return gdcmconv_executable
[docs]def compress_directory(dicom_directory):
"""
This function can be used to convert a folder of jpeg compressed images to an uncompressed ones
:param dicom_directory: directory of dicom files to compress
"""
if _is_compressed(dicom_directory):
return
logger.info('Compressing dicom files in %s' % dicom_directory)
for root, _, files in os.walk(dicom_directory):
for dicom_file in files:
if is_dicom_file(os.path.join(root, dicom_file)):
_compress_dicom(os.path.join(root, dicom_file))
[docs]def is_dicom_file(filename):
"""
Util function to check if file is a dicom file
the first 128 bytes are preamble
the next 4 bytes should contain DICM otherwise it is not a dicom
:param filename: file to check for the DICM header block
:type filename: six.string_types
:returns: True if it is a dicom file
"""
file_stream = open(filename, 'rb')
file_stream.seek(128)
data = file_stream.read(4)
file_stream.close()
if data == b'DICM':
return True
if settings.pydicom_read_force:
try:
dicom_headers = pydicom.read_file(filename, defer_size=100, stop_before_pixels=True, force=True)
if dicom_headers is not None:
return True
except:
pass
return False
def _is_compressed(dicom_file, force=False):
"""
Check if dicoms are compressed or not
"""
header = pydicom.read_file(dicom_file,
defer_size=70,
stop_before_pixels=True,
force=force)
uncompressed_types = ["1.2.840.10008.1.2",
"1.2.840.10<IP_ADDRESS>",
"1.2.840.10<IP_ADDRESS>.99",
"1.2.840.10<IP_ADDRESS>"]
if 'TransferSyntaxUID' in header.file_meta and header.file_meta.TransferSyntaxUID in uncompressed_types:
return False
return True
def _decompress_dicom(dicom_file):
"""
This function can be used to convert a jpeg compressed image to an uncompressed one for further conversion
:param input_file: single dicom file to decompress
"""
gdcmconv_executable = _get_gdcmconv()
subprocess.check_output([gdcmconv_executable, '-w', dicom_file, dicom_file])
def _which(program):
import os
def is_exe(executable_file):
return os.path.isfile(executable_file) and os.access(executable_file, os.X_OK)
file_path, file_name = os.path.split(program)
if file_path:
if is_exe(program):
return program
else:
for path in os.environ["PATH"].split(os.pathsep):
path = path.strip('"')
exe_file = os.path.join(path, program)
if is_exe(exe_file):
return exe_file
return None


http://localhost:8080/style.css
body {
font-family: Helvetica, Arial, sans-serif;
}
h1 {
color: dodgerblue;
}
img {
width: 300px;
}
URLs
http
://
www.mysite.com
:80
/path/to/index.html
http
://
<IP_ADDRESS>
:80
/path/to/index.html
http
://
localhost
:8080
/path/to/index.html
- Protocol - How we will talk to each other (for websites, always http or https)
- Host - The name of the computer or server we're talking to
- Port - Which port on that computer are we talking to (80 by default)
- Path - The name of the file we are looking for
[animation of requests and responses going back and forth]
Heavyweight Production Servers
Lightweight Development Servers
If you're on a Mac:
python -m SimpleHTTPServer 8000
If you have Node.js installed:
npm install -g http-server
http-server -p 8000
Example Project:
git clone https://github.com/chrisuehlinger/static-site-example.git
Demo
Fire up a Terminal, go to the directory where we're keeping the site, type:
http-server -p (some number)
Go into the browser, look at that page.
Edit the page, refresh the page
Go to the terminal, look at the IP address http-server gave us
The Simple Static Workflow
- Make a folder and some HTML, CSS and JS files
- In the Terminal App (or cmd on Windows) go to that folder and set up a server
- Look at your page in the browser at http://localhost:[port]/index.html
- Change one of the files
- Refresh the page
- Go back to step 4, repeat until done
Some grease for this workflow
- Set up "Autosave" or "Save on Loss of Focus" in your favorite editor
- See if your editor has a "Compile on Save" plugin for Sass, LESS or other Preprocessors
- Use BrowserSync as your server, it will automatically refresh the page when you save:
npm install -g browser-sync
browser-sync start --server -p 8000 --files="./**/*"
Deploying your web site
- Awesome Free Host: GitHub Pages
- Free-ish hosts: surge.sh and now-static
- Free-ish Host-ish things: Amazon S3 and Dropbox Public Sites
- Learn FTP and copy your files to a server
Thanks for listening!
- @Uehreka on Twitter and Slack
- chrisuehlinger on GitHub
- chrisuehlinger.com


I've updated the Database Schema Reader CodePlex project with basic code generation.
The original code (vintage 2005) did all sorts of things like generating ADO data access classes and, over I added NHibernate mapping, Castle ActiveRecord, and Enterprise Library validation block attributes. It's old code (that is, ugly and horrible), so I stole bits of code and made it just do something a lot simpler.
Now it reads the table schema and turns them into simple POCO classes that are NHibernate compatible (virtual properties, override Equals and GetHashCode, composite keys are made into Key classes). There's also (simplistic) NHibernate mapping. And finally it has .Net 3.5's DataAnnotations for validation.
For quick and simple data-driven code, it's an okay starting point. It is just a starting point- not a data driven solution. There is a UI, but it's the most basic one I could design - it's certainly not anything like the Linq2Sql or EF designers (there are NHibernate mapping designers out there). But once you've got started in NHibernate you'll prefer to continue in code-first mode anyway.
If your database is a mess (I've seen a few with no primary keys .) it won't be much help!


The most powerful sport on earth.
How did you hear about the sport?
Have you ever used anabolic steroids?
What is your favorite exercise?
What do you do to help recover from workouts? (Check all that apply)
Why did you choose this sport?


A New Leash on Life, Inc. trains volunteers and their pets to become certified therapy dog teams. Teams serve as ambassadors of love and good cheer during their visits to nursing homes, assisted living centers, schools, and hospitals in Oklahoma.
The simple touch of a soft hand or a wagging tail can bring smiles, comfort, and sweet memories to people whose world has become very small and often lonely.
The mere presence of a therapy dog in a reading circle creates calm and lessens anxiety, allowing the reader to read aloud to an attentive listener.
Therapy dogs are great assistants in the rehabilitation setting. They provide motivation to adults and children who seem to forget the difficulty of their task when they interact with a dog.
To become a Therapy Dog Team, dogs must first have basic obedience skills to enjoy being petted by
Other programs: Service Dogs, Pen Pals Prison Program, Puppy Raisers


{% include 'bases/copyright.txt' %}
{% include 'bases/navbar.html' %}
Reset Password
{# Page Content #}
{% include 'bases/validation-error-base.html' %}
Please make your password strong for maximum security!
{{ form.csrf_token }} {{ form.password.label }} {{ form.password(class="form-control") }} {{ form.confirm.label }} {{ form.confirm(class="form-control") }}
{# Footer #} {% include 'bases/footer.html' %}


--- layout: post permalink: bestamericanarts.html Tags: Array NameOfCoupon: Best American Arts Cash Back Summary: See our Best American Arts Coupon Code, Best American Arts Rebate, Best American Arts Promo Code, Best American Arts Discount, Best American Arts Coupon Cash Back Rebate here. MetaKeywords: Best American Arts Coupon Code, Best American Arts Rebate, Best American Arts Promo Code, Best American Arts Cash Back Rebate, Best American Arts Discount, Best American Arts Coupon Image: images/22155.jpg LinkURL: http://www.shareasale.com/r.cfm?b=173429&u=412002&m=22155 affiliate_url_link: http://www.icouponblog.com/jane.php?id=551 thesis_readmore: See the Best American Arts Coupon thesis_thumb: http://www.icouponblog.com/tn.php?merchantURL=BestAmericanArts.com Title: Save 5% - Best American Arts Coupon Code for BestAmericanArts.com. Best American Arts Rebate & Discount thesis_description: Our Best American Arts Discount Coupon Code for BestAmericanArts.com. We have the best Best American Arts Rebate anywhere. thesis_keywords: Best American Arts, Best American Arts Coupon Code, Best American Arts Discount, Best American Arts Rebate product_name: Best American Arts hop_url: http://www.icouponblog.com/hop.php?id=551 ---
Best American Arts has the finest selection of work done by American artisan. You can contribute to the U.S economy by purchasing the finest jewelry and other products made by American artisans. These beautiful, handmade products are unique, amazing and will make the recipient very happy. Check out a wide range of products online. You can buy jewelry, bags creatively made by recycling old tires. You can also buy cute scarves and headbands, leather goods, quilts and much more. Use our discount coupon to get the best deal you can on Best American Arts.com.
Best American Arts has very unique items that are hard to find somewhere else . You will find jewelry available in different metals, styles and color. You can buy pendants, necklaces, rings, all at a great price. For men you can buy cufflinks and wallets. Best American Arts has beautiful designs and colors. Check it out today. You will love the individual attention given to each hand made jewelry and other items. You will support a group of hardworking artisans who are trying to preserve the American art and keep the work in the U.S. instead of sending it off to China. Support the artisan’s checkout Best American Arts and use our coupon to save money on Best American Arts products.
Best American Arts has a wide range of products. You can buy vases, picture frames or just jewelry, gold, silver, pearls and all kinds of handbags, and other products. All items are made from eco friendly materials. Check out Best American Arts, you and your wallet will be happy!


Most of the Ericsson code has contracts on function implementation. As we discussed in impl:contracts, we stubbed the precondition and postcondition with CBMC APIs. During Ericsson's code analysis we realised that contracts used in the code are run time guards, which is a way of pessimistically checking incoming parameters at run time. These conditions check the values of each parameter when a function is called and the return values are checked before returning. The contracts are not providing enough information to CBMC to verify the properties of each function.
In verification, contracts are expected to be defined on the behaviour of the function and also provide actual limits of the parameter. The preconditions for the function can include limits on parameters and limits on global states. The post conditions can include affected states and results being returned. The affected states can be either part of parameters or global variables.
ash
2012-09-13


{% extends 'base.html'%} {% import 'macros.html' as macro%} {% import 'bootstrap/wtf.html' as wtf%} {% block content %} {{macro.displayPitches(pitches)}}
{{random.quote}}


{{ partial "head.html" . }} {{ partial "header.html" . }} {{ partial "page-main__top-section.html" . }} {{ partial "page-main__bottom-section.html" . }} {{ partial "scroll-to-top.html" . }} {{ partial "script.html" . }}


Pastries
Home
About us
Where We're Located
Hot Drinks
Pastries
Cakes
Cookies
Catering
One of our specialty cannolis!
An eclair right from the oven!
Pastry
Price
Tea Biscuits
2.50
Miniture Donuts
2.50
Crossiants
2.00
Cinnamon Rolls
3.00
Cannoli
3.00
Eclair
3.00


Arguably the most challenging semester and one that I was consistently hardworking from the very start 'till the very end. Coding, writing, crafting, designing, prototyping and utilising potentially most of my qualities and knowledge, putting all into use in this, pretty much 18 Credit Point subject. In the process, I think my eyesight grew worse, at least for the subsequent few months, my nerves became desolated and myself, succumbing into the phase of becoming razed out but I think it was worth it. This project has proven, that I am able to contribute heavily into a variety of phases related to any potential, conceptual, physical or of any other sorts project. That alone, is an important milestone in not just designer's but anyone's life.
I believe there is not too much that I can share beyond what's already in the documentation attached above. There is code, videos, entire documentation even captured in 360. It is very humbling to a see a project come to life and adhere to most of what you foresaw in terms of what would happen. As in any case, the project could be improved in more than a few ways but considering the amount of resources put forward towards research, design & development the end result was complex, firm but what is most important, it did work and its job well.


Side note 2: You can also create an ADS on a folder with a name such as “abc”. Then you can rename the folder to a name just containing numbers (e.g. “1”). After that you can still see the ADS, but you can’t open it (ADS on a folder with a number as name doesn’t work). To open the ADS data you have to rename the folder first back to for example “abc”.
Script/attacker would just need to rename to string every time they want to execute.


ONLINE EXAM
Exams test your memory, life tests your learning; others will test your patience
1. OOPS concepts click here
2.Database Design click here
3.Operating Systems click here
4.Other Technical Qusetions click here
994, Chowbaga Road, Anandapur, P.O.: East Kolkata Township, Kolkata-700107, West Bengal, India


--- layout: post permalink: katocorp.html Tags: Array NameOfCoupon: Kato Corp. Cash Back Summary: See our Kato Corp. Coupon Code, Kato Corp. Rebate, Kato Corp. Promo Code, Kato Corp. Discount, Kato Corp. Coupon Cash Back Rebate here. MetaKeywords: Kato Corp. Coupon Code, Kato Corp. Rebate, Kato Corp. Promo Code, Kato Corp. Cash Back Rebate, Kato Corp. Discount, Kato Corp. Coupon Image: images/26605.jpg LinkURL: http://www.shareasale.com/r.cfm?b=222246&u=412002&m=26605 affiliate_url_link: http://www.icouponblog.com/jane.php?id=135 thesis_readmore: See the Kato Corp. Coupon thesis_thumb: http://www.icouponblog.com/tn.php?merchantURL=modernfurnitureny.com Title: Save 4% - Kato Corp. Coupon Code for modernfurnitureny.com. Kato Corp. Rebate & Discount thesis_description: Our Kato Corp. Discount Coupon Code for modernfurnitureny.com. We have the best Kato Corp. Rebate anywhere. thesis_keywords: Kato Corp., Kato Corp. Coupon Code, Kato Corp. Discount, Kato Corp. Rebate product_name: Kato Corp. hop_url: http://www.icouponblog.com/hop.php?id=135 ---
ModernFurnitureNY.com offers the best prices on comfortable, attractive bedroom suites, leather sofas, television stands, curious, buffets, club chairs and much more. ModernFurnitureNY.com has furnitures in all styles-- contemporary, traditional, classic. They use the best materials, fabrics and yet keep the prices low. ModernFurnitureNY.com also provides free delivery with White Glove Assembly, a service no competitor offers at such an affordable price. Use ModernFurnitureNY.com discount coupon and save even more money.
ModernFurnitureNY.com has the best, high quality furniture available in attractive styles and colors. If you are looking to furnish your bedroom, or your children's room, or your office, look no further. One click at ModernFurnitureNY.com will immediately give you an array of furniture to choose from.  The ModernFurnitureNY.com orders are shipped directly from the warehouse. There is no extensive load-unloads on the way to the destination. ModernFurnitureNY.com delivers the furniture in brand new condition, bringing it inside, unpacking and placing it. Look for ModernFurnitureNY.com promo code and discount coupon for cash back rebates.
ModernFurnitureNY.com is the place for buying best quality, best looking and best priced furniture. Use ModernFurnitureNY.com coupon to get cash back rebate and discount. You will love your relaxing, comfortable furniture from ModernFurnitureNY.com and our discount coupons!


Aspiring software developer, car enthusiast, garage mechanic, anime fanatic, and dog walker extraordinaire. Has retired from multiplayer games because he's too bad at them and that makes him sad. Best found in the wild on Sundays raging at his fantasy football team. Go Raptors.


Main
Textures
Pexels
Open File
Select Subj
Paste Image
Posterize
Current File/Folder :
null
null
Type here...
12
Get
Vectorize Images?


chevron_left
Saved Groups
add
Add
close
search
keyboard_arrow_down
keyboard_arrow_up
open_in_browser
open_in_new
delete
add
Add more links
Some Action
Another Action
Disabled Action
Yet Another Action
search
No saved groups found!
Click "+" to create new
search
Select all
Input Group Name
Input is not a number!
Save Group


Welcome To Care & Share
People throw away 160 billion tons of food every year with which the lives of many people can be saved.Across the world, there are restaurants that waste tons of excess food everyday.This application establishes a link between restaurants and the charity homes/orphanages to enable excess food donation.The main theme of this application is to provide the necessary information of the leftover foods of various restaurants to the orphanages.
All the restaurants and the orphanages will be allowed to open an account.All the account holder can post a comment in the comment session.Google maps will help the users to find out any restaurants or orphanages.The informations of all the users will be available in the application.
The application will greatly be helpful for the needy people and will reduce the wastage of food around the world
Latest Members
There has been noticed a plentiful joining members to give hand to help the
Latest News
The orphanages are giving thankful message for such an apprecia ting step which is very
Latest Giveaways
The recent restaurants that have given leftover foods to the nearby orphanages


|
VSSS-INF
3.0
Brief codes about Very Small Soccer Size
|
View this page on another language: Portuguese https://github.com/PEQUI-MEC/VSSS-INF/blob/master/docs/README.en.md "English"
Hi! This is the development repo of Very Small Size Soccer of Pequi Mecânico. Our team is composed by members of several courses (Eletrical Engineer, Computer Engineer, Software Engineer, Forest Engineer and Computer Science) all from Universidade Federal de Goiás - UFG - Goiânia.
Our repository is open because we understand that our greatest job is to add our research and knowledge to the academic and industrial world.
We are open to answer any questions and suggestions through our email conta. More informations could be acquired from our to@p equim ecan ico.c omSITE.
To start using our software in the first place is necessary that you have installed some Linux distro, rather a Debian-like. If you have, just run our run.sh. It will run a dependency verification script if its necessary and install all missing dependencies.
Otherwise, if you want to manually install, see the list of them above:
Our system have CMakeLists.txt. This will build the executabe. Our script build.sh automatically solves the building.
If you want to build manually, inside project folder create another folder and name it build, go inside, open terminal and execute
>cmake ..
Then
>make
A executable named P137 will rise on the root project folder. Just run it.
Our Wiki may be more delightfully informations for your better understanding of how we work and how you could contribute to us.
Our activities and events always have updates. Follow us and get updated :D


Welcome to Salmon Cookies page !
About US
Gift Cards
Contact Us
sales link :
Salmon Sales
Locations
seattle
locatin
sokyo
locatin
subai
locatin
paris
locatin
lima
locatin


Exapnder Example
Default Header
Javascript
Nginx & Lua
Flutter & Dart
Customized Header
Click here has no effect
Javascript
Nginx & Lua
Flutter & Dart


Congratulations on reaching the final project of the Robotics Nanodegree!
Previously, you worked on the Semantic Segmentation lab where you built a deep learning network that locates a particular human target within an image. For this project, you will utilize what you implemented and learned from that lab and extend it to train a deep learning model that will allow a simulated quadcopter to follow around the person that it detects!
Most of the code below is similar to the lab with some minor modifications. You can start with your existing solution, and modify and improve upon it to train the best possible model for this task.
You can click on any of the following to quickly jump to that part of this notebook:
We have provided you with a starting dataset for this project. Download instructions can be found in the README for this project's repo. Alternatively, you can collect additional data of your own to improve your model. Check out the "Collecting Data" section in the Project Lesson in the Classroom for more details!
import os
import glob
import sys
import tensorflow as tf
from scipy import misc
import numpy as np
from tensorflow.contrib.keras.python import keras
from tensorflow.contrib.keras.python.keras.applications.resnet50 import identity_block
from tensorflow.contrib.keras.python.keras import layers, models
from tensorflow import image
from utils import scoring_utils
from utils.separable_conv2d import SeparableConv2DKeras, BilinearUpSampling2D
from utils import data_iterator
from utils import plotting_tools
from utils import model_tools
In the Classroom, we discussed the different layers that constitute a fully convolutional network (FCN). The following code will introduce you to the functions that you need to build your semantic segmentation model.
The Encoder for your FCN will essentially require separable convolution layers, due to their advantages as explained in the classroom. The 1x1 convolution layer in the FCN, however, is a regular convolution. Implementations for both are provided below for your use. Each includes batch normalization with the ReLU activation function applied to the layers.
def separable_conv2d_batchnorm(input_layer, filters, strides=1):
output_layer = SeparableConv2DKeras(filters=filters,kernel_size=3, strides=strides,
padding='same', activation='relu')(input_layer)
output_layer = layers.BatchNormalization()(output_layer)
return output_layer
def conv2d_batchnorm(input_layer, filters, kernel_size=3, strides=1):
output_layer = layers.Conv2D(filters=filters, kernel_size=kernel_size, strides=strides,
padding='same', activation='relu')(input_layer)
output_layer = layers.BatchNormalization()(output_layer)
return output_layer
The following helper function implements the bilinear upsampling layer. Upsampling by a factor of 2 is generally recommended, but you can try out different factors as well. Upsampling is used in the decoder block of the FCN.
def bilinear_upsample(input_layer):
output_layer = BilinearUpSampling2D((2,2))(input_layer)
return output_layer
In the following cells, you will build an FCN to train a model to detect and locate the hero target within an image. The steps are:
encoder_block
decoder_block
Create an encoder block that includes a separable convolution layer using the separable_conv2d_batchnorm()
function. The filters
parameter defines the size or depth of the output layer. For example, 32 or 64.
def encoder_block(input_layer, filters, strides):
# TODO Create a separable convolution layer using the separable_conv2d_batchnorm() function.
output_layer1 = separable_conv2d_batchnorm(input_layer, filters, strides=1)
shape1 = output_layer1.get_shape().as_list()
output_layer2 = identity_block(output_layer1, 3, shape1[1:], stage=1, block='b')
output_layer2 = separable_conv2d_batchnorm(output_layer1, filters, strides=1)
shape2 = output_layer2.get_shape().as_list()
output_layer = identity_block(output_layer2, 3, shape2[1:], stage=2, block='b')
output_layer = separable_conv2d_batchnorm(output_layer2, filters, strides)
return output_layer
def encoder_block_single(input_layer, filters, strides):
# TODO Create a separable convolution layer using the separable_conv2d_batchnorm() function.
output_layer = separable_conv2d_batchnorm(input_layer, filters, strides)
return output_layer
The decoder block is comprised of three parts:
def decoder_block(small_ip_layer, large_ip_layer, filters):
# TODO Upsample the small input layer using the bilinear_upsample() function.
upsampled_layer = bilinear_upsample(small_ip_layer)
# TODO Concatenate the upsampled and large input layers using layers.concatenate
large_op_layer = layers.concatenate([upsampled_layer, large_ip_layer])
# TODO Add some number of separable convolution layers
output_layer = separable_conv2d_batchnorm(large_op_layer, filters)
return output_layer
Now that you have the encoder and decoder blocks ready, go ahead and build your FCN architecture!
There are three steps:
def fcn_model(inputs, num_classes):
# TODO Add Encoder Blocks.
# Remember that with each encoder layer, the depth of your model (the number of filters) increases.
conv1 = encoder_block(input_layer=inputs, filters=64, strides=2)
conv2 = encoder_block(input_layer=conv1, filters=128, strides=2)
# TODO Add 1x1 Convolution layer using conv2d_batchnorm().
conv_norm = conv2d_batchnorm(input_layer=conv2, filters=256, kernel_size=1, strides=1)
# TODO: Add the same number of Decoder Blocks as the number of Encoder Blocks
deconv1 = decoder_block(small_ip_layer=conv_norm, large_ip_layer=conv1, filters=128)
deconv2 = decoder_block(small_ip_layer=deconv1, large_ip_layer=inputs, filters=64)
# The function returns the output layer of your model. "x" is the final layer obtained from the last decoder_block()
return layers.Conv2D(num_classes, 1, activation='softmax', padding='same')(deconv2)
The following cells will use the FCN you created and define an ouput layer based on the size of the processed image and the number of classes recognized. You will define the hyperparameters to compile and train your model.
Please Note: For this project, the helper code in data_iterator.py
will resize the copter images to 160x160x3 to speed up training.
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
image_hw = 160
image_shape = (image_hw, image_hw, 3)
inputs = layers.Input(image_shape)
num_classes = 3
# Call fcn_model()
output_layer = fcn_model(inputs, num_classes)
Define and tune your hyperparameters.
learning_rate = 0.001
batch_size = 64
num_epochs = 15
steps_per_epoch = 200
validation_steps = 50
workers = 8
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
# Define the Keras model and compile it for training
model = models.Model(inputs=inputs, outputs=output_layer)
model.compile(optimizer=keras.optimizers.Adam(learning_rate), loss='categorical_crossentropy')
# Data iterators for loading the training and validation data
train_iter = data_iterator.BatchIteratorSimple(batch_size=batch_size,
data_folder=os.path.join('..', 'data', 'train'),
image_shape=image_shape,
shift_aug=True)
val_iter = data_iterator.BatchIteratorSimple(batch_size=batch_size,
data_folder=os.path.join('..', 'data', 'validation'),
image_shape=image_shape)
logger_cb = plotting_tools.LoggerPlotter()
callbacks = [logger_cb]
model.fit_generator(train_iter,
steps_per_epoch = steps_per_epoch, # the number of batches per epoch,
epochs = num_epochs, # the number of epochs to train for,
validation_data = val_iter, # validation iterator
validation_steps = validation_steps, # the number of batches to validate on
callbacks=callbacks,
workers = workers)
# Save your trained model weights
weight_file_name = 'model_weights'
model_tools.save_network(model, weight_file_name)
Now that you have your model trained and saved, you can make predictions on your validation dataset. These predictions can be compared to the mask images, which are the ground truth labels, to evaluate how well your model is doing under different conditions.
There are three different predictions available from the helper code provided:
# If you need to load a model which you previously trained you can uncomment the codeline that calls the function below.
weight_file_name = 'model_weights'
restored_model = model_tools.load_network(weight_file_name)
The following cell will write predictions to files and return paths to the appropriate directories.
The run_num
parameter is used to define or group all the data for a particular model run. You can change it for different runs. For example, 'run_1', 'run_2' etc.
run_num = 'run_new_3'
val_with_targ, pred_with_targ = model_tools.write_predictions_grade_set(model,
run_num,'patrol_with_targ', 'sample_evaluation_data')
val_no_targ, pred_no_targ = model_tools.write_predictions_grade_set(model,
run_num,'patrol_non_targ', 'sample_evaluation_data')
val_following, pred_following = model_tools.write_predictions_grade_set(model,
run_num,'following_images', 'sample_evaluation_data')
Now lets look at your predictions, and compare them to the ground truth labels and original images. Run each of the following cells to visualize some sample images from the predictions in the validation set.
# images while following the target
im_files = plotting_tools.get_im_file_sample('sample_evaluation_data','following_images', run_num)
for i in range(3):
im_tuple = plotting_tools.load_images(im_files[i])
plotting_tools.show_images(im_tuple)
# images while at patrol without target
im_files = plotting_tools.get_im_file_sample('sample_evaluation_data','patrol_non_targ', run_num)
for i in range(3):
im_tuple = plotting_tools.load_images(im_files[i])
plotting_tools.show_images(im_tuple)
# images while at patrol with target
im_files = plotting_tools.get_im_file_sample('sample_evaluation_data','patrol_with_targ', run_num)
for i in range(3):
im_tuple = plotting_tools.load_images(im_files[i])
plotting_tools.show_images(im_tuple)
Evaluate your model! The following cells include several different scores to help you evaluate your model under the different conditions discussed during the Prediction step.
# Scores for while the quad is following behind the target.
true_pos1, false_pos1, false_neg1, iou1 = scoring_utils.score_run_iou(val_following, pred_following)
# Scores for images while the quad is on patrol and the target is not visable
true_pos2, false_pos2, false_neg2, iou2 = scoring_utils.score_run_iou(val_no_targ, pred_no_targ)
# This score measures how well the neural network can detect the target from far away
true_pos3, false_pos3, false_neg3, iou3 = scoring_utils.score_run_iou(val_with_targ, pred_with_targ)
# Sum all the true positives, etc from the three datasets to get a weight for the score
true_pos = true_pos1 + true_pos2 + true_pos3
false_pos = false_pos1 + false_pos2 + false_pos3
false_neg = false_neg1 + false_neg2 + false_neg3
weight = true_pos/(true_pos+false_neg+false_pos)
print(weight)
# The IoU for the dataset that never includes the hero is excluded from grading
final_IoU = (iou1 + iou3)/2
print(final_IoU)
# And the final grade score is
final_score = final_IoU * weight
print(final_score)


NBA TRADE MACHINE
TRADE
EAST TEAMS
Atlantic
Toronto Raptors
Philadelphia 76ers
Boston Celtics
Brooklyn Nets
New York Knicks
Central
Milwaukee Bucks
Indiana Pacers
Detroit Pistons
Chicago Bulls
Cleveland Cavaliers
Southeast
Orlando Magic
Charlotte Hornets
Miami Heat
Washington Wizards
Atlanta Hawks
WEST TEAMS
Northwest
Denver Nuggets
Oklahoma City Thunder
Portland Trail Blazers
Utah Jazz
Minnesota Timberwolves
Pacific
Golden State Warriors
Los Angeles Clippers
Los Angeles Lakers
Sacramento Kings
Phoenix Suns
Southwest
Houston Rockets
San Antonio Spurs
Memphis Grizzlies
Dallas Mavericks
New Orleans Pelicans


SMART is an open source application designed to help data scientists and research teams efficiently build labeled training datasets for supervised machine learning tasks.
"Work Smarter, Not Harder."
Label observations more likely to improve model performance.
Get your team on the same page and ensure quality labels.
Manage the labeling process and monitor coder progress.
Allow parallel annotation efforts within a project.
Keep sensitive data secure within your organization’s firewall.
Made available under the permissive MIT License.


{{ item.name }}
GET
PUT
DELETE
POST
{{ item.method || 'POST'}}
with
{{ item.dispatcher }}
dispatcher


48
1 Yahweh says, "You descendants of Jacob,
who are also descendants of Judah and are now called the people of Israel,
listen to me!

And then suddenly, I caused those things to happen.
4 I knew that you people were very stubborn;
I knew that your heads were as hard as iron or brass.
5 That is why I told you those things long ago.
Long before they occurred, I announced that they would occur,
in order that when they happened you could not say
'Our idols did it;
our statue made of wood or our idol made of metal caused them to happen.'
6 You have heard those things that I predicted,
and now you have seen that they have all occurred,
so why do you not admit it?
Now I will tell you new things,
things that you have not known previously.
7 I am causing them to happen now;
they are not things I did long ago.
So you cannot say, 'We already knew about those things.'
8 I will tell you about things that you have never heard about or understood before.
Even long ago you did not pay attention to me.

Instead, I have caused you to suffer very much to get rid of your impure behavior,
11 But for my own sake I will delay punishing you more;
I will delay for my own sake,
in order that my reputation will not be damaged.
I will not allow any person or any idol to be honored as I deserve to be honored."
12 "You descendants of Jacob, you people of Israel whom I have chosen,
listen to me!

I stretched out the sky with my hand.
And when I tell the stars to appear,
they all do what I tell them.
14 All of you, gather together and listen to me.
None of your idols has told this to you:
I, Yahweh, have chosen Cyrus to assist me,
and he will do to Babylon what I want him to do,
and his army will destroy the army of Babylonia.
15 I have said it;
I have summoned Cyrus.
I have appointed him,
and he will accomplish everything that he attempts to do.
16 Come close to me and listen to what I say.
Long ago I told you plainly what would happen,
and when those things occurred, I was causing them to happen."
And now Yahweh the Lord and his Spirit have sent me, the prophet Isaiah, to give you a message.
17 This is what Yahweh, the one who saves you, the Holy God of us Israelites, says:
"I am Yahweh, your God;
I teach you what is important for you to prosper;
I direct you and lead you to do the things that you should do.
18 I wish that you had paid attention to my commands!
If you had done that, things would have gone well for you
like a river that flows gently;
you would have been successful again and again,
like waves that come without ceasing.
19 Your descendants would have been as many as the grains of sand on the seashore
which no one can count.
I would not have needed to destroy them;
the country of Israel would not have been destroyed.
20 However, now I tell you,
leave Babylon!
Flee from being slaves of the people of Babylonia!
Proclaim this message joyfully;
send it to the most remote places on the earth:
'Yahweh freed the people of Israel from being slaves in Egypt.'
21 They were not thirsty when he led them through the desert,
because he split open the rock
and caused water to gush out for them to drink.'
22 But things will not go well like that for wicked people," says Yahweh.


From a graph object of class
dgr_graph
or a node data frame, set node
attribute properties for nodes present in a node
selection.
Selections of nodes can be performed using
the following select_...
functions:
select_nodes()
,
select_last_nodes_created()
,
select_nodes_by_degree()
,
select_nodes_by_id()
, or
select_nodes_in_neighborhood()
.
Selections of nodes can also be performed using
the following traversal functions:
(trav_...
):
trav_out()
, trav_in()
,
trav_both()
, trav_in_node()
,
trav_out_node()
.
set_node_attrs_ws(graph, node_attr, value)
| graph | a graph object of class
|
|---|---|
| node_attr | the name of the attribute to set. |
| value | the value to be set for the chosen attribute for the nodes in the current selection. |
a graph object of class dgr_graph
.
# Create a simple graph graph <- create_graph() %>% add_path(n = 6) # Select specific nodes from the graph and # apply the node attribute `color = blue` to # those selected nodes graph <- graph %>% select_nodes_by_id( nodes = 1:4) %>% trav_out() %>% set_node_attrs_ws( node_attr = color, value = "blue") # Show the internal node data frame to verify # that the node attribute has been set for # specific node graph %>% get_node_df()#> id type label color #> 1 1 <NA> 1 <NA> #> 2 2 <NA> 2 blue #> 3 3 <NA> 3 blue #> 4 4 <NA> 4 blue #> 5 5 <NA> 5 blue #> 6 6 <NA> 6 <NA>


Welcome to the LJMU Cyber Security Society web page! Here you'll find contact information, society files and many learning resources!
Room 612 - Byrom street. Every Wednesday. 1pm-3pm.


|
EECS 448 Project 4
Egyptian Rat Slap final version EECS448
|
Public Member Functions | |
| void | startGame () |
| void | playCard (List< string > deck) |
| void | resetBoard () |
| void | updatePile () |
| bool | isValidSlap () |
| void | slap (List< string > deck) |
Static Public Member Functions | |
| static List< string > | GenerateDeck () |
Static Public Attributes | |
| static string[] | suits = new string[] {"C", "D", "H", "S"} |
| static string[] | values = new string[] {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"} |
|
inlinestatic |
create list.
use nested loop to populate newDeck with all 52 cards in format suit and value, ex. "S2".
|
inline |
Double on top of pile detected.
Sandwich on top of pile detected.
|
inline |
Stops card play until reaction time is up.
Only allow slap on correct turn.
Play card onto the pile.
Initiate countdown on face card play.
If countdown and a non face card is played, decrement countdown variable.
If no countdown is active or triggered, just flip turn.
|
inline |
Clear all cards from decks and pile.
Reshuffle deck and redistribute cards between decks.
Reset variables for new game.
|
inline |
Stop slap if reaction timer is still active.
If pile is slappable, then give cards, update pile, and display slap win marker.
Reset AI slap timer.
|
inline |
Generate a deck for play.
Shuffle cards.
Divide the deck between AI and Player.
|
inline |
Delete all card objects.
Create objects for all cards in pile, only showing last 40 cards.


{% extends 'base.html' %} {% block title %}Sample Microarray Data{% endblock title %} {% block content %}
For more than one keyword, please separate with a space or a new line
Example(probe id):1007_s_at 1053_at
Suggestion:if you want to search all cell lines in Step3, instead of searching your keywords at once, separate the query into several times will be quicker.
First choose the dataset, then select the primary site you want for each dataset.
Please select dataset(s):
Please select the primary site or primary histology you want.
Additional filter:(default is "All Selected")


In this tutrial, I explain the simple way to try "Watchdog".
What you need is 2 Linux boxes in which pgpool-II is installed and a PostgreSQL in the same machine or in the other one. it is enough that 1 node for backend exists.
You can use on memory query cache with pgpool in any mode: replication mode, master/slave mode and raw mode.
I use "osspc16" as an Active node and "osspc20" as a Standby node. "Someserver" means one of them.
Set the parameters in both of active and standby nodes.
First of all, set the flag to enable watchdog "use_watchdog" on.
use_watchdog = on # Activates watchdog
Specify up stream servers (e.g. application servers). To be blank is OK.
trusted_servers = '' # trusted server list which are used # to confirm network connection # (hostA,hostB,hostC,...)
Specify the port of watchdog.
wd_port = 9000 # port number for watchdog service
Specify the IP address for virtual IP address in "delegate_IP" which must not not be used by someone else.
delegate_IP = '<IP_ADDRESS>' # delegate IP address
Next, set parameters for each pgpool.
Specify "other_pgpool_hostname0", "other_pgpool_port0" and "other_wd_port0" where pgpool and watchdog to monitor.
[*] Other_pgpool_hostname0 must be the value returned by hostname command.
other_pgpool_hostname0 = 'osspc20' # Host name or IP address to connect to for other pgpool 0 other_pgpool_port0 = 9999 # Port number for othet pgpool 0 other_wd_port0 = 9000 # Port number for othet watchdog 0
other_pgpool_hostname0 = 'osspc16' # Host name or IP address to connect to for other pgpool 0 other_pgpool_port0 = 9999 # Port number for othet pgpool 0 other_wd_port0 = 9000 # Port number for othet watchdog 0
Start pgpool in each servers as root with "-n" (which means not-daemon mode) and redirect log messages into pgpool.log.
Start pgpool in an Active server.
[user@osspc16]$ su - [root@osspc16]# {installed_dir}/bin/pgpool -n -f {installed_dir}/etc/pgpool.conf > pgpool.log 2>&1
Log messages show that pgpool has the virtual IP address and starts watchdog process.
ERROR: wd_create_send_socket: connect() is failed(Connection refused) LOG: wd_escalation: eslcalated to master pgpool ERROR: wd_create_send_socket: connect() is failed(Connection refused) LOG: wd_escalation: escaleted to delegate_IP holder LOG: wd_init: start watchdog LOG: pgpool-II successfully started. version 3.2beta1 (namameboshi)
Start pgpool in Standby server.
[user@osspc20]$ su - [root@osspc20]# {installed_dir}/bin/pgpool -n -f {installed_dir}/etc/pgpool.conf > pgpool.log 2>&1
When the all watchdog listed in other_pgpool_hostname get started, lifecheck starts. In this case osspc16 is the only other watchdog besides myself, lifecheck has started now.
LOG: wd_init: start watchdog LOG: pgpool-II successfully started. version 3.2beta1 (namameboshi) LOG: watchdog: lifecheck started
And in an Active, lifecheck has started.
LOG: watchdog: lifecheck started
Confirm to ping to the virtual IP address.
[user@someserver]$ ping <IP_ADDRESS> PING <IP_ADDRESS> (<IP_ADDRESS>) 56(84) bytes of data. 64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=64 time=0.328 ms 64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=64 time=0.264 ms 64 bytes from <IP_ADDRESS>: icmp_seq=3 ttl=64 time=0.412 ms
Confirm if the Active server which started at first has the virtual IP address.
[root@osspc16]# ifconfig eth0 ... eth0:0 inet addr:<IP_ADDRESS> ... lo ...
Confirm if the Standby server which started not at first doesn't have the virtual IP address.
[root@osspc20]# ifconfig eth0 ... lo ...
Try to connect PostgreSQL by "psql -h delegate_IP -p port".
[user@someserver]$ psql -h <IP_ADDRESS> -p 9999 -l
Confirm how the Standby server works when the Active server can't provide its service.
Stop pgpool in the Active server.
[root@osspc16]# {installed_dir}/bin/pgpool stop
Then, the Standby server starts to use the virtual IP address. Log shows:
LOG: wd_escalation: eslcalated to master pgpool ERROR: wd_create_send_socket: connect() is failed(Connection refused) LOG: wd_escalation: escaleted to delegate_IP holder
Confirm to ping to the virtual IP address.
[user@someserver]$ ping <IP_ADDRESS> PING <IP_ADDRESS> (<IP_ADDRESS>) 56(84) bytes of data. 64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=64 time=0.328 ms 64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=64 time=0.264 ms 64 bytes from <IP_ADDRESS>: icmp_seq=3 ttl=64 time=0.412 ms
Confirm that the Active server doesn't use the virtual IP address any more.
[root@osspc16]# ifconfig eth0 ... lo ...
Confirm that the Standby server uses the virtual IP address.
[root@osspc20]# ifconfig eth0 ... eth0:0 inet addr:<IP_ADDRESS> ... lo ...
Try to connect PostgreSQL by "psql -h delegate_IP -p port".
[user@someserver]$ psql -h <IP_ADDRESS> -p 9999 -l
There are the parameters about watchdog's monitoring.
Specify the interval to check "wd_interval", the count to retry "wd_life_point", the qyery to check "wd_lifecheck_query".
wd_interval = 10 # lifecheck interval (sec) > 0 wd_life_point = 3 # lifecheck retry times wd_lifecheck_query = 'SELECT 1' # lifecheck query to pgpool from watchdog
There are the parameters for switching the virtual IP address.
Specify switching commands "if_up_cmd", "if_down_cmd", the path to them "ifconfig_path", the command executed after switching to send ARP request"arping_cmd" and the path to it "arping_path".
ifconfig_path = '/sbin' # ifconfig command path if_up_cmd = 'ifconfig eth0:0 inet $_IP_$ netmask <IP_ADDRESS>' # startup delegate IP command if_down_cmd = 'ifconfig eth0:0 down' # shutdown delegate IP command arping_path = '/usr/sbin' # arping command path arping_cmd = 'arping -U $_IP_$ -w 1'


CT man charged with murder after father found fatally stabbed
by APEAST WINDSOR, Connecticut -- A 40-year-old Connecticut man has been charged in the death of his father.
The Hartford Courant reports that Gabriel Hesse, of East Windsor, was arrested at his Main Street home Friday evening and charged with murder. He is being held on $2 million bond. It was not immediately clear if he has obtained an attorney.
Hesse is accused of killing his 73-year-old father, Halsey Hesse, who was found dead Oct. 9 in the kitchen of his East Windsor home. A family member discovered his body after failing to reach him by phone for several days.
Police said he had been stabbed multiple times. His death was ruled a homicide.
Gabriel Hesse is scheduled to be arraigned Monday in Enfield Superior Court.


Home
About Me
My Skills
Contact Me
MUDHAFAR ALRAWI
WEB DEVELOPER
Download My CV
About Me
Education
Experience
HTML
CSS
JavaScript
jQuery
English
Advanced-Level
German
Entry-Level
Address:
Wollenberger Str. 1, 13053 Berlin
Email:
<EMAIL_ADDRESS>Mob:
015 777 13 96 23


This site is a working example of using NodeJS with YUI 3 & ExpressJS.
The full source code for this example is available on my GitHub account
The purpose of this site, is to show the power of a live DOM on the server. Each of the links to the left show a different use of Javascript on the server.