EJERCICIO 3
Desarrollar una función de parsing de ficheros PDB (que denominaremos GetPDB) que permita representar adecuadamente los datos estructurales relevantes de una proteína en nuestro entorno de programación. Dicha función deberá ser capaz de leer los datos desde un fichero pdb y almacenarlos en una estructura matricial (cuyo tipo denominaremos TPDB) integrada por registros (de tipo TAtomPDB) que contendrán campos relativos a la identificación de cada átomo, residuo y subunidad a la que pertenece, coordenadas cristalográficas (a la que asignaremos un tipo TPunto), etc. La función se empleará en las sucesivas aplicaciones para interaccionar con los ficheros de estructura.
Dentro de la librería Biotools hemos creado una función denominada ‘CargarPDB’:
Esta función es capaz de leer un fichero entrante con
formato *.pdb donde este parámetro de estrada será de tipo TStrings, compuesto
por el conjunto de líneas con la información de la proteína, y almacenarlo en
una estructura matricial de tipo TPDB, de forma que la proteína podrá ser leída
y utilizada por las posteriores aplicaciones que creemos. Hemos definido una
variable 'p' en la cláusula ‘var’ que recoge la información de salida en
tipo TPDB y otra denominada 'línea' en la que se almacenarán las distintas
líneas de mi fichero *.pdb.
Esta función me va a permitir crear dos estructuras que
recojan información esencial de la proteína:
El tipo TPDB contiene los campos más relevantes del
archivo PDB:
- Header, que incluirá el
cabecero de la proteína.
- Atm, donde crearé un vector
dinámico que incluya todos los átomos de la proteína, con una entrada de tipo
TAtomPDB (se explicará a continuación).
- Res.
- Sub.
- Atomindex, que será una
matriz abierta que se refiere al índice del átomo, donde el subíndice será el
número del átomo y el contenido el número de la ficha en que se encuentre ese
átomo.
- NumFichas, que me permitirá
contabilizar los átomos que realmente existan, ya que hay ocasiones en que
algunos no se contabilizan por no tener la información suficiente.
- NumResiduos.
- NumSubunidades.
El tipo TAtomPDB me permitirá hacer un registro que
describa al átomo en el fichero PDB. Las variables que tendrá serán:
- NumAtom (será
preferible definirlo como entero en lugar de como string por si deseo trabajar
con él).
- ID.
- Residuo.
- Subunidad, de tipo char ya
que siempre será de 1 letra.
- NumResiduo.
- Ftemp, donde se recoge el
factor temperatura asociado al átomo.
- Coor, de tipo TPunto, en
que se incluyen las coordenadas X, Y y Z de cada átomo.
- AltLoc, de tipo char y se refiere a la información sobre la localización alternativa de la proteína.
Posteriormente, volviendo a la función ‘CargarPDB’, he de
crear 3 arrays vacíos que van a recoger la información estructural de los
átomos, residuos y subunidades de la proteína. Debido a que no conozco la
longitud exacta de estos vectores estableceré arrays dinámicos fijando un
máximo que no pueda ser superado, que será estableciendo como longitud el
número total de líneas del fichero (más adelante fijaré el tamaño real). A
continuación hay un bucle que comenzará cuando se encuentre la palabra ‘ATOM’,
ya que como característica de los formatos *.pdb la información de cada átomo
viene precedida de esta palabra. Entonces, mediante 3 bucles anidados rellenaré
el array de los átomos y, dentro de cada átomo, el de los residuos y, dentro de
cada residuo, el que contiene la información de las subunidades.
El resto de las líneas de la función sirven para otras aplicaciones que crearemos más adelante.
Comentarios
Publicar un comentario