SlideShare una empresa de Scribd logo
1 de 40
MACHINE LEARNING
EN QUÍMICA:
Modelando la Relación
Estructura-Actividad con
Aprendizaje Automático
Allan Vásquez
Química Computacional
Universidad del Valle de Guatemala
“una molecula dibujada con tiza en un
pizarrón por un gato cientifico”
“Un suricato químico orgánico”
Otras opciones más “creepy”
https://www.youtube.com/watch?v=KytW151dpqU
Inteligencia Artificial
• Sub-disciplina de la informática que busca crear máquinas que
puedan imitar comportamientos inteligentes.
• Machine Learning es una
disciplina científica del
ámbito de la Inteligencia
Artificial que crea sistemas
que aprenden
automáticamente.
• Aprender en este contexto
quiere decir identificar
patrones complejos en
datos.
Creando un Árbol de Decisión
Intentemos predecir la clase (+/-) en base a los atributos de las figuras
¿Jugamos
tenis?
Algoritmo ID3 de Quinlan-Shannon
http://www.cs.us.es/~fsancho/?e=104
Segunda Iteración
Resultado del Arbol de Decisión
Tipos de algoritmos en machine learning
http://bit.ly/2GIKaVS
Algoritmos en Machine Learning
• Regresión
• Regresión lineal
• Regresión beyesiana
• Arboles de decisión y clasificación
• ID3
• Random forest
• Clustering
• K-means
• Máquinas de soporte vectorial
• Etc…
¿Y cómo se hace?
1. Selección y preparación de
conjuntos de datos de
entrenamiento y pruebas.
2. Selección del algoritmo.
3. Entrenamiento del modelo.
4. Evaluación y optimización.
5. Uso y mejora.
No es tan así…
En la computadora…
Lenguajes de programación. Paquetes
CARET
TENSOR FLOW
Modelos
disponibles
en CARET
http://topepo.github.io/caret/available-models.html
Explorando las funciones
principales
Entrenamiento de modelos
• train()
• Ejecuta el entrenamiento y configura los parámetros para los modelos
de clasificación y regresión, se ajusta a cada modelo y estima una
medida de rendimiento.
• Argumentos
• formula = (vector~.) establece el vector de resultado que se desa predecir.
• data = (dataframe) es el dataframe que usaremos para entrenar el modelo.
• method = (“character”) es el algoritmo que usaremos para crear el modelo.
• … = (variable) algunos modelos requieren que especifiquemos otros
parametros, ie: verbose, depth, shinkage…
Predicción de outcomes
• predict()
• Crea un vector con las predicciones de los resultados según el modelo. La
función invoca métodos particulares que dependen de la clase del primer
argumento.
• Argumentos
• object = (Modelo) Es el modelo ajustado para este data set, el resultado de la
función train().
• newdata = (Dataframe) Dataset con los datos que se usaran como base para
hacer la predicción.
Evaluación del modelo
• confusionMatrix()
• Crea una tabla de contingencia entre
los outcomenes observadas y
pronosticadas y despliega las
estadísticas asociadas.
• Argumentos:
• data = (vector) es el vector que
contiene las predicciones, el
resultado de la función predict().
• reference = (vector) es el vector
que ccontiene los resultados
verdaderos.
• positive = (“character”) es el
nivel que se considera como
resultado positivo de la
predicción.
Ejemplo 1 (Árbol de clasificación)
• Dataset: tennis
• Es un dataset famoso y clasico, lo usamos en el ejemplo anterior.
• Vamos importarlo desde un archivo csv.
• Las variables predictivas son categoricas.
• Usaremos el algoritmo “treebag”, que permite hacer arboles de
clasificación en base a variables categoricas.
Ejemplo (QSAR)
• Quantitative structure-activity relationship, QSAR, es el proceso por el
cual la estructura química se correlaciona cuantitativamente con un
proceso definido de actividad biológica.
• Dataset = bbb
• Para predecir si una molécula atraviesa o no la barrera hemato-
encefálica y en base a descriptores que pueden calcularse
computacionalmente.
http://gohom.win/ManualHom/Schrodinger/Schrodinger_2012_docs/general/qikprop_props.pdf
https://www.rdocumentation.org/packages/QSARdata/versions/1.3/topics/bbb2
Overfitting
• El modelo tiene una alta
capacidad para resolver el
data set de entrenamiento,
pero falla con los datos de
prueba o reales.
• Esto en muchos casos se
debe a un sobre
entrenamiento o a una
mala division del data set.
División de los Datos
• createDataPartition()
• Sirve para dividir un data set original y crear los data sets: uno de
entrenamiento y otro de prueba.
• Crea un vector numerico con kos indices que formaran parte del
nuevo data set.
• Argumentos
• p = (numérico, de 0 a 1), porcentaje de los datos que irá al data set de
entrenamiento.
• list = (booleano), el resultado debe colocarse en una lista
• y= (vector), vector de resultado, se usa para que los grupos esten distribuidos
de forma equitativa según este vector.
Ejemplo
• Dataset: spam
• A data set collected at Hewlett-Packard Labs, that classifies 4601
e-mails as spam or non-spam. In addition to this class label there are 57
variables indicating the frequency of certain words and characters in the e-
mail.
• The first 48 variables contain the frequency of the variable name (e.g.,
business) in the e-mail. If the variable name starts with num (e.g., num650)
the it indicates the frequency of the corresponding number (e.g., 650). The
variables 49-54 indicate the frequency of the characters ‘;’, ‘(’, ‘[’, ‘!’, ‘$’,
and ‘#’. The variables 55-57 contain the average, longest and total run-
length of capital letters. Variable 58 indicates the type of the mail and is
either "nonspam" or "spam".
Boosting
• “tunear modelos”, los nuevos arboles se basan en los anteriores,
toma los fallos y reduce el peso relativo de las variantes que llevaron
a esos fallos.
Ejemplo:
churn
Modelo Lineal Generalizado
Y boosting.
Trabajos realizados
Predicción del fenotipo de H. pylori en base a
su secuencia genómica. (2020, sin publicar)
• Equipo: Dr. Allan Orozco✝, Dr. Erwin Calgua, M.Sc. Cecilia Hermosilla,
M.Sc. Sofía Estrada
• Objetivo: Crear un modelo que pueda predecir el fenotipo (cancer,
ulcera, gastritis) de una cepa de H. pylori a partir de las mutaciones
que presenta en su secuencia genética.
• Pre proceso: Desequilibrio de ligamiento por medio de prueba exacta
de Fisher
• Algoritmo: Random forest
• Lenguajers y Librerías: BASH, R, BLAST, CARET, Weka.
Un data set para uno de los genes.
Un poco de código
“Desarrollo de una herramienta web para la
predicción de la actividad
biológica de estructuras moleculares empleando
machine learning”
Trabajo de graduación de Química Farmacéutica – USAC
Br. Erleigh Hogan, Br. Ángel Ramírez, Br. Galilea Wug, MSc. Nereida Marroquín
SWISSADME
Machine Learning

Más contenido relacionado

Similar a ML QSAR Congreso de Química.pptx

Aprendizaje automático I - Tema 3 Aprendizaje Automático Supervisado.pdf
Aprendizaje automático I - Tema 3 Aprendizaje Automático Supervisado.pdfAprendizaje automático I - Tema 3 Aprendizaje Automático Supervisado.pdf
Aprendizaje automático I - Tema 3 Aprendizaje Automático Supervisado.pdf
Gerard Alba
 
Presentacion mineria
Presentacion mineriaPresentacion mineria
Presentacion mineria
viktor93
 
Diseño experimental
Diseño experimentalDiseño experimental
Diseño experimental
jtjcinvestav
 
Fases de diseño del modelo de simulacion
Fases de diseño del modelo de simulacionFases de diseño del modelo de simulacion
Fases de diseño del modelo de simulacion
eliianiitta12
 
Sistemas expertos
Sistemas expertosSistemas expertos
Sistemas expertos
Nathali
 

Similar a ML QSAR Congreso de Química.pptx (20)

Aprendizaje automático I - Tema 3 Aprendizaje Automático Supervisado.pdf
Aprendizaje automático I - Tema 3 Aprendizaje Automático Supervisado.pdfAprendizaje automático I - Tema 3 Aprendizaje Automático Supervisado.pdf
Aprendizaje automático I - Tema 3 Aprendizaje Automático Supervisado.pdf
 
Presentacion mineria
Presentacion mineriaPresentacion mineria
Presentacion mineria
 
Inteligencia artificial avanzada
Inteligencia artificial avanzadaInteligencia artificial avanzada
Inteligencia artificial avanzada
 
Técnicas de Inteligencia Artificial
Técnicas de Inteligencia Artificial Técnicas de Inteligencia Artificial
Técnicas de Inteligencia Artificial
 
REDES NEURONALES.pptx
REDES NEURONALES.pptxREDES NEURONALES.pptx
REDES NEURONALES.pptx
 
Diseño experimental
Diseño experimentalDiseño experimental
Diseño experimental
 
Fases de diseño del modelo de simulacion
Fases de diseño del modelo de simulacionFases de diseño del modelo de simulacion
Fases de diseño del modelo de simulacion
 
Fases de diseño del modelo de simulación
Fases de diseño del modelo de simulación Fases de diseño del modelo de simulación
Fases de diseño del modelo de simulación
 
Machine Learning con Tensorflow y R, presentado por RStudio
Machine Learning con Tensorflow y R, presentado por RStudioMachine Learning con Tensorflow y R, presentado por RStudio
Machine Learning con Tensorflow y R, presentado por RStudio
 
TS 2do Corte I2 - Simulación y Modelado - Onassis D'aubeterre
TS 2do Corte I2 - Simulación y Modelado - Onassis D'aubeterreTS 2do Corte I2 - Simulación y Modelado - Onassis D'aubeterre
TS 2do Corte I2 - Simulación y Modelado - Onassis D'aubeterre
 
Algoritmos - Jordi Gironés Roig
Algoritmos - Jordi Gironés RoigAlgoritmos - Jordi Gironés Roig
Algoritmos - Jordi Gironés Roig
 
00
0000
00
 
simulacion-compartido.pdf
simulacion-compartido.pdfsimulacion-compartido.pdf
simulacion-compartido.pdf
 
El Libro de la Inteligencia Artificial (versión 5)
El Libro de la Inteligencia Artificial (versión 5)El Libro de la Inteligencia Artificial (versión 5)
El Libro de la Inteligencia Artificial (versión 5)
 
Sesion2 simulacion
Sesion2 simulacionSesion2 simulacion
Sesion2 simulacion
 
Parte1
Parte1Parte1
Parte1
 
algoritmos en R Studio
algoritmos en R Studioalgoritmos en R Studio
algoritmos en R Studio
 
Modelamiento predictivo en Analítica Predictiva
Modelamiento predictivo en Analítica PredictivaModelamiento predictivo en Analítica Predictiva
Modelamiento predictivo en Analítica Predictiva
 
Sistemas expertos
Sistemas expertosSistemas expertos
Sistemas expertos
 
Sistemas expertos
Sistemas expertosSistemas expertos
Sistemas expertos
 

Último

Flores Galindo, A. - La ciudad sumergida. Aristocracia y plebe en Lima, 1760-...
Flores Galindo, A. - La ciudad sumergida. Aristocracia y plebe en Lima, 1760-...Flores Galindo, A. - La ciudad sumergida. Aristocracia y plebe en Lima, 1760-...
Flores Galindo, A. - La ciudad sumergida. Aristocracia y plebe en Lima, 1760-...
frank0071
 
Terapia Cognitivo Conductual CAPITULO 2.
Terapia Cognitivo Conductual CAPITULO 2.Terapia Cognitivo Conductual CAPITULO 2.
Terapia Cognitivo Conductual CAPITULO 2.
ChiquinquirMilagroTo
 
Hobson, John A. - Estudio del imperialismo [ocr] [1902] [1981].pdf
Hobson, John A. - Estudio del imperialismo [ocr] [1902] [1981].pdfHobson, John A. - Estudio del imperialismo [ocr] [1902] [1981].pdf
Hobson, John A. - Estudio del imperialismo [ocr] [1902] [1981].pdf
frank0071
 
Althusser, Louis. - Ideología y aparatos ideológicos de Estado [ocr] [2003].pdf
Althusser, Louis. - Ideología y aparatos ideológicos de Estado [ocr] [2003].pdfAlthusser, Louis. - Ideología y aparatos ideológicos de Estado [ocr] [2003].pdf
Althusser, Louis. - Ideología y aparatos ideológicos de Estado [ocr] [2003].pdf
frank0071
 

Último (20)

Flores Galindo, A. - La ciudad sumergida. Aristocracia y plebe en Lima, 1760-...
Flores Galindo, A. - La ciudad sumergida. Aristocracia y plebe en Lima, 1760-...Flores Galindo, A. - La ciudad sumergida. Aristocracia y plebe en Lima, 1760-...
Flores Galindo, A. - La ciudad sumergida. Aristocracia y plebe en Lima, 1760-...
 
Matemáticas Aplicadas usando Python
Matemáticas Aplicadas   usando    PythonMatemáticas Aplicadas   usando    Python
Matemáticas Aplicadas usando Python
 
La Célula, unidad fundamental de la vida
La Célula, unidad fundamental de la vidaLa Célula, unidad fundamental de la vida
La Célula, unidad fundamental de la vida
 
Fresas y sistemas de pulido en odontología
Fresas y sistemas de pulido en odontologíaFresas y sistemas de pulido en odontología
Fresas y sistemas de pulido en odontología
 
medicinatradicionalescuelanacionaldesalud.pptx
medicinatradicionalescuelanacionaldesalud.pptxmedicinatradicionalescuelanacionaldesalud.pptx
medicinatradicionalescuelanacionaldesalud.pptx
 
Terapia Cognitivo Conductual CAPITULO 2.
Terapia Cognitivo Conductual CAPITULO 2.Terapia Cognitivo Conductual CAPITULO 2.
Terapia Cognitivo Conductual CAPITULO 2.
 
CUADRO SINOPTICO IV PARCIAL/ TORAX . PDF
CUADRO SINOPTICO IV PARCIAL/ TORAX . PDFCUADRO SINOPTICO IV PARCIAL/ TORAX . PDF
CUADRO SINOPTICO IV PARCIAL/ TORAX . PDF
 
Hobson, John A. - Estudio del imperialismo [ocr] [1902] [1981].pdf
Hobson, John A. - Estudio del imperialismo [ocr] [1902] [1981].pdfHobson, John A. - Estudio del imperialismo [ocr] [1902] [1981].pdf
Hobson, John A. - Estudio del imperialismo [ocr] [1902] [1981].pdf
 
SEGUNDAS VANGUARDIAS ARTÍSTICAS DEL SIGLO XX.pdf
SEGUNDAS VANGUARDIAS ARTÍSTICAS DEL SIGLO XX.pdfSEGUNDAS VANGUARDIAS ARTÍSTICAS DEL SIGLO XX.pdf
SEGUNDAS VANGUARDIAS ARTÍSTICAS DEL SIGLO XX.pdf
 
Diario experiencias Quehacer Científico y tecnológico vf.docx
Diario experiencias Quehacer Científico y tecnológico vf.docxDiario experiencias Quehacer Científico y tecnológico vf.docx
Diario experiencias Quehacer Científico y tecnológico vf.docx
 
La señal de los higos buenos y los higos malos
La señal de los higos buenos y los higos malosLa señal de los higos buenos y los higos malos
La señal de los higos buenos y los higos malos
 
Ensayo ENRICH (sesión clínica, Servicio de Neurología HUCA)
Ensayo ENRICH (sesión clínica, Servicio de Neurología HUCA)Ensayo ENRICH (sesión clínica, Servicio de Neurología HUCA)
Ensayo ENRICH (sesión clínica, Servicio de Neurología HUCA)
 
Glaeser, E. - El triunfo de las ciudades [2011].pdf
Glaeser, E. - El triunfo de las ciudades [2011].pdfGlaeser, E. - El triunfo de las ciudades [2011].pdf
Glaeser, E. - El triunfo de las ciudades [2011].pdf
 
PRUEBA CALIFICADA 4º sec biomoleculas y bioelementos .docx
PRUEBA CALIFICADA 4º sec biomoleculas y bioelementos .docxPRUEBA CALIFICADA 4º sec biomoleculas y bioelementos .docx
PRUEBA CALIFICADA 4º sec biomoleculas y bioelementos .docx
 
Perfiles NEUROPSI Atención y Memoria 6 a 85 Años (AyM).pdf
Perfiles NEUROPSI Atención y Memoria 6 a 85 Años (AyM).pdfPerfiles NEUROPSI Atención y Memoria 6 a 85 Años (AyM).pdf
Perfiles NEUROPSI Atención y Memoria 6 a 85 Años (AyM).pdf
 
Althusser, Louis. - Ideología y aparatos ideológicos de Estado [ocr] [2003].pdf
Althusser, Louis. - Ideología y aparatos ideológicos de Estado [ocr] [2003].pdfAlthusser, Louis. - Ideología y aparatos ideológicos de Estado [ocr] [2003].pdf
Althusser, Louis. - Ideología y aparatos ideológicos de Estado [ocr] [2003].pdf
 
Un repaso de los ensayos recientes de historia de la ciencia y la tecnología ...
Un repaso de los ensayos recientes de historia de la ciencia y la tecnología ...Un repaso de los ensayos recientes de historia de la ciencia y la tecnología ...
Un repaso de los ensayos recientes de historia de la ciencia y la tecnología ...
 
CASO CLÍNICO INFECCIONES Y TUMORES.pptx
CASO CLÍNICO INFECCIONES Y TUMORES.pptxCASO CLÍNICO INFECCIONES Y TUMORES.pptx
CASO CLÍNICO INFECCIONES Y TUMORES.pptx
 
Mapa Conceptual Modelos de Comunicación .pdf
Mapa Conceptual Modelos de Comunicación .pdfMapa Conceptual Modelos de Comunicación .pdf
Mapa Conceptual Modelos de Comunicación .pdf
 
2. Hormonas y Ciclo estral de los animales
2. Hormonas y Ciclo estral de los animales2. Hormonas y Ciclo estral de los animales
2. Hormonas y Ciclo estral de los animales
 

ML QSAR Congreso de Química.pptx

  • 1. MACHINE LEARNING EN QUÍMICA: Modelando la Relación Estructura-Actividad con Aprendizaje Automático Allan Vásquez Química Computacional Universidad del Valle de Guatemala
  • 2. “una molecula dibujada con tiza en un pizarrón por un gato cientifico”
  • 3. “Un suricato químico orgánico”
  • 4. Otras opciones más “creepy”
  • 6.
  • 7. Inteligencia Artificial • Sub-disciplina de la informática que busca crear máquinas que puedan imitar comportamientos inteligentes.
  • 8. • Machine Learning es una disciplina científica del ámbito de la Inteligencia Artificial que crea sistemas que aprenden automáticamente. • Aprender en este contexto quiere decir identificar patrones complejos en datos.
  • 9. Creando un Árbol de Decisión Intentemos predecir la clase (+/-) en base a los atributos de las figuras
  • 10.
  • 12. Algoritmo ID3 de Quinlan-Shannon http://www.cs.us.es/~fsancho/?e=104
  • 14. Resultado del Arbol de Decisión
  • 15. Tipos de algoritmos en machine learning http://bit.ly/2GIKaVS
  • 16. Algoritmos en Machine Learning • Regresión • Regresión lineal • Regresión beyesiana • Arboles de decisión y clasificación • ID3 • Random forest • Clustering • K-means • Máquinas de soporte vectorial • Etc…
  • 17. ¿Y cómo se hace? 1. Selección y preparación de conjuntos de datos de entrenamiento y pruebas. 2. Selección del algoritmo. 3. Entrenamiento del modelo. 4. Evaluación y optimización. 5. Uso y mejora.
  • 18. No es tan así…
  • 19. En la computadora… Lenguajes de programación. Paquetes CARET TENSOR FLOW
  • 21.
  • 23. Entrenamiento de modelos • train() • Ejecuta el entrenamiento y configura los parámetros para los modelos de clasificación y regresión, se ajusta a cada modelo y estima una medida de rendimiento. • Argumentos • formula = (vector~.) establece el vector de resultado que se desa predecir. • data = (dataframe) es el dataframe que usaremos para entrenar el modelo. • method = (“character”) es el algoritmo que usaremos para crear el modelo. • … = (variable) algunos modelos requieren que especifiquemos otros parametros, ie: verbose, depth, shinkage…
  • 24. Predicción de outcomes • predict() • Crea un vector con las predicciones de los resultados según el modelo. La función invoca métodos particulares que dependen de la clase del primer argumento. • Argumentos • object = (Modelo) Es el modelo ajustado para este data set, el resultado de la función train(). • newdata = (Dataframe) Dataset con los datos que se usaran como base para hacer la predicción.
  • 25. Evaluación del modelo • confusionMatrix() • Crea una tabla de contingencia entre los outcomenes observadas y pronosticadas y despliega las estadísticas asociadas. • Argumentos: • data = (vector) es el vector que contiene las predicciones, el resultado de la función predict(). • reference = (vector) es el vector que ccontiene los resultados verdaderos. • positive = (“character”) es el nivel que se considera como resultado positivo de la predicción.
  • 26. Ejemplo 1 (Árbol de clasificación) • Dataset: tennis • Es un dataset famoso y clasico, lo usamos en el ejemplo anterior. • Vamos importarlo desde un archivo csv. • Las variables predictivas son categoricas. • Usaremos el algoritmo “treebag”, que permite hacer arboles de clasificación en base a variables categoricas.
  • 27. Ejemplo (QSAR) • Quantitative structure-activity relationship, QSAR, es el proceso por el cual la estructura química se correlaciona cuantitativamente con un proceso definido de actividad biológica. • Dataset = bbb • Para predecir si una molécula atraviesa o no la barrera hemato- encefálica y en base a descriptores que pueden calcularse computacionalmente. http://gohom.win/ManualHom/Schrodinger/Schrodinger_2012_docs/general/qikprop_props.pdf https://www.rdocumentation.org/packages/QSARdata/versions/1.3/topics/bbb2
  • 28. Overfitting • El modelo tiene una alta capacidad para resolver el data set de entrenamiento, pero falla con los datos de prueba o reales. • Esto en muchos casos se debe a un sobre entrenamiento o a una mala division del data set.
  • 29. División de los Datos • createDataPartition() • Sirve para dividir un data set original y crear los data sets: uno de entrenamiento y otro de prueba. • Crea un vector numerico con kos indices que formaran parte del nuevo data set. • Argumentos • p = (numérico, de 0 a 1), porcentaje de los datos que irá al data set de entrenamiento. • list = (booleano), el resultado debe colocarse en una lista • y= (vector), vector de resultado, se usa para que los grupos esten distribuidos de forma equitativa según este vector.
  • 30. Ejemplo • Dataset: spam • A data set collected at Hewlett-Packard Labs, that classifies 4601 e-mails as spam or non-spam. In addition to this class label there are 57 variables indicating the frequency of certain words and characters in the e- mail. • The first 48 variables contain the frequency of the variable name (e.g., business) in the e-mail. If the variable name starts with num (e.g., num650) the it indicates the frequency of the corresponding number (e.g., 650). The variables 49-54 indicate the frequency of the characters ‘;’, ‘(’, ‘[’, ‘!’, ‘$’, and ‘#’. The variables 55-57 contain the average, longest and total run- length of capital letters. Variable 58 indicates the type of the mail and is either "nonspam" or "spam".
  • 31. Boosting • “tunear modelos”, los nuevos arboles se basan en los anteriores, toma los fallos y reduce el peso relativo de las variantes que llevaron a esos fallos.
  • 34. Predicción del fenotipo de H. pylori en base a su secuencia genómica. (2020, sin publicar) • Equipo: Dr. Allan Orozco✝, Dr. Erwin Calgua, M.Sc. Cecilia Hermosilla, M.Sc. Sofía Estrada • Objetivo: Crear un modelo que pueda predecir el fenotipo (cancer, ulcera, gastritis) de una cepa de H. pylori a partir de las mutaciones que presenta en su secuencia genética. • Pre proceso: Desequilibrio de ligamiento por medio de prueba exacta de Fisher • Algoritmo: Random forest • Lenguajers y Librerías: BASH, R, BLAST, CARET, Weka.
  • 35. Un data set para uno de los genes.
  • 36. Un poco de código
  • 37.
  • 38. “Desarrollo de una herramienta web para la predicción de la actividad biológica de estructuras moleculares empleando machine learning” Trabajo de graduación de Química Farmacéutica – USAC Br. Erleigh Hogan, Br. Ángel Ramírez, Br. Galilea Wug, MSc. Nereida Marroquín

Notas del editor

  1. 2- Entropy(Decision|Wind=Weak) = – (2/8) . log2(2/8) – (6/8) . log2(6/8) = 0.811 2- Entropy(Decision|Wind=Strong) = – (3/6) . log2(3/6) – (3/6) . log2(3/6) = 1