Librería biotools

Crear una librería en Free Pascal/Lazarus de funciones y procedimientos relativos a análisis estructural de proteínas. Esta librería, que denominaremos biotools deberá contener todos los métodos relevantes empleados por los diferentes programas y aplicaciones que se desarrollarán a lo largo del curso, por lo que deberá ir creciendo poco a poco, a medida que se avanza en éste.


Para llevar a cabo las actividades de este cuaderno se ha creado una librería en Free Pascal con los records y las funciones necesarias. En esta actividad van a comentarse de forma resumida y esquemática en qué consisten.
La cabecera está compuesta por:


records:

  • TPunto: almacena las coordenadas X, Y, Z de un átomo.
  • TAtomPDB: almacena distintos tipos de datos relacionados con los átomos de una proteína. Se describe en profundidad en la actividad 5.
  • TResiduoPDB: almacena distintos tipos de datos relacionados con los residuos de una proteína. Se describe en profundidad en la actividad 5.
  • TCadenaPDB: almacena distintos tipos de datos relacionados con las subunidades de una proteína. Se describe en profundidad en la actividad 5.
  • TPDB: almacena distintos tipos de datos extraídos del fichero *.pdb de una proteína utilizando los records descritos. Se describe en profundidad en la actividad 5.
  • TTablaDatos: consiste en una tabla bidimensional de números reales. Empleado para diversas finalidades a lo largo del cuaderno.
  • THidrof: consiste en un vector de números reales cuyos índices son letras del abecedario. Se utiliza para almacenar escalas de hidrofobicidad.

const:

AA = 'ALA=A#ARG=R#ASN=N#ASP=D#CYS=C#GLN=Q#GLU=E#GLY=G#HIS=H#ILE=I#LEU=L'+
'#LYS=K#MET=M#PHE=F#PRO=P#SER=S#THR=T#TRP=W#TYR=Y#VAL=V';

Se trata de una constante que se utiliza por la función AA3to1 para transformar el identificador de un aminoácido en código de tres letras por el código de una letra, más práctico para su manipulación bioinformática.

Funciones:

Posteriormente aparecen los descriptores de todas las funciones de la librería, que aparecen al completo en el bloque principal tras implementation. A continuación, van a describirse las funciones de esta librería, nombrando su objetivo, la entrada y la salida de la función.


a. Funciones para calcular la distancia 3D:

  • Función distancia3D:
    • Objetivo: calcular la distancia entre dos átomos de una proteína.
    • Entrada: 6 datos de tipo real consistentes en las coordenadas X, Y, Z del primer átomo y X, Y, Z del segundo átomo.
    • Salida: un número de tipo real, la distancia entre estos dos átomos.
  • Función distancia3D; overload:
    • Objetivo: calcular la distancia entre dos átomos de una proteína.
    • Entrada: 2 argumentos de tipo TPunto. Cada uno se refiere a un átomo.
    • Salida: un número de tipo real, la distancia entre estos dos átomos.


b. Funciones para cargar la proteína:

  • Función CargarProteina:
    • Objetivo: cargar un fichero de proteína *.pdb en el programa correspondiente de manera que su información pueda ser comprendida por este.
    • Entrada: dos argumentos:
      • Uno de tipo TEdit, que hace referencia a un objeto Edit en el que se guardará la ruta del fichero.
      • Otro de tipo TOpenDialog, que permitirá que se abra una ventana para que el usuario pueda seleccionar el fichero deseado.
    • Salida: es de tipo TStrings, el tipo de datos que necesita la función CrearTPDB, explicada más adelante en esta actividad y en la actividad 5.
  • Función CargarProteina; overload:
    • Objetivo: cargar un fichero de proteína *.pdb en el programa correspondiente de manera que su información pueda ser comprendida por este.
    • Entrada: tres argumentos.
      • Uno de tipo TEdit, que hace referencia a un objeto Edit en el que se guardará la ruta del fichero.
      • Otro de tipo TOpenDialog, que permitirá que se abra una ventana para que el usuario pueda seleccionar el fichero deseado.
      • Otro de tipo TMemo, que hace referencia a un objeto Memo en el que se cargará el fichero *.pdb.
    • Salida: es de tipo TStrings, el tipo de datos que necesita la función CrearTPDB, explicada más adelante en esta actividad y en la actividad 5.
  • Función CrearTPDB:
    • Objetivo: el objetivo de esta función es clasificar la información contenida en un fichero *.pdb en los campos de una variable de tipo TPDB. Se explica con mayor profundidad en la actividad 5.
    • Entrada: esta función requiere un único argumento de tipo TStrings, el tipo de las dos funciones anteriores. Por tanto, esta función toma la información de las dos funciones anteriores.
    • Salida: es de tipo TPDB.
  • Función CargarProteina; overload:
    • Objetivo: cargar un fichero de proteína *.pdb en el programa correspondiente de manera que su información pueda ser comprendida por este. Es el resultado de fusionar alguna de las otras dos funciones CargarProteina anteriores con la función CrearTPDB.
    • Entrada: requiere un único argumento, una variable de tipo TPDB, que se pasa por variable, es decir, no se hace una copia de esta variable y se introduce en la función, sino que es la variable original la que se introduce en el programa y, por tanto, su contenido es transformado por la función y tiene consecuencias fuera de esta.
    • Salida: es de tipo booleano, siempre que se ejecuta esta función su salida es True.


c. Funciones para operar con vectores:

  • Función sumav:
    • Objetivo: calcular la suma entre dos vectores.
    • Entrada: requiere dos argumentos de tipo TPunto, cada uno de los vectores con coordenadas X, Y, Z que se quieren sumar.
    • Salida: es de tipo TPunto y se corresponde con el vector resultante de la suma.
  • Función difev:
    • Objetivo: calcular la diferencia entre dos vectores.
    • Entrada: requiere dos argumentos de tipo TPunto, cada uno de los vectores con coordenadas X, Y, Z que se quieren restar. El primer argumento es el minuendo y el segundo el sustraendo.
    • Salida: es de tipo TPunto y se corresponde con el vector resultante de la resta.
  • Función prodkv:
    • Objetivo: calcular el producto de un escalar por un vector.
    • Entrada: requiere dos argumentos, un número real (el escalar) y otro de tipo TPunto (el vector).
    • Salida: es de tipo TPunto y se corresponde con el vector resultante del producto.
  • Función modulo:
    • Objetivo: calcular el módulo de un vector.
    • Entrada: requiere un único argumento de tipo TPunto, el vector cuyo módulo quiere calcularse.
    • Salida: es de tipo real y se corresponde con el módulo del vector.
  • Función PVectorial:
    • Objetivo: calcular el producto vectorial entre dos vectores.
    • Entrada: dos argumentos de tipo TPunto, que se corresponden con los dos vectores a multiplicar vectorialmente.
    • Salida: es de tipo TPunto y se corresponde con el vector resultante de este producto.
  • Función angulo:
    • Objetivo: calcular el ángulo que forman dos vectores.
    • Entrada: dos argumentos de tipo TPunto, correspondientes con los dos vectores.
    • Salida: es de tipo real y se corresponde con el ángulo que forman los vectores expresado en grados.
  • Función angulodeenlace:
    • Objetivo: calcular el ángulo que forman tres vectores de posición.
    • Entrada: tres argumentos, cada uno de tipo TPunto, correspondientes con cada uno de los vectores de posición. El tercer argumento indica qué vector actúa como vértice.
    • Salida: es de tipo real y se corresponde con el ángulo expresado en grados.
  • Función angulodetorsion:
    • Objetivo: calcular el ángulo de torsión formado entre cuatro vectores de posición.
    • Entrada: cuatro argumentos de tipo TPunto, cada uno de los vectores de posición.
    • Salida: es de tipo real y se corresponde con el ángulo de torsión expresado en grados.



d. Funciones para pintar:

  • Función plotXY:
    • Objetivo: representar un gráfico bidimensional. Esta función es más apropiada para el tipo de gráficos a representar en las actividades 9, 10 y 11.
    • Entrada: esta función requiere numerosos argumentos, aunque muchos de ellos tienen un valor por defecto.
      • datos: es un argumento de tipo TTablaDatos, consistente en una matriz con los datos a representar.
      • im: hace referencia a un objeto de tipo TImage presente en el lienzo, donde se va a representar el gráfico.
      • minX, maxX, minY, maxY: son argumentos de tipo real que indican los límites superiores e inferiores de valores que deben representarse.
      • colorpluma: es un argumento de tipo TColor y hace referencia al color del borde del círculo con el que se representa cada valor. Por defecto tiene el valor cllime, que se corresponde con el color verde.
      • colorRelleno: es un argumento de tipo TColor y hace referencia al color del relleno del círculo con el que se representa cada valor. Por defecto tiene el valor cllime, que se corresponde con el color verde.
      • lineaSI: es un argumento booleano que por defecto tiene el valor False. Cuando es verdadero los puntos del gráfico se conectan por líneas.
      • borrar: es un argumento booleano que por defecto tiene el valor True. En esta situación cada vez que se ejecuta esta función se borra el gráfico que hubiera anteriormente, en caso de haberlo.
      • colorFondo: es un argumento de tipo TColor que hace referencia al color del fondo del gráfico. Por defecto tiene el valor clblack, que se corresponde con el color negro.
      • colorBordeB: es un argumento de tipo TColor que hace referencia al color del borde del gráfico. Por defecto tiene el valor clblack, que se corresponde con el color negro.
      • OY: es un argumento de tipo entero que por defecto tiene el valor 1 e indica la posición en la que se encuentra los valores del eje de ordenadas en la matriz datos.
      • OX: es un argumento de tipo entero que por defecto tiene el valor 0 e indica la posición en la que se encuentra los valores del eje de abscisas en la matriz datos.
      • radio: es un argumento de tipo entero que por defecto tiene el valor 3 e indica el radio en píxeles del círculo con el que se representa cada dato en el gráfico.
      • borde: es un argumento de tipo entero que por defecto tiene el valor 5 e indica el radio en píxeles del borde del gráfico.
    • Salida: la salida de esta función es de tipo booleana y el resultado siempre es True.
  • Función plotXY; overload:
    • Objetivo: representar un gráfico bidimensional. Esta función es más apropiada para el tipo de gráficos a representar en la actividad 15.
    • Entrada: esta función requiere numerosos argumentos, aunque muchos de ellos tienen un valor por defecto.
      • datos: es un argumento de tipo TTablaDatos, consistente en una matriz con los datos a representar.
      • im: hace referencia a un objeto de tipo TImage presente en el lienzo, donde se va a representar el gráfico.
      • colorpluma: es un argumento de tipo TColor y hace referencia al color del punto con el que se representa cada valor en el gráfico. Por defecto tiene el valor cllime, que se corresponde con el color verde.
      • lineaSI: es un argumento booleano que por defecto tiene el valor True. Cuando esto ocurre los puntos del gráfico se conectan por líneas.
      • borrar: es un argumento booleano que por defecto tiene el valor True. En esta situación cada vez que se ejecuta esta función se borra el gráfico que hubiera anteriormente, en caso de haberlo.
      • colorFondo: es un argumento de tipo TColor que hace referencia al color del fondo del gráfico. Por defecto tiene el valor clblack, que se corresponde con el color negro.
      • OY: es un argumento de tipo entero que por defecto tiene el valor 1 e indica la posición en la que se encuentra los valores del eje de ordenadas en la matriz datos.
      • OX: es un argumento de tipo entero que por defecto tiene el valor 0 e indica la posición en la que se encuentra los valores del eje de abscisas en la matriz datos.
      • radio: es un argumento de tipo entero que por defecto tiene el valor 1 e indica el radio en píxeles del punto con el que se representa cada dato en el gráfico.
    • Salida: la salida de esta función es de tipo booleana y el resultado siempre es True.


e. Función para transformar código de 3 letras a 1 letra:

  • Función AA3to1:
    • Objetivo: esta función transforma el identificador de un aminoácido en código de tres letras al correspondiente en código de una letra.
    • Entrada: un único argumento de tipo string, correspondiente con el identificador de un aminoácido en código de tres letras.
    • Salida: es de tipo string y se corresponde con el identificador de un aminoácido en código de una letra.


f. Función para crear un TTablaDatos para representar el gráfico de Ramachandran:

  • Función ramachandran:
    • Objetivo: generar una matriz con los ángulos ϕ y ψ de una proteína
    • Entrada: la entrada de esta función es de tipo TPDB y se corresponde con el TPDB en el que tenemos almacenada la información relativa a un fichero *.pdb.
    • Salida: es de tipo TTablaDatos y se corresponde con una matriz con un número de filas igual al número de residuos de una proteína, excluyendo el primer residuo de la primera subunidad y el último de la última, y 4 columnas:
      • La primera columna contiene el ángulo de torsión ϕ de cada residuo.
      • La segunda columna contiene el ángulo de torsión ψ de cada residuo.
      • La tercera columna contiene el número del residuo en cuestión.
      • La cuarta subunidad indica la subunidad a la que pertenece cada residuo.
      • Para el caso de proteínas formadas por más de una subunidad esta función está diseñada de modo que no calcula los ángulos de torsión del último residuo de una subunidad y del primero de la siguiente, sino que le asigna el valor 0 a estos ángulos.


g. Funciones para transformaciones en el espacio afín:

  • Función traslacion:
    • Objetivo: calcular las nuevas coordenadas X, Y, Z de un punto cuando se somete a un movimiento de traslación.
    • Entrada: esta función requiere dos argumentos, ambos de tipo TPunto. El primero hace referencia al vector de posición del punto que quiere trasladarse, mientras que el segundo indica el desplazamiento en cada uno de los ejes X, Y, Z.
    • Salida: es de tipo TPunto y se corresponde con el nuevo vector de posición resultante de la traslación.
  • Función GiroOX:
    • Objetivo: permite calcular las nuevas coordenadas X, Y, Z de un punto cuando se somete a un giro entorno al eje OX.
    • Entrada: esta función requiere dos argumentos, uno de tipo TPunto que hace referencia al vector de posición del punto que va a ser rotado y otro de tipo real que se corresponde con el ángulo de giro entorno al eje OX expresado en grados.
    • Salida: es de tipo TPunto y se corresponde con el nuevo vector de posición resultante de la rotación en el eje OX.
  • Función GiroOY:
    • Objetivo: permite calcular las nuevas coordenadas X, Y, Z de un punto cuando se somete a un giro entorno al eje OY.
    • Entrada: esta función requiere dos argumentos, uno de tipo TPunto que hace referencia al vector de posición del punto que va a ser rotado y otro de tipo real que se corresponde con el ángulo de giro entorno al eje OY expresado en grados.
    • Salida: es de tipo TPunto y se corresponde con el nuevo vector de posición resultante de la rotación en el eje OY.
  • Función GiroOZ:
    • Objetivo: permite calcular las nuevas coordenadas X, Y, Z de un punto cuando se somete a un giro entorno al eje OZ.
    • Entrada: esta función requiere dos argumentos, uno de tipo TPunto que hace referencia al vector de posición del punto que va a ser rotado y otro de tipo real que se corresponde con el ángulo de giro entorno al eje OZ expresado en grados.
    • Salida: es de tipo TPunto y se corresponde con el nuevo vector de posición resultante de la rotación en el eje OZ.


h. Función para identificar el formato de un fichero de proteínas y representar la secuencia primaria:

  • Función identificarfichero:
    • Objetivo: cargar un fichero de proteína en el programa, identificar su formato y extraer su secuencia primaria.
    • Entrada: esta función requiere dos argumentos, uno de tipo TStrings, el tipo resultante de los dos primeros tipos de la función CargarProteina y otro de tipo TMemo, que hace referencia a un objeto Memo en el que va a indicarse el formato del fichero de proteína y su secuencia primaria de modo que en cada línea se van a representar 60 residuos en código de una letra, representándose todas las subunidades de forma consecutiva para el caso de aquellas proteínas que poseen más de una subunidad.
    • Salida: es de tipo TStrings, el tipo de la propiedad Lines de un Memo, en el que se va a representar el formato del fichero de proteína y la secuencia primaria contenido en este.

i. Función para calcular el RMSD:

  • Función RMSD:
    • Objetivo: esta función permite calcular el RMSD o desviación cuadrática media entre dos residuos de cisteína de una proteína que seleccione el usuario.
    • Entrada: esta función requiere cinco argumentos:
      • Un argumento de tipo TPDB, correspondiente con la variable TPDB en la que se ha almacenado toda la información relativa al fichero de proteína *.pdb.
      • Dos argumentos de tipo entero con los que el usuario especifica el número de cada uno de los residuos de cisteína a escoger. Este número es consecutivo, va desde 1 al número máximo de residuos de cisteína que contenga el fichero *.pdb.
      • Dos argumentos de tipo TMemo en los que se especifican dos objetos Memo en los que se van a representar las líneas ATOM correspondientes a los residuos seleccionados.
    • Salida: la salida de la función es un número real que se corresponde con el RMSD de la función.

j. Función para ejecutar RasMol:

  • Función ejecutar:
    • Objetivo: esta función permite ejecutar desde una aplicación Free Pascal el programa de visualización de proteínas RasMol, con un fichero *.pdb cargado con los parámetros que especifique el usuario en un fichero aparte que debe tener la extensión *.pdb también.
    • Entrada: esta función requiere 5 argumentos:
      • Tres argumentos son de tipo TEdit y hacen referencia a objetos Edit en los que va a almacenarse las rutas en el ordenador de la localización del ejecutable RasMol.exe, el fichero *.pdb a cargar y del fichero en el que se especifican los parámetros con los que visualizar la proteína en RasMol.
      • Un argumento de tipo TOpenDialog que va a permitir que se abran ventanas con las que el usuario puede ir buscando y seleccionando en el ordenador todos los ficheros que necesita en el tiempo de ejecución.
      • Un argumento de tipo TProcess con el que se le indica a la función un objeto Process, que permite la ejecución de programas externos, así como que se ejecuten con las instrucciones que desee el usuario.
    • Salida: es de tipo booleano, de manera que el resultado de la función siempre es True.


k. Función para predecir enlaces disulfuro:

  • Función SSbond:
    • Objetivo: esta función permite predecir si dos átomos de azufre de dos residuos de cisteínas distintos de una proteína se encuentran enlazadas covalentemente o no. Para ello, calcula la distancia entre todos los átomos de azufre de todos los residuos de cisteína de la proteína y considera que están enlazados si la distancia que los separa es igual o inferior a una distancia umbral seleccionada por el usuario, siendo de 2,05 Å por defecto.
    • Entrada: esta función requiere 7 argumentos:
      • Un argumento de tipo TPDB con el que se indica la variable de tipo TPDB que contiene la información del fichero *.pdb seleccionado por el usuario.
      • Dos argumentos de tipo TEdit con los que se indica a la función un objeto Edit en el que almacenar la ruta en el ordenador del fichero *.pdb seleccionado y otro objeto Edit con el valor umbral, siendo de 2,05 Å por defecto.
      • Un argumento de tipo TOpenDialog que permite que se abra una ventana con la que el usuario selecciona el fichero *.pdb.
      • Tres argumentos de tipo TMemo con los que se especifica a la función tres objetos tipo Memo. El primer objeto Memo contendrá el fichero *.pdb, el segundo los enlaces disulfuro presentes en la proteína según el campo SSBOND del fichero *.pdb y el tercero los enlaces disulfuro predichos por la función.
    • Salida: es de tipo booleano, de modo que el resultado de la función siempre es True.

l. Funciones para calcular el perfil hidrofóbico y la anfipatía axial:

  • Función calcularhidrofobicidad:
    • Objetivo: esta función permite calcular el perfil hidrofóbico de los residuos seleccionados de una proteína siguiendo el algoritmo de Kyte-Doolittle.
    • Entrada: esta función requiere 6 argumentos:
      • Un argumento de tipo TMemo, que hace referencia a un objeto Memo que contiene la secuencia primaria de la proteína tal y como se representa por la función CargarFASTA.
      • Un argumento de tipo entero con el que se especifica la subunidad de proteína a considerar para aquellas proteínas que poseen más de una subunidad.
      • Dos argumentos de tipo entero pasados a la función por variable con los que se indican el primer y el último residuo de la subunidad a considerar para calcular el perfil hidrofóbico.
      • Un argumento de tipo TTablaHidrof con el que se indica a la función los valores de hidrofobicidad de cada aminoácido para calcular el perfil hidrofóbico.
      • Un argumento de tipo entero con el que se indica el tamaño de la semiventana a considerar para el cálculo del perfil hidrofóbico.
    • Salida: la salida de esta función es de tipo TTablaDatos y consiste en una matriz bidimensional en la que la primera columna contiene el número de residuos y la otra columna la hidrofobicidad de cada uno de ellos.
  • Función eisenberg:
    • Objetivo: esta función permite calcular la anfipatía axial de los residuos seleccionados de una proteína siguiendo el algoritmo del momento de Eisenberg.
    • Entrada: esta función requiere 7 argumentos:
      • Un argumento de tipo TMemo, que hace referencia a un objeto Memo que contiene la secuencia primaria de la proteína tal y como se representa por la función CargarFASTA.
      • Un argumento de tipo entero con el que se especifica la subunidad de proteína a considerar para aquellas proteínas que poseen más de una subunidad.
      • Dos argumentos de tipo entero pasados a la función por variable con los que se indican el primer y el último residuo de la subunidad a considerar para calcular el momento de Eisenberg.
      • Un argumento de tipo TTablaHidrof con el que se indica a la función los valores de hidrofobicidad de cada aminoácido para calcular el momento de Eisenberg.
      • Un argumento de tipo entero con el que se indica el tamaño de la semiventana a considerar para el cálculo del momento de Eisenberg.
      • Un argumento de tipo real con el que se especifica la distancia angular expresada en grados a tener en cuenta para calcular el momento de Eisenberg.
    • Salida: la salida de esta función es de tipo TTablaDatos y consiste en una matriz bidimensional en la que la primera columna contiene el número de residuos y la otra columna el valor de momento de Eisenberg asociado a cada uno de ellos.
  • Función stroud:
    • Objetivo: esta función permite calcular la anfipatía axial de los residuos seleccionados de una proteína siguiendo el algoritmo de espectro de potencias de Fourier de Stroud.
    • Entrada: esta función requiere 7 argumentos:
      • Un argumento de tipo TMemo, que hace referencia a un objeto Memo que contiene la secuencia primaria de la proteína tal y como se representa por la función CargarFASTA.
      • Un argumento de tipo entero con el que se especifica la subunidad de proteína a considerar para aquellas proteínas que poseen más de una subunidad.
      • Dos argumentos de tipo entero pasados a la función por variable con los que se indican el primer y el último residuo de la subunidad a considerar para calcular el espectro de potencias de Fourier de Stroud.
      • Un argumento de tipo TTablaHidrof con el que se indica a la función los valores de hidrofobicidad de cada aminoácido para calcular el espectro de potencias de Fourier de Stroud.
      • Un argumento de tipo entero con el que se indica el tamaño de la semiventana a considerar para calcular el espectro de potencias de Fourier de Stroud.
    • Salida: la salida de esta función es de tipo TTablaDatos y consiste en una matriz bidimensional en la que la primera columna contiene el número de residuos y la otra columna el valor asociado a cada uno de ellos en el espectro de potencias de Fourier de Stroud.


m. Función para alinear:

  • Función alinear:
    • Objetivo: esta función permite representar un string de manera que ocupe el número de caracteres que desee el usuario y si este string está formado por un menor número de caracteres entonces el resto de caracteres se rellenan con espacios en blanco. Por otro lado, esta función también permite justificar este string a la derecha o a la izquierda. De este modo se consigue respetar el encolumnado, esencial en los ficheros de proteína.
    • Entrada: esta función requiere 3 argumentos:
      • El primer argumento es el string que se quiere ajustar.
      • El segundo argumento es de tipo entero e indica el número de caracteres que desea el usuario que posea el string, incluyendo los espacios en blanco.
      • El tercer argumento es de tipo string y permite establecer si el string se alinea a la izquierda o a la derecha. Por defecto este se alinea a la derecha.
    • Salida: la salida de esta función es el string transformado y, por tanto, es de tipo string.


n. Función para generar un fichero *.pdb a partir de un TPDB:

  • Función writePDB:
    • Objetivo: esta función permite generar una línea ATOM característica de los ficheros *.pdb a partir de la información contenida en un TAtomPDB, referido a un átomo concreto.
    • Entrada: esta función requiere un único argumento de tipo TAtomPDB. Va a analizar uno a uno sus campos y construyendo la línea ATOM del átomo especificado.
    • Salida: la salida de esta función es de tipo string y se corresponde con la línea ATOM relativa a este átomo.


o. Función para cargar la secuencia de cada cadena a partir de un fichero *.fasta:

  • Función CargarFASTA:
    • Objetivo: esta función es parecida a las funciones CargarProteina, solo que en este caso permite cargar en el programa un fichero *.fasta.
    • Entrada: esta función requiere 3 argumentos:
      • Un argumento de tipo TEdit con el que se indica a la función un objeto Edit en el que se va a almacenar la ruta en el ordenador del fichero *.fasta.
      • Un argumento de tipo TOpenDialog que va a permitir que se abra una ventana con la que el usuario va a poder buscar y seleccionar el fichero *.fasta que desee.
      • Un argumento de tipo TMemo con el que se indica a la función un objeto Memo en el que se va a almacenar la secuencia primaria de la proteína. La función está diseñada de tal modo que en cada línea del Memo se representa una subunidad de la proteína, por lo que si la función tiene más de una subunidad entonces cada subunidad se representa en una línea diferente.
    • Salida: es de tipo booleano, de modo que el resultado de la función siempre es True.