top of page

2. 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 y objetivos de este curso se ha desarrollado una librería biotools, usando el lenguaje de programación Pascal, que contiene las funciones empleadas por los diferentes programas elaborados durante el curso. En concreto, contiene las herramientas que se van a comentar a continuación.

 

En primer lugar, en esta librería se definen una serie de nuevos tipos de variables, que serán usados por las funciones de ésta y en las distintas aplicaciones que crearemos utilizando las funciones que aquí programamos.

  •  TPunto: se trata de un registro de tres números reales que denominados x, y y z, que pueden emplearse para definir las coordenadas de un punto o un vector. Además puede contener el valor real del radio del posible punto en el espacio y el color del punto, dado en tipo TColor. 

  •  TAtomPDB: este tipo es un registro que almacenará toda la información correspondiente a un átomo presente en un fichero en formato PDB. Contiene variables, de tipos diferentes: 

    • NumAtom. Es un integer y corresponde al número del átomo en el PDB.

    • ID. Es una cadena de caracteres (string) y corresponde al identificador o tipo del átomo (C, N, CA, O, etc.).

    • NumRes. Es un integer y representa el número del residuo al que pertenece el átomo.

    • AltRes. Se trata de un tipo char y estará en aquellos casos en los que aparecen coordenadas alternativas para los átomos de un residuo indicando a cuál de las posibilidades pertenece el átomo.

    • Residuo. Es un string y guarda el identificador del residuo donde se localiza el átomo (código de aminoácidos de 3 letras como por ejemplo THR, VAL, TYR, etc.).

    • Subunit. Es un char e indica la subunidad a la que pertenece el átomo (A, B…).

    • coord. Es un tipo TPunto, definido anteriormente y que almacenará las coordenadas del átomo.

    • temp. Es un real, que almacena el valor del factor B de temperatura de cada átomo, 

  • TResiduoPDB: Este tipo almacena varios datos sobre un residuo de la proteína. El récord contiene los siguientes campos: 

    • NumRes. Es un integer que almacena el número del residuo en la proteína dentro de una subunidad. Si la proteína tuviera estructura cuaternaria éste se repetiría en las distintas subunidades. ​

    • ID1. Es un char que guarda el  código de aminoácido de una letra. 

    • ID3. Este campo guarda un string que es código de aminoácido de tres letras

    • Atom1, AtomN, N, CA, C, O.  Estos campos almacena el número (integer) de ficha del primer y último átomo del residuo y de los átomos de nitrógeno, carbono alfa, carbono y oxígeno, que son los átomos clave de un residuo.  

    • Subunidad. Se trata de un char y corresponde a la subunidad a la que pertenece el residuo.

  • TSubunidadPDB: Este record guarda en sus distintos campos datos sobre cada una de las subunidades de la proteína. Estos campos son: 

    • IDsub. Es un char que guarda el identificador de la subunidad (A, B, etc.).​

    • Atom1, AtomN.  Estos 2 campos almacenan un integer que será el número de ficha del primer y último átomo de la subunidad. 

    • Res1, ResN.  Estos 2 campos almacenan un integer que será el número de ficha del primer y último residuo de la subunidad. 

  • TProteinPDB: es un registro que almacena la información más relevante contenida en un fichero en formato PDB. A su vez, contiene distintas variables: 

    • Header. Se trata de un string que guarda el título de la proteína, y corresponde a la primera línea del fichero PDB. ​

    • Atom. Este campo contiene un array de estructuras tipo TAtomPDB, ya descritas anteriormente, y que contendrá la información de todos los átomos de la proteína. 

    • Indice. Este campo es un array de números enteros que nos permite indexar la proteína por el número de los átomos del PDB 

    • Res. Contiene un array de estructuras tipo TResiduoPDB, ya descritos, que almacenará la información más relevante de los residuos de la proteína. 

    • Sub. Contiene un array de estructuras tipo TSubunidadPDB, ya descritos, que almacenará la información más relevante de las subunidades de la proteína.

    • NumFichas. Este campo es un integer y contiene el número total de átomos en Atom. Este numero total de fichas contiene el número de átomos total de la proteína que no corresponde con el número total en el PDB, pues eliminamos los átomos alternativos. 

    • NumRes. Es un integer que contiene el número total de residuos de la proteína en Res.

    • NumSub. Es un integer que contiene el número total de residuos de la proteína en Res.

    • Secuencia. Este campo es un string que guarda la secuencia de la proteína en código de una letra sin discriminar entre subunidades. 

    • Cadena. Se trata de una cadena de caracteres o string que contiene los identificadores de las subunidades.

  • TTablaDatos: Este tipo se trata de un array of array of real, de modo que sirve como una tabla bidimensional para almacenar datos.  

  • TarrayAtoms: Este tipo se trata de un array of Tpunto, de modo que sirve como almacén de átomos para tenerlos de forma más accesible. 

  • CisteínasSS: Este tipo se ha creado exclusivamente para la actividad número 14 en la que se busca predecir los posibles puentes disulfuros en una proteína en base a la distancia que hay entre dos cisteínas. El objetivo de este tipo es principalmente obtener distintos parámetros de una función. De esta forma se creó un tipo record que contiene distintas variables: 

    • Distancia. Se trata de un tipo TTablaDatos, donde almacenaremos bidimensionalmente las distancias entre las cisteínas. ​

    • SGs. Esta variable es una array of integer que almacenará los números de ficha de las cisteínas. 

  • TTablahidrof: Se trata de una lista de valores indexados de la A a la Z que se utiliza para almacenar escalas de hidrofobicidad. 

  • TPerfil: Este tipo es un array of real que almacenará en forma de lista de valores de hidrofobicidad de cada residuo en la posición de la proteína dada.

Esta librería también contiene, además de las funciones que posteriormente explicaremos, algunas constantes:

 

AA: Es una cadena de caracteres que contiene las correspondencias entre el código de tres letras y el código de una letra de los aminoácidos, de forma tal que se puede determinar qué código de una letra corresponde a un aminoácido en código de tres letras y viceversa. 

 


Por último, biotools recoge una amplia variedad de funciones que nos permitan desde volcar en un tipo TProteinPDB un fichero en formato PDB que le introducimos desde nuestro ordenador hasta hacer cálculos y representaciones diversas. Así las funciones que contiene son las siguientes que podemos dividirlas en distintos “tipos”:

1. Funciones para convertir del código de tres letras de un aminoácido al de una letra y viceversa

 

function aa3to1(a3:string):string;

Objetivo. Convertir el código de tres caracteres de los aminoácidos (GLY, GLN, CYS, etc.) en el código de un solo carácter (G, Q, C, etc.)

Entrada. Un string que debe ser un aminoácido en código de tres letras.

Salida. Un string que es el código de una letra del aa introducido. 

function aa1to3(a1:string):string; 

Objetivo. Convertir el código de un carácter de los aminoácidos (G, Q, C, etc.) en el código de tres caracteres (GLY, GLN, CYS, etc.). 


Entrada. Un string que debe ser el código de una letra de un aminoácido

Salida. Un string que es el código de tres letra del aa introducido. 

2. Funciones para la carga y generación del tipo TProteinPDB a partir de un fichero PDB 


function CargarProteina(ruta:TEdit; dialogo:TOpenDialog): TStrings

Objetivo. Abrir un fichero en formato PDB y cargarlo en un TStrings que podemos manipular o mostrar por ejemplo a través de un Memo. Además nos permite mostrar la ruta del fichero que seleccionamos del ordenador.

Entrada. Un buscador de archivos de tipo TOpenDialog que permite escoger un fichero de un directorio y un TEdit que nos permita mostrar la ruta de dicho directorio. 


Salida. Las lineas del fichero en un TStrings. 

function CrearTproteinPDB(lineas:TStrings):TproteinPDB

Objetivo. Generar una estructura matricial en forma de fichas que almacene toda la información relevante de cada uno de los átomos, residuos y subunidades de la proteína, junto con otra información de interés acerca de la misma. Además permite indexar la proteína por el número de átomo del PDB y el número de residuo y subunidad.

Entrada. Un conjunto de lineas de texto de tipo TStrings extraídas de un fichero PDB.

Salida. Una estructura tipo TProteinPDB, ya explicada anteriormente y con la que se trabajará en todas las funciones

 function CargarProteina(var p:TproteinPDB):boolean; overload

Objetivo. Generar la estructura TproteinPDB a partir de un fichero PDB. Esta función es una combinación de las dos anteriores. 


Entrada. Una variable vacía de tipo TProteinPDB pasada por referencia para que pueda el programa completarla a partir de los datos extraídos del archivo PDB. 

Salida. El TProteinPDB se llena con los datos extraídos y cuando ocurre ésto la función devuelve un “True”, en caso contrario devuelve un “False”.

3. Funciones que permiten usar el álgebra de vectores

 

function moduloV(vector:Tpunto):real

Objetivo. Calcular el módulo de un vector 


Entrada. Vector en formato TPunto

Salida. Un valor real que es el módulo del vector introducido 


function angV(A,B,C:Tpunto):real

Objetivo. Calcular el ángulo entre 2 vectores representados por 3 puntos que podrían ser átomos de una proteína, por lo que nos permitiría esta función calcular el ángulo de enlace (real o hipotético) entre esos tres átomos 


Entrada. Las coordenadas de tres átomos (A, B, C), de tipo TPunto. La función calculará el ángulo de enlace suponiendo que los átomos A y C se enlazan con el átomo B. 


Salida. El valor del ángulo en grados, que es un número real. 


function SumV(v1,v2:Tpunto):Tpunto

Objetivo. Calcular la suma de dos vectores.

Entrada. Las coordenadas de dos átomos o puntos en formato TPunto. 


Salida. El resultado de la suma en formato Tpunto, debido a que es otro vector. 


function SumV(atom1,atom2:integer; p:TproteinPDB):Tpunto; overload

Objetivo. Calcular la suma de dos vectores. 


Entrada. Dos números de ficha de átomo y una proteína en formato TproteinPDB.

Salida. El resultado de la suma en formato Tpunto. 


function DifV(v1,v2:Tpunto):Tpunto

Objetivo. Calcular la diferencia de dos vectores, v1 y v2, de manera que esta sea v1v2.

Entrada. Las coordenadas de dos átomos o puntos en formato TPunto.

Salida. El resultado de la diferencia en formato Tpunto. 
 

function DifV(atom1,atom2:integer; p:TproteinPDB):Tpunto; overload

Objetivo. Calcular la diferencia de dos vectores formados por dos átomos, v1 y v2, de manera que esta sea v1-v2. 


Entrada. Dos números de ficha de átomo y una proteína en formato TproteinPDB. 


Salida. El resultado de la diferencia en formato Tpunto. 


function ProdKV(K:real; v:Tpunto):Tpunto

Objetivo. Calcular el producto de un escalar por un vector.

Entrada. El número real y el vector en formato Tpunto.

Salida. El resultado del producto de un escalar por un vector es otro vector por lo que la función devuelve un vector en formato Tpunto. 


function ProdEscalar (v1,v2:Tpunto):real

Objetivo. Calcular el producto escalar de dos vectores. 


Entrada. Las coordenadas de dos vectores en formato TPunto.

Salida. Un número real, que es el productor del producto escalar 

 function ProdVectorial(atom1,atom2:Tpunto):Tpunto

Objetivo. Calcular el producto vectorial de dos vectores, que pueden representar dos átomos.

Entrada. Las coordenadas de esos dos puntos en formato TPunto.

Salida. El resultado de dicho producto en que será de tipo Tpunto 

4. Funciones para el cálculo de distancia y ángulo de torsión entre átomos de una proteína 

 

        4.1 Funciones para el cálculo de distancia entre átomos de una proteína

function distancia3d (a1,a2,a3,b1,b2,b3:real):real

Objetivo. Calcular la distancia entre dos puntos en el espacio.

Entrada. Seis números reales que son las tres coordenadas (x, y y z) de cada punto.

Salida. Un número real que corresponde a la distancia entre ambos puntos.

 

function distancia3d (p1,p2:Tpunto):real; overload

Objetivo. Calcular la distancia entre dos puntos en el espacio.

Entrada. Las coordenadas de los dos puntos en formato TPunto.

Salida. Un número real que corresponde a la distancia entre ambos puntos.

 

function distancia3d (atom1,atom2:TAtomPDB):real; overload 

Objetivo. Calcular la distancia entre dos puntos en el espacio. 


Entrada. Dos átomos en formato TAtomPDB, de los cuales se usará internamente el apartado .coord del TAtomPDB para realizar el cálculo. 


Salida. Un número real que corresponde a la distancia entre ambos puntos

 

4.1 Funciones para el cálculo del ángulo de torsión entre cuatro puntos o átomos

 

function torsion(A,B,C,D:integer; p:TproteinPDB):real

Objetivo. Calcular el ángulo de torsión del enlace que se encuentra entre cuatro átomos de una proteína.

Entrada. Cuatro números de ficha de átomo y una proteína en formato TProteinPDB.

Salida. Un número real que corresponde al ángulo de torsión en grados.

function torsion(A,B,C,D:Tpunto):real; overload

Objetivo. Calcular el ángulo de torsión del enlace que se encuentra entre una secuencia de cuatro átomos.

Entrada. Las coordenadas de los cuatro átomos (A,B,C,D)  de tipo TPunto.

Salida. Un número real que corresponde al ángulo de torsión en grados.

5. Funciones para el cálculo de los ángulos de torsión phi y psi. Obtener diagrama de Ramachandran

 

function getRamachandran(p:TproteinPDB; var datos:TTablaDatos):boolean

Objetivo. Calcular los ángulos de torsión φ (phi) y ψ (psi) de todos los residuos de una proteína.

Entrada. Una proteína en formato TProteinPDB y una tabla vacía tipo TTablaDatos que se introduce por referencia y en la que se incluirán los ángulos de torsión de todos los residuos de la proteína.

Salida. Por un lado esta función devuelve una variable booleana que será verdadera si el proceso ha funcionado correctamente y falsa si no; y por otro lado va a rellenar la variable de tipo TTablaDatos con la siguiente información: en la fila 0 el ángulo de torsión φ;  en la columna 1, el ángulo de torsión ψ; en la fila 2 el número de residuo; y en la fila 3 la subunidad a la que pernee dicho residuo. 


function getRamachandranGly(p:TproteinPDB; var datos:TTablaDatos):boolean;

function getRamachandranPro(p:TproteinPDB; var datos:TTablaDatos):boolean;

Estas dos funciones anteriores, presentan la misma entrada y salida que la función getRamachandran original. Sin embargo, el objetivo es ligeramente distinto ya que éstas calculan los ángulos de torsión φ y ψ de residuos glicina (gly) y prolina (pro), respectivamente, de una proteína debido a que, de forma general, la prolina y glicina se encuentran en regiones no permitidas del diagrama de Ramachandran. Para más información vaya a la actividad correspondiente al estudio de dicho diagrama.

6. Funciones para la representación de gráficas.

function plotXY (datos:TTablaDatos; im:Timage; OY:integer=1; OX:integer=0; borrar:boolean=true; lineaSI:boolean = false; colorpluma:TColor=clyellow; colorRelleno:TColor= clyellow; colorFondo:TColor=clBlack; radio:integer=2; borde:integer=40): boolean

 

Objetivo. Representar gráficamente una serie de datos en forma de puntos que pueden estar unido o no por una linea en el plano XY. 


Entrada. Una tabla de tipo TTablaDatos con los datos necesarios para dibujar el gráfico; un objeto de tipo TImage en el que se realizará la representación; dos parámetros de tipo integer que indican las filas de la tabla en las que se encuentran los datos a representar; una variable booleana que indica si se desea borrar lo que hubiera pintado en el objeto TImage antes de pintar de nuevo (por defecto, se borra lo que hubiera); tres parámetros TColor para indicar el color de la pluma con la que se va a pintar, el de relleno de las figuras y el color de fondo; un parámetro booleano para indicar si es necesario que se unan los puntos del gráfico o no (por defecto); un valor del radio de los puntos que se van a representar (integer) y otra variable de tipo integer que indica el ancho en píxeles del borde dentro del Timage. 


Salida. Por un lado devuelve variable booleana que será verdadera si el proceso ha funcionado correctamente y por otro una representación de los datos introducidos en el objeto TImage de acuerdo con las características especificadas en los parámetros de entrada. 


function plotXYrango (datos:TTablaDatos; im:Timage; rangoX:real; rangoY:real; minX:real=0; minY:real=0; OY:integer=1; OX:integer=0; borrar:boolean=true; lineaSI:boolean = false; colorpluma:TColor=clyellow; colorRelleno:TColor= clyellow; colorFondo:TColor=clBlack; radio:integer=2; borde:integer=40): boolean;

Objetivo. Representar gráficamente una serie de datos en forma de puntos que pueden estar unido o no por una linea en el plano XY, sabiendo previamente el rango de valores X e Y.

Entrada. Ésta es la misma que la función anterior a excepción de la introducción de dos parámetros, el rangoX y el rangoY, que se calcula de forma general con dos funciones adicionales (function rangoXim(datos:TTablaDatos;OX:integer=0):real; y function rangoYim(datos:TTablaDatos;OY:integer=1):real; que reciben el tipo TTablaDatos generado en por la función getRamachandran de la proteína completa, para que así, los valores de torsión de las gly y pro tomen los mismos valores relativos que los de la proteína completa. 

Salida. Por un lado devuelve variable booleana que será verdadera si el proceso ha funcionado correctamente y por otro una representación de los datos introducidos en el objeto TImage de acuerdo con las características especificadas en los parámetros de entrada

7.  Funciones para las transformaciones espaciales. Traslación y giro.

function traslacion (p1,delta:Tpunto):Tpunto;

 

Objetivo. Calcular la nueva posición de un punto tras trasladarlo en el espacio según indique delta.

Entrada. El punto a trasladar y el vector delta de traslación (cuánto se va a trasladar en x, y & z).

 

Salida. Las coordenadas del nuevo punto como Tpunto.

 

function giroOXang(p1,p2: TPunto):real;

 

Objetivo. Calcular cuántos grados es necesario rotar un vector formado por dos puntos con respecto al eje OX para que quede contenido en el plano OXZ

 

Entrada. Los puntos inicial y final del vector (p1 y p2), como TPunto

 

Salida. Los grados (número real) que son necesarios rotar el vector diferencia de ambos puntos con respecto al primero en torno al eje OX.

 

function giro0X (ang:real; p2:Tpunto):Tpunto;

 

Objetivo. Girar el vector de posición de un punto un ángulo dado con respecto al eje OX. 
 

Entrada. Las coordenadas de un punto, p2 de tipo TPunto, y los grados (real) a girar.

 

Salida. Las coordenadas del punto tras la rotación en formato TPunto.

 

function giroOYang(p1,p2: TPunto) :real;

 

Objetivo. Calcular cuántos grados es necesario rotar un vector formado por dos puntos con respecto al eje OY para que quede contenido en el plano OYZ

 

Entrada. Los puntos inicial y final del vector (p1 y p2), como TPunto

 

Salida. Los grados (número real) que son necesarios rotar el vector diferencia de ambos puntos con respecto al primero en torno al eje OY.

 

function giro0Y (ang:real; p2:Tpunto):Tpunto;

 

Objetivo. Girar el vector de posición de un punto un ángulo dado con respecto al eje OY. 

Entrada. Las coordenadas de un punto, p2 de tipo TPunto, y los grados (real) a girar. 


Salida. Las coordenadas del punto tras la rotación en formato TPunto.

 

function giro0Z (ang:real; p2:Tpunto):Tpunto;

 

Objetivo. Girar el vector de posición de un punto un ángulo dado con respecto al eje OZ. 
 

Entrada. Las coordenadas de un punto, p2 de tipo TPunto, y los grados (real) a girar.

 

Salida. Las coordenadas del punto tras la rotación en formato TPunto. 
 

function superposCa1y10(p1:TproteinPDB; numCa:integer):TTabladatos; 

 

Objetivo.  Realizar las transformaciones espaciales necesarias para que los carbonos alfa 1 y n de la proteína se superpongan. Para ello, se transloca el Ca1 al origen de coordenadas y con, respecto a ese movimiento, con la misma matriz de traslación, el resto de la proteína. A continuación se gira la proteína en el eje OX y OY unos ángulos calculados en la función.

 

Entrada. La proteína en tipo TproteinPDB a la que queremos aplicar esta función y el número final de carbonos alfa para seleccionar el primero y el último.

 

Salida. Una tabla de tipo TTablaDatos donde se almacena en la columna 1, el número de carbonos alfa, en las columnas 2, 3 y 4, las coordenadas originales de los carbono alfa la proteína, y en las columnas 5, 6 y 7, las coordenadas transformadas. 

8.  Funciones reescribir las lineas ATOM de un archivo en PDB

 

function alinear(cadena:string; ncaractertotal:integer;lado:string=‘derecha'):string;

 

Objetivo. Crear una cadena string de un tamaño determinado y con los caracteres alineados hacia la derecha o izquierda dependiendo de lo que desee el usuario. Esto permite crear las cadenas de texto con las características necesarias para poder escribir de manera correcta el archivo PDB con la función siguiente, writelinePDB.

 

Entrada. La cadena que se quiere alinear de tipo string, el tamaño total de la nueva cadena (ncaractertotal, tipo integer) y a qué lado de la misma queremos que quede la cadena introducida, de tipo string, que puede tomar los valores “derecha” o “izquierda”). De forma predeterminada se alinea a la derecha. -

 

Salida. Un string formado por la cadena de caracteres alineada a la izquierda o derecha y de la longitud deseada. 
 

function writelinePDB(atom:TatomPDB):string; 


Objetivo. Escribir una línea de un fichero PDB que contenga la información de un átomo. 
 

Entrada. Una estructura TAtomPDB con todos los datos del átomo de interés. 

 

Salida. Una cadena de caracteres formada por una línea al estilo del registro ATOM de los ficheros PDB

9.  Funciones para el cálculo de perfil hidrofóbico y anfipatía 

function hidrofobicidad (seq:string; hidrof:TTablaHidrof; semiv:integer): TTablaDatos;

function kytedoolittle(seq:string; escalaH:TTablaHidrof; semiv:integer):TPerfil;

 

Objetivo. El objetivo de las dos funciones anteriores es calcular el perfil de hidrofobicidad de una proteína según el formalismo de Kyte-Doolittle, que se explicará en la actividad correspondiente.

 

Entrada. Una cadena de caracteres que contiene la secuencia de la proteína en código de una letra, una tabla/escala de valores de hidrofobicidad para cada aminoácido y una semiventana. 
 

Salida. En la primera función se devuelve una tabla con los valores de hidrofobicidad para cada residuo en la fila 2 mientras que en la segunda función se devuelve un tipo TPerfil con el valor de hidrofobicidad asociado a cada residuo y posición en la proteína. Obtenemos un tipo TPerfil debido a que será la entrada del objeto de Lazarus TAChart para la representación de datos. 
 

function eisenberg (seq:string; hidrof:TTablaHidrof; semiv:integer; dang:real):TTablaDatos;

 

function eisenberg2 (seq:string; hidrof:TTablaHidrof; semiv:integer; dang:real):TPerfil;

 

Objetivo. El objetivo de las dos funciones anteriores es calcular el perfil de antipatía de una proteína según Eisenberg, que se explicará en la actividad correspondiente.

 

Entrada. Una cadena de caracteres que contiene la secuencia de la proteína en código de una letra, una tabla/escala de valores de hidrofobicidad para cada aminoácido, una semiventana y la distancia angular característica de cada estructura secundaria de un proteína (100º para alfas hélices y 180º para láminas beta).

 

Salida. En la primera función se devuelve una tabla con los valores de hidrofobicidad para cada residuo en la fila 2 mientras que en la segunda función se devuelve un tipo TPerfil con el valor de hidrofobicidad asociado a cada residuo y posición en la proteína. Obtenemos un tipo TPerfil debido a que será la entrada del objeto de Lazarus TAChart para la representación de datos.

 

function stroud (seq:string; hidrof:TTablaHidrof; semiv:integer; dang:real):TTablaDatos;

 

function stroud2 (seq:string; hidrof:TTablaHidrof; semiv:integer; dang:real):TPerfil; 


- Objetivo. El objetivo de las dos funciones anteriores es calcular el perfil de antipatía de una proteína según Stroud, que se explicará en la actividad correspondiente. 


- Entrada. Recibe los mismos parámetros que las funciones que calculan la antipatía según Eisenberg.

 

Salida. Se devuelve lo mismo que en las funciones que calculan la antipatía según Eisenberg.

10.  Funciones para cálculo de las distancias entre cisteínas y RMSD

 function tabladistanciasCys(p:TproteinPDB):CisteinasSS;

 

Objetivo. Calcular las distancias en Amstrong entre las distintas cisteínas de una proteína, dispuestas estas en una tabla bidimensional.

 

Entrada. Recibe una estructura TProteinPDB de una proteína cargada previamente.

 

Salida. Devuelve un tipo record CisteinasSS, explicado al inicio de esta página. 


function RMSDCys(p:TproteinPDB;cys1,cys2:integer):real;

 

Objetivo. El objetivo es buscar todas las cisteínas de la proteína y calcular el RMSD entre las dos que se indiquen. 
 

Entrada. Recibe una estructura TProteinPDB de una proteína cargada previamente y el número de las cisteínas que quieres comparar, si es la primera cisteína con la quinta, indicaremos: 1 y 5.

 

Salida. Devuelve un número real que corresponde al valor del RMSD calculado entre las dos cisteínas
 

© 2019 by Alberto Manuel Parra Pérez

bottom of page