¿Cuál es el lenguaje de programación más eficiente para diseñar algoritmos médicos?

Para predecir un diagnóstico

Tiene la lista de síntomas y signos, y sus diagnósticos diferenciales en muchos libros de medicina. Esos se pueden alimentar a una base de datos de algún tipo (para que se puedan actualizar si es necesario). Todo lo que necesita es una buena interfaz de usuario que recopile datos y busque en la base de datos. Esto es similar al uso de Medline a través del motor de búsqueda PubMed. Se puede hacer con cualquier idioma. Optaría por Java o Qt / C ++, pero si conoce Python, hágalo.

Para predecir una epidemia

Mismo. Tiene datos estadísticos e informes de casos. Aplicará fórmulas estadísticas para extrapolar los datos y predecir el resultado. Lo mismo que arriba.

Sugerir un diagnóstico diferencial

Esto es mas dificil. Vea la respuesta de Mohammed Isam a ¿Qué lenguaje de programación debe aprender un médico para hacer un gran algoritmo médico que tenga grandes habilidades?

He desarrollado software médico, así que te lo daré desde el punto de vista del desarrollador:

No existe tal cosa como “un algoritmo médico”. Hacer un diagnóstico es un programa completo, tal vez más que solo uno. Solo para hacer un diagnóstico de lo que es más probable que sea causado por un virus podría tomar un programa completo. Tomó 4 años descubrir HTLV-I y HTLV-II, no curarlo, solo descubrirlo. (No había habido virus nuevos en el suministro de sangre humana durante 30 años, y los retrovirus no causan enfermedades humanas, con la posible excepción de la leucemia de células T, por lo que ningún programa escrito en 1979 habría encontrado el VIH).

Para predecir una epidemia? Aún no sabemos cómo atacar ese problema, por lo que no podemos decirle a una computadora cómo atacarlo.

¿Hacer un diagnóstico diferencial (“sugerir un diagnóstico diferente”)? Incluso algunos médicos bastante buenos realmente no pueden hacer eso, y si no puedes hacerlo, no puedes decirle a una computadora cómo hacerlo.

Un algoritmo es un pequeño paso en un programa – “hacer esto” – no son programas completos.

¿Python es eficiente para este tipo de trabajo? No. Tal vez alguna combinación de lenguaje de alto nivel y ensamblaje. ( Parte del trabajo será un acceso de hardware de muy bajo nivel que simplemente no se puede hacer con Python; incluso conducir un motor paso a paso con Python es mucho más difícil que hacerlo en ensamblaje).

Marcos? ¿Estás hablando de un programa que puede comenzar con 5 millones de líneas de código y estás buscando eliminar unos cientos de líneas con un marco? Olvídese de los marcos: haga creer que no existen. Escribe todo el programa, luego lo codifica. Tú. Y su equipo, probablemente, ya que esto es demasiado trabajo para que una persona lo complete en un tiempo razonable. (Si hay un error en el marco que hace que su programa explote, la posibilidad de que lo encuentre es entre cero y “ninguno”).

Y esos son solo algunos de los problemas más pequeños en lo que propones.

Si te sientes cómodo con Python, ve con Python.

En la situación en la que un experto en dominios recurre a la programación, en mi experiencia, lo más importante es que sienten que el lenguaje es cómodo y natural, por lo que los detalles de programación no interfieren con la estructuración del conocimiento que está tratando de poner en el proyecto. Cualquier lenguaje de alto nivel con recolección de basura, como Python, funcionará bien. Si hubieras sugerido C ++, bueno, entonces habría objetado.

Sin embargo, debe tener en cuenta que esto suena como un proyecto muy ambicioso. Es mejor que colabore con alguien con sólidas habilidades de desarrollo de software y cierta experiencia en inteligencia artificial.

También es posible que desee leer sobre algunos trabajos que se han realizado anteriormente en esta área, como Watson de IBM.

Parece que estás buscando programación lógica / programación probabilística. También parece estar firmemente en el dominio de los sistemas Expert.

Si es así, Racket es probablemente tu mejor opción. Probablemente también se pueda hacer en Python, pero Python será demasiado sintácticamente inflexible para que sea una experiencia agradable. No he probado la programación lógica en Racket, pero había una extensión de lenguaje llamada Gamble que brinda un soporte muy bueno para la programación probabilística.

PD: También existen programas como ese, por ejemplo, consulte Visual Dx

Prolog es bueno para codificar reglas. Mercurio sería otra buena opción.

More Interesting

¿Cuál se debe aprender primero, estructuras de datos o algoritmos?

Cómo encontrar la menor supercadena de 2 subcadenas

Cómo comenzar a crear un modelo / pronóstico de ventas con dos años y medio de datos de ventas anteriores

¿Cuánto tiempo / horas debo pasar todos los días para ser un buen programador de Java para poder resolver estructuras de datos y algoritmos con ese lenguaje en el futuro?

¿Cómo obtenemos ideas para resolver preguntas de programación dinámica?

¿Puedo obtener un enlace a algunas buenas preguntas de programación dinámica 3-D?

¿Es seguro decir que un algoritmo iterativo es mejor que el recursivo para el mismo problema dado que ambos son de la misma complejidad temporal?

¿Cuáles son algunos ejemplos bien conocidos donde se usa la programación dinámica?

Cómo resolver CCC2016S4

Cómo abordar el problema 'Mapa intergaláctico' (IM) en SPOJ usando Max Flow

¿Podría alguien explicar las etapas de un algoritmo recursivo que muestra cómo se alcanza la condición de terminación?

Como principiante, ¿cómo comenzar a codificar el árbol y el gráfico? ¿Cómo implementar la lógica de árbol y gráfico en problemas?

¿Por qué la complejidad temporal de los algoritmos de Edmond Karps O (VE ^ 2)? A mí me parece O (E * (E + V)).

¿Es posible resolver un problema de cambio de monedas para algunos elementos cíclicos a través de la programación dinámica si no se permite el uso de monedas adyacentes?

15 personas se sentarán en una fila de 15 sillas. ¿Cómo calculo cuántos planes de asientos se pueden hacer, donde dos planes de asientos se consideran iguales si dos planes comparten cuádruples adyacentes? o ¿Cómo puedo crear un algoritmo eficiente para encontrar límites inferiores para 15 o menos personas?