diff --git a/README.md b/README.md index be2c69d..a35b483 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,23 @@ -# 3D_DNA +# Modelo 3D do DNA com Biopython e PyOpenGL -Modelo 3D do DNA utilizando as bibliotecas Biopython e PyOpenGL para criar uma representação gráfica do elemento em questão +Este projeto consiste em utilizar as bibliotecas Biopython e PyOpenGL para criar um modelo em 3D do DNA. + +## Pré-requisitos + +Antes de executar o projeto, é necessário instalar as bibliotecas Biopython e PyOpenGL. Você pode fazer isso através dos seguintes comandos: + + pip install biopython + pip install PyOpenGL + pip install PyOpenGL_accelerate + +Além disso, é importante ter um conhecimento básico em Biologia Molecular e programação em Python. + +## Utilização + +Para utilizar o modelo 3D do DNA, execute o arquivo `dna_model.py` através do terminal ou de um ambiente de desenvolvimento Python. O modelo será exibido em uma janela gráfica. + +Caso deseje mudar as configurações do modelo, como a posição do observador e o zoom, altere os valores das constantes no início do arquivo `dna_model.py`. + +## Licença + +Este projeto está licenciado sob a licença \[MIT]. Leia o arquivo LICENSE para mais detalhes. diff --git a/dna.py b/dna.py deleted file mode 100644 index 60e6b7e..0000000 --- a/dna.py +++ /dev/null @@ -1,53 +0,0 @@ -import numpy as np -from Bio.PDB import PDBParser -from OpenGL.GL import * -from OpenGL.GLUT import * -from OpenGL.GLU import * - -def load_dna_structure(pdb_file): - parser = PDBParser(QUIET=True) - structure = parser.get_structure('DNA', pdb_file) - model = structure[0] - return model - -# Inicializando a janela OpenGL -def draw_dna_model(model): - glutInit() - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) - glutCreateWindow("Representação do DNA humano") - - # Inicializando a renderização da janela - def render(): - glClear(GL_COLOR_BUFFER_CLEAR) - glRotatef(1, 3, 1, 1) - - glLineWidth(2.0) - glBegin(GL_LINES) - for chain in model.get_chains(): - for residue in chain: - for atom in residue: - if atom.get_name() == "p": - x, y, z = atom.get_coord() - glVertex3f(x, y, z) - glEnd() - glFlush() - - # Inicializando a matriz de projeção - glMatrixMode(GL_PROJECTION) - glLoadIdentity() - gluPerspective(45, (800 / 600), 1, 50) - - # Definindo a posição do observador - glMatrixMode(GL_MODELVIEW) - glLoadIdentity() - gluLookAt(0, 0, -15, 0, 0, 0, 0, 1, 0) - - # Iniciando o loop de renderização - glutDisplayFunc(render) - glutIdleFunc(render) - glutMainLoop() - -if __name__ == "__main__": - # Substituindo "dna.pdb" pelo caminho do arquivo PDB que contém a estrutura do DNA - dna_structure = load_dna_structure("dna.pdb") - draw_dna_model(dna_structure) \ No newline at end of file diff --git a/test/dna-test.py b/test/dna-test.py new file mode 100644 index 0000000..bac4c7b --- /dev/null +++ b/test/dna-test.py @@ -0,0 +1,36 @@ +import numpy as np +from Bio.PDB import PDBParser +from OpenGL.GL import * +from OpenGL.GLUT import * +from OpenGL.GLU import * + +# Definindo as conts para visualização (janela/camera) +WINDOW_TITLE = "DNA Humano" +WINDOW_WIDTH = 800 +WINDOW_HEIGHT = 600 +FOV = 45 +NEAR = 1 +FAR = 50 +CAMERA_POS = (0, 0, -15) +CAMERA_TARGET = (0, 0, 0) +CAMERA_UP = (0, 1, 0) + +# Definindo uma função para carregar a estrutura do DNA a partir de um arquivo PDB +def load_dna_structure(pdb_file): + parser = PDBParser(QUIET=True) + structure = parser.get_structure('DNA', pdb_file) + model = structure[0] + return model + +# Definindo uma função para desenhar a estrutura do DNA usando linhas +def draw_dna_model(model): + glLineWidth(2.0) + glBegin(GL_LINE) + for chain in model.get_chains(): + for residue in chain: + for atom in residue: + if atom.get_name() == "p": + x, y, z = atom.get_coord() + glVertex3f(x, y, z) + glEnd() +