معرفی شرکت ها


Dosepy-0.3.7


Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر

توضیحات

Gamma analysis and film dosimetry for dose distributions in radiotherapy
ویژگی مقدار
سیستم عامل -
نام فایل Dosepy-0.3.7
نام Dosepy
نسخه کتابخانه 0.3.7
نگهدارنده []
ایمیل نگهدارنده []
نویسنده -
ایمیل نویسنده Luis Alfonso Olivares Jimenez <alfonso.cucei.udg@gmail.com>
آدرس صفحه اصلی -
آدرس اینترنتی https://pypi.org/project/Dosepy/
مجوز -
# *Dosepy* *Dosepy* es un paquete de código escrito en Python para la comparación mediante índice gamma de dos distribuciones de dosis, 2-dimensional. Adicionalmente, se cuenta con una herramienta para realizar dosimetría con película radiocrómica.<br/> El formato de los archivos que contengan la distribución de dosis puede ser DICOM (.dmc) o CVS. Para la película se requiere un formato TIFF.<br/> > **Condiciones de uso.** Toda persona tiene acceso a la lectura y uso del código con fines académicos o de enseñanza. Sin embargo, para el uso clínico del programa se requiere contar con una licencia (disponible próximamente), conocida como “Acuerdo de licencia de usuario final” (EULA, por sus siglas en inglés), así como contratos que garanticen el cumplimiento de la legislación de cada país.<br/> Para mayor información contactar al correo electrónico dosepy@gmail.com. Derechos Reservados (c) Luis Alfonso Olivares Jimenez 2021 ## Métodos de comparación ### Comparación por índice gamma La comparación de dos distribuciones puede realizarse mediante la prueba del índice gamma 2-dimensional de acuerdo a la definición dada por [Low D. A.](https://doi.org/10.1118/1.598248) así como algunas recomendaciones del [TG-218]( https://doi.org/10.1002/mp.12810) de la AAPM: * El criterio de aceptación para la diferencia en dosis puede ser seleccionado en modo absoluto (en Gy) o en modo relativo (en %). * En modo relativo, el porcentaje puede interpretarse con respecto al máximo de la distribución de dosis a evaluar (normalización global), o con respecto a la dosis local en la distribución de referencia (normalización local); según la selección del usuario. * El umbral de dosis puede ser ajustado por el usuario. * La distribución de referencia puede ser seleccionada por el usuario. * Se permite definir un radio de búsqueda como proceso de optimización para el cálculo. * Es posible utilizar el percentil 99.1 de la distribución de dosis como una aproximación del valor máximo. Esto permite evitar la posible inclusión de artefactos o errores en posiciones puntuales de la distribución (de utilidad por ejemplo cuando se utiliza película radiocrómica). * No se realiza interpolación entre puntos. **Proceso de una primera validación del algoritmo gamma**<br/> [Resumen](https://github.com/LuisOlivaresJ/Dosepy/blob/2bf579e6c33c347ef8f0cdd6f4ee7534798f0d13/docs/assets/validation.pdf)<br/> La validación del algoritmo para la prueba del índice gamma se realizó mediante la comparación de resultados contra los softwares DoseLab 4.11 y VeriSoft 7.1.0.199. Dicho trabajo se presentó en el 7mo Congreso de la Federación Mexicana de Organizaiones de Física Médica en el año 2021 [(Video)](https://youtu.be/HM4qkYGzNFc). **¡Consideraciones!** * Ambas distribuciones deben tener las mismas dimensiones físicas y resolución espacial (mismo número de filas y columnas). * Las distribuciones deben de encontrarse registradas, es decir, la coordenada espacial de un punto en la distribución de referencia debe ser igual a la coordenada del mismo punto en la distribución a evaluar.<br/> En caso contrario, *Dosepy* dispone de algunas funciones para cumplir con lo anterior. ## Instalación **En Linux**<br/> El método más sencillo para instalar Dosepy es escribiendo en una terminal: ```bash pip install Dosepy ``` **En Windows**<br/> Previo a la instalación de Dosepy, es necesario contar con un administrador de paquetes. Para quienes no estén familiarizados con los paquetes Python, se recomienda utilizar la plataforma [ANACONDA](https://www.anaconda.com/products/individual). Una vez que se ha instalado ANACONDA, abrir el inicio de Windows y buscar *Anaconda Prompt*. Dentro de la terminal (ventana con fondo negro), seguir la indicación descrita para Linux (párrafo anterior). ### Versión Beta Dosepy se encuentra en una versión beta, especificada por el formato 0.X.X. Lo anterior implica que en la práctica, un código que utiliza el paquete Dosepy en una versión, pudiera no ser ejecutado en una versión posterior. La versión estable será publicada con el formato 1.X.X.<br/> Para mantener actualizado el paquete Dosepy, utilizar [pip](https://pip.pypa.io/en/stable/): ```bash pip install --upgrade Dosepy ``` ### Ejemplos **Ejemplo con interfaz gráfica** Para utilizar *Dosepy* con una interfaz gráfica , abrimos una terminal (o Anaconda Prompt en el caso de Windows) y escribimos el comando **python**: ```bash python ``` Posteriormente, escribimos: ```python import Dosepy.GUI ``` **Uso de un Notebook** Para aprender a utilizar todas las herramientas de *Dosepy* se recomienda el uso de un Notebook del entorno [Jupyter](https://jupyter.org/). [*Aquí*](Notebook.md) puedes consultar una guía para ello. ### Importación de archivo en formato csv La importación de la distribución de referencia puede realizarse sólo si el archivos se encuentra en formato .csv (valores separados por comas). Adicionalmente: * El archivo deberá contener sólo los valores de dosis. * Toda información adicional deberá estar precedida con el carácter "#". Ello indicará que todos los caracteres que se encuentren en la misma linea después de "#" debe de ser ignorados por Dosepy. * La unidad para la dosis deberá ser el Gray (Gy). ### Importación de archivo en formato dcm La distribución a evaluar puede importarse en un archivo con formato .csv o en formato .dcm (archivo DICOM). Si el formato es DICOM: * Deberá contener sólo un plano de dosis. * La resolución espacial debe ser igual en cada dimensión. * La unidad para la dosis deberá ser el Gray (Gy). ## Ejemplo utilizando una terminal En *Dosepy*, una distribución de dosis es representada como un objeto de la [clase](https://docs.python.org/es/3/tutorial/classes.html) **Dose** del paquete *Dosepy*. Para crear el objeto son necesarios dos argumentos: las dosis de la distribución en formato [ndarray](https://numpy.org/doc/stable/reference/index.html#module-numpy) y la resolución espacial dada por la distancia (en milímetros) entre dos puntos consecutivos. Para utilizar *Dosepy*, abrimos una terminal (o Anaconda Prompt en el caso de Windows) y escribimos el comando python: ```bash python ``` Dentro de Python, escribimos el siguiente código de prueba: ```python import numpy as np import Dosepy.dose as dp a = np.zeros((10,10)) + 96 # Matrices de prueba b = np.zeros((10,10)) + 100 D_ref = dp.Dose(a, 1) # Se crea la distribución de referencia D_eval = dp.Dose(b, 1) # Se crea la distribución a evaluar ``` La comparación gamma entre dos distribuciones de dosis se realiza mediante el método *gamma2D*. Como argumentos se requiere: * La distribución de dosis de referencia * El porcentaje para la diferencia en dosis de tolerancia * La distancia de tolerancia o criterio DTA en mm. ```python # Llamamos al método gamma2D, con criterio 3 %, 1 mm. gamma_distribution, pass_rate = D_eval.gamma2D(D_ref, dose_t = 3, dist_t = 1) print(pass_rate) ``` ## Datos en formato CSV, usando un umbral de dosis Es posible cargar archivos de datos en fromato CSV (comma separate values) mediante la función *from_csv* del paquete Dosepy. Para descartar filas dentro del archivo, utilizar el caracter # al inicio de cada fila (inicio de un comentario). ```python import Dosepy.dose as dp import matplotlib.pyplot as plt # Cargamos los archivos "D_TPS.csv" y "D_FILM.csv", ambos con 1.0 milímetro de espacio entre un punto y otro. # (Los archivos de ejemplo .csv se encuentran dentro del paquete Dosepy, en la carpeta src/Dosepy/data/) D_eval = dp.from_csv("D_TPS.csv", PixelSpacing = 1) D_ref = dp.from_csv("D_FILM.csv", PixelSpacing = 1) # Llamamos al método gamma2D, con criterio 3 %, 2 mm, descartando puntos con dosis por debajo del 10 %. g, pass_rate = D_eval.gamma2D(D_ref, dose_t = 3, dist_t = 2, dose_tresh = 10) # Imprimimos el resultado print(f'El índice de aprobación es: {pass_rate:.1f} %') plt.imshow(g, vmax = 1.4) plt.show() #El índice de aprobación es: 98.9 % ``` ## Datos en formato DICOM y modo de dosis absoluto Importación de un archivo de dosis en formato DICOM *Consideraciones* * La distribución de dosis en el archivo DICOM debe contener solo dos dimensiones (2D). * El espacio entre dos puntos (pixeles) debe de ser igual en ambas dimensiones. * No se hace uso de las coordenadas dadas en el archivo DICOM. Ver primera consideración en el apartado Gamma index. ```python import Dosepy.dose as dp # Cargamos los archivos "RD_file.dcm" y "D_FILM_2mm.csv", ambos con 2 milímetro de espacio entre un punto y otro. D_eval = dp.from_dicom("RD_file.dcm") D_ref = dp.from_csv("D_FILM_2mm.csv", PixelSpacing = 2) # Llamamos al método gamma2D, con criterio de 0.5 Gy para la diferencia en dosis y 3 mm para la diferencia en distancia. g, pass_rate = D_eval.gamma2D(D_ref, 0.5, 3, dose_t_Gy = True) # Imprimimos el resultado print(pass_rate) ``` # Documentación ``` Dosepy.dose.Dose(data, resolution) Clase para la representación de una distribución de dosis absorbida. Regresa un objeto Dose que contiene la distribución de dosis y la resolución espacial. Parameters: data : numpy.ndarray Arreglo o matriz de datos. Cada valor numérico representa la dosis absorbida en un punto en el espacio. resolution : float Resolución espacial dada como la distancia física (en milímetros) entre dos puntos consecutivos. Dose methods Dose.gamma2D( D_reference, dose_t = 3, dist_t = 3, dose_tresh = 10, dose_t_Gy = False, local_norm = False, mask_radius = 10, max_as_percentile = True ) Cálculo del índice gamma contra una distribución de referencia. Se obtiene una matriz que representa los índices gamma en cada posición de la distribución de dosis, así como el índice de aprobación definido como el porcentaje de valores gamma que son menor o igual a 1. Consideraciones: Se asume el registro de las distribuciones de dosis, es decir, que la coordenada espacial de un punto en la distribución de referencia es igual a la coordenada del mismo punto en la distribución a evaluar. Parámetros ---------- D_reference : Objeto Dose Distribución de dosis de referencia contra la cual se realizará la comparación. El número de filas y columnas debe de ser igual a la distribución a evaluar (self.array). Lo anterior implica que las dimesiones espaciales de las distribuciones deben de ser iguales. dose_t : float, default = 3 Tolerancia para la diferencia en dosis. Este valor puede interpretarse de 3 formas diferentes según los parámetros dose_t_Gy, local_norm y max_as_percentil, los cuales se describen más adelante. dist_t : float, default = 3 Tolerancia para la distancia, en milímetros (criterio DTA [1]). dose_tresh : float, default = 10 Umbral de dosis, en porcentaje (0 a 100) con respecto a la dosis máxima de la distribución de referencia (o al percentil 99 si max_as_percentile = TRUE). Todo punto en la distribución de dosis con un valor menor al umbral de dosis, es excluido del análisis. dose_t_Gy : bool, default: False Si el argumento es True, entonces "dose_t" (la dosis de tolerancia) se interpreta como un valor fijo y absoluto en Gray [Gy]. Si el argumento es False (default), "dose_t" se interpreta como un porcentaje. local_norm : bool, default: False Si el argumento es True (normalización local), el porcentaje de dosis de tolerancia "dose_t" se interpreta con respecto a la dosis local en cada punto de la distribución de referencia. Si el argumento es False (normalización global), el porcentaje de dosis de tolerancia "dose_t" se interpreta con respecto al máximo de la distribución a evaluar (o al percentil 99.1 si max_as_percentile = TRUE). Notas: 1.- Los argumentos dose_t_Gy y local_norm NO deben ser seleccionados como True de forma simultánea. 2.- Si se desea utilizar directamente el máximo de la distirbución, utilizar el parámetro max_as_percentile = False (ver mas adelante) mask_radius : float, default: 10 Distancia física en milímetros que se utiliza para acotar el cálculo con posiciones que estén dentro de una vecindad dada por mask_radius. Para lo anterior, se genera un área de busqueda cuadrada o "máscara" aldrededor de cada punto o posición en la distribución de referencia. El uso de esta máscara permite reducir el tiempo de cálculo debido al siguiente proceso: Por cada punto en la distribución de referencia, el cálculo de la función Gamma se realiza solamente con aquellos puntos o posiciones de la distribución a evaluar que se encuentren a una distancia relativa menor o igual a mask_radius, es decir, con los puntos que están dentro de la vecindad dada por mask_radius. La longitud de uno de los lados de la máscara cuadrada es de 2*mask_radius + 1. Por otro lado, si se prefiere comparar con todos los puntos de la distribución a evaluar, es suficiente con ingresar una distancia mayor a las dimensiones de la distribución de dosis (por ejemplo mask_radius = 1000). max_as_percentile : bool, default: True -> Si el argumento es True, se utiliza el percentil 99 como una aproximación del valor máximo de la distribución de dosis. Lo anterior permite excluir artefactos o errores en posiciones puntuales (de utilidad por ejemplo cuando se utiliza película radiocrómica o etiquetas puntuales en la distribución). -> Si el argumento es False, se utiliza directamente el valor máximo de la distribución a evaluar. Retorno ---------- ndarray : Array, o matriz bidimensional con la distribución de índices gamma. float : Índice de aprobación. Se calcula como el porcentaje de valores gamma <= 1, sin incluir las posiciones en donde la dosis es menor al umbral de dosis. Consideraciones ---------- Es posible utilizar el percentil 99.1 de la distribución de dosis como una aproximación del valor máximo. Esto permite evitar la posible inclusión de artefactos o errores en posiciones puntuales de la distribución (de utilidad por ejemplo cuando se utiliza película radiocrómica o etiquetas puntuales en la distribución). Se asume que ambas distribuciones a evaluar representan exactamente las mismas dimensiones físicas, y las posiciones espaciales para cada punto conciden entre ellas, es decir, las imagenes de cada distribución están registradas. No se realiza interpolación entre puntos. ``` Funciones ``` Dosepy.dose.from_csv(file_name, PixelSpacing) Importación de un archivo de dosis en formato CSV (Comma separated values). Dentro del archivo .csv, utilizar el caracter # al inicio de una fila para que sea descartada (inicio de un comentario). Parameters ----------- file_name : str Nombre del archivo en formato string PixelSpacing : float Distancia entre dos puntos consecutivos, en milímetros Return -------- Dosepy.dose.Dose Objeto Dose del paquete Dosepy que representa a la distribución de dosis. Dosepy.dose.from_dicom(file_name) Importación de un archivo de dosis en formato DICOM Parameters ----------- file_name : str Nombre del archivo en formato string Return -------- Dosepy.dose.Dose Objeto Dose del paquete Dosepy que representa a la distribución de dosis Consideraciones ---------------- La distribución de dosis en el archivo DICOM debe contener solo dos dimensiones. La resolución espacial debe de ser igual en ambas dimensiones. No se utilizan las coordenadas dadas en el archivo DICOM. Ver segunda consideración en la nota del método gamma2D de la clase Dose. Dosepy.tools.resol.equalize(array, resol_array, resol_ref) """ Función que permite reducir el número de filas y columnas de una matriz (array) para igualar su resolución espacial (mm/punto) con respecto a una resolución de referencia. Para lo anterior, se calcula un promedio de varios puntos y se asigna a un nuevo punto con una mayor dimensión espacial. Parameters: ----------- array: ndarray Matriz a la que se le requiere reducir el tamaño. resol_array: float Resolución espacial de la matriz, en milímetros por punto. resol_ref: float Resolución espacial de referencia, en milímetros por punto. Return: ------- array: ndarray Matriz reducida en su número de filas y columnas. Ejemplo: -------- Sean A y B dos matrices de tamaño (2362 x 2362) y (256 x 256), con resolución espacial de 0.0847 mm/punto y 0.7812 mm/punto, respectivamente. La dimensión espacial de la matriz A es de 200.06 mm (2362 puntos * 0.0847 mm/punto = 200.06 mm) La dimensión espacial de la matriz B es de 199.99 mm. (256 puntos * 0.7812 mm/punto = 199.99 mm) Para reducir el tamaño de la matriz A e igualarla al tamaño de la matriz B, se utiliza la función equalize: import Dosepy.tools.resol as resol import numpy as np A = np.zeros( (2362, 2362) ) C = resol.equalize(A, 0.0847, 0.7812) C.shape # (256, 256) """ ``` **Presentación en eventos científicos** * (2021) 7mo Congreso de la Federación Mexicana de Organizaiones de Física Médica, "Desarrollo y validación de un software de código abierto para la comparación de distribuciones de dosis usadas en radioterapia" [(Video disponible)](https://youtu.be/HM4qkYGzNFc) # Advertencia El correcto funcionamiento del paquete se está evaluado y actualizado constantemente. Sin embargo, no se tiene garantía de que el código del paquete esté libre de errores o bugs. El usuario es el único responsable por utilizar *Dosepy*. # Licencia PROPRIETARY LICENSE Derechos Reservados (c) Luis Alfonso Olivares Jimenez 2021 03-2021-093012460400-01 CONDICIONES Toda persona tiene acceso al código solamente con fines académicos o de enseñanza. Cualquier otro uso del código DOSEPY requiere de una licencia para su uso particular, conocida como "Acuerdo de licencia de usuario final" (EULA, por sus siglas en inglés). El código o software derivado, tales como arreglos, compendios, ampliaciones, traducciones, adaptaciones, paráfrasis, compilaciones, colecciones y transformaciones del software DOSEPY, podrán ser explotadas cuando hayan sido autorizadas por el titular del derecho patrimonial sobre la obra DOSEPY, previo consentimiento del titular del derecho moral, en los casos previstos en la Fracción III del Artículo 21 de la Ley Federal del Derecho de Autor. GARANTÍA El software Dosepy se ofrece sin ninguna garantía de cualquier tipo. Su uso es responsabilidad del usuario. # Historia 01-05-2019<br/> * *Dosepy* fue escrito por primera vez como parte de un desarrollo de [tesis](https://tesiunam.dgb.unam.mx/F/8V8RPCG2P1P85AN4XJ33LCS6CRT3NEL72J8IQQYUAKMESPGRGS-06398?func=find-b&local_base=TES01&request=Luis+Alfonso+Olivares+Jimenez&find_code=WRD&adjacent=N&filter_code_2=WYR&filter_request_2=&filter_code_3=WYR&filter_request_3=) a nivel de Maestría en el año 2019, con el objetivo de comparar y evaluar distribuciones de dosis en radioterapia. Para ello se emplearon diferentes herramientas como perfiles, evaluación gamma e histogramas dosis volumen. La medición de las distribuciones de dosis se realizó con película radiocrómica EBT3. 28-06-2021 Versión 0.0.1<br/> * *Dosepy* se incorpora al índice de paquetes python [PyPi](https://pypi.org/) 01-07-2021 Versión 0.0.3<br/> * Se agregan las funciones from_csv y from_dicom para la lectura de datos. 16-07-2021 Versión 0.0.4<br/> * Se modifica el formato para el parámetro resolution. Se agregas indicaciones más detalladas para la instalación del paquete *Dosepy* 24-07-2021 Versión 0.0.8<br/> * Se agrega la posibilidad de usar una interfaz gráfica 03-08-2021 Versión 0.1.0<br/> * Se agrega una página web con instrucciones y documentación para el uso del paquete Dosepy. 12-08-2021 Versión 0.1.1<br/> * Se agrega la carpeta tools junto con la función *equalize* del modulo resol, para modificar la resolución espacial de una distribución e igualarla a una de referencia. 01-09-2021 Versión 0.2.1<br/> * Se agrega el menú "Herramientas" dentro de la interfaz gráfica para la dosimetría con película radiocrómica. 30-10-2021 Versión 0.2.2<br/> * Se agrega el menú "Ayuda" para mostrar la versión y un link para la Documentación 29-10-2021 Versión 0.2.3<br/> * Se modifica la LICENCIA por derechos de autor. Se agrega video de presentación en congreso. 27-07-2022 Versión 0.3.0<br/> * Se agrega un resumen del trabajo de validación del software. Se requiere de un password para utilizar el software. 24-10-2022 Versión 0.3.1<br/> * Se actualiza la licencia. Se facilita la instalación al agregarse automáticamente las dependencias como numpy, matplotlib, etc. Se agrega información del tamaño de las distribuciones de dosis cuando se comparan matrices con diferentes dimensiones. Al guardar una distribución de dosis, se resuelve el error de generarse el nombre del archivo con doble formato (por ejemplo file.csv.csv). Se mejora el ingreso del parámetro "Ref." para ejecutar cambio de resolución solo cuando el valor ingresado por el usuario es un número flotante. 04-11-2022 Versión 0.3.2<br/> * Se inhabilita como primera opción el botón para abrir la distribución de dosis a evaluar. Se inhabilita el botón para calcular la distribución gamma si los parámetros ingresados por el usuario no son valores numéricos. Lo anterior para evitar un error de ejecución. 14-01-2023 Versión 0.3.3-5<br/> * Se modifican los nombres de los archivos y las clases para facilitar el mantenimiento del paquete. Se agrega guía de uso con Jupyter-Notebook. 09-02-2023 Versión 0.3.6<br/> * Se modifica el algoritmo de dosimetría con película. Se agrega Notebook para dosimetría con película. En la evaluación gamma, se habilita la opción para definir la dosis máxima como el percentil 99.1 de la distribución de dosis a evaluar. Se agrega información referente al uso no clínico del software Dosepy. 11-03-2023 Versión 0.3.7<br/> * Se resuelve [error](https://github.com/LuisOlivaresJ/Dosepy/issues/32) de ejecución con archivos de prueba. Se define una vecindad de 2 cm x 2 cm para reducir el tiempo de cálculo para el índice gamma. En la [página principal](https://luisolivaresj.github.io/Dosepy/) de Dosepy, se muestra la validación para la dosimetría con película al medir los factores de campo de un haz 6FFF.


نیازمندی

مقدار نام
>=1.23.4 numpy
>=2.3.0 pydicom
>=3.6.1 matplotlib
>=2022.10.10 tifffile
>=1.9.3 scipy
>=5.15.7 PyQt5


زبان مورد نیاز

مقدار نام
>=3.7 Python


نحوه نصب


نصب پکیج whl Dosepy-0.3.7:

    pip install Dosepy-0.3.7.whl


نصب پکیج tar.gz Dosepy-0.3.7:

    pip install Dosepy-0.3.7.tar.gz