2010-04-23 1 views
0

Je suis nouveau sur python. Je dois créer un programme pour un projet qui prend un fichier au format PDB en entrée et retourne une liste de toutes les paires de charges intra-chaînes et inter-chaînes et leurs énergies (en utilisant la loi de Coulomb en supposant une constante diélectrique de () de 40.0). Pour simplifier, les résidus chargés pour ce programme sont juste Arg (CZ), Lys (NZ), Asp (CG) et Glu (CD) avec les atomes portant la charge pour chacun indiqué entre parenthèses. Le programme doit signaler toute interaction attrayante ou répulsive au sein de 8,0 Å.Python: besoin d'obtenir des énergies de paires de charges

Voici quelques informations supplémentaires nécessaires pour le programme.

Eij = energy of interaction between atoms i and j in kilocalories/mole (kcals/mol) 
qi = charge for atom i (+1 for Lys or Arg, -1 for Glu or Asp) 
rij = distance between atoms i and j in angstroms using the distance formula 

La sortie doit respecter le format suivant:

First residue : Second residue Distance   Energy 
Lys 10 Chain A: ASP 46 Chain A D= 4.76 ang E= -2.32 kcals/mol 

(Pour une raison quelconque, je ne peux pas organiser les deux premières lignes, mais la première ligne doit être des étiquettes et en dessous les valeurs correspondantes Je n'ai vraiment aucune idée de la façon de résoudre ce problème, toute aide est grandement appréciée. J'espère que c'est le bon endroit à demander. Merci d'avance.

utilisant python 2,5

+0

Un meilleur endroit à demander serait le réseau psychique ;-) S'il vous plaît ajouter des détails, extrait de code, etc., afin que l'on peut effectivement vous aider. – mjv

Répondre

2

Où exactement est votre problème? Votre description est beaucoup trop générale.

L'idée générale est la suivante:

  • Chargez le fichier PDB et analyser chaque ligne.
  • Cela vous donnera une liste d'atomes et leur (x, y, z) positions.
  • Effectuez une itération sur la liste dans une boucle imbriquée pour comparer chaque atome entre eux.
  • Calculez la distance de la paire d'atomes.
  • Si leur distance est inférieure à 8,0 Å, calculer leurs charges.
+0

Salut Konrad, Désolé si je n'étais pas assez clair. Fondamentalement, je dois écrire un code python qui est capable de faire les choses que vous venez de résumer.Je dois ensuite utiliser ce programme sur deux fichiers, l'un contenant le tétramère oxy-hémoglobine et l'autre contenant le tétramère désoxy-hémoglobine. Pour chaque fichier, je dois générer des fichiers avec les interactions intra-chaîne et inter-chaîne dans les tétramères oxy/désoxy-hémoglobine et les analyser moi-même. Mon problème est que je ne sais pas comment écrire ceci en code python. – Two786

+0

@ Two786: Ok, mais avez-vous même essayé de faire ce genre de choses? – Kredns

+0

En toute honnêteté, oui, j'ai regardé l'écran de l'interface graphique python depuis longtemps et tout ce que j'ai eu était input = open ("file.pdb", 'r') et je ne sais pas quoi faire ensuite. J'ai été "googler" pour voir si je pourrais trouver un problème similaire quelque part comme un guide pour que cela commence aussi mais pas de chance. – Two786

1

Avez-vous regardé des solutions déjà faites?

http://biopython.org/wiki/Biopython

http://pymmlib.sourceforge.net/

si vous voulez rouler votre propre, vous avez l'outil analyseur format de base de données (ce qui est trivial). Ensuite, quelque chose comme cette structure en supposant est en atomes (je sais que ce n'est pas ce que vous après, mais peut-être cela donnera l'idée comment le faire):

for i in range(len(atoms)): 
    for j in range(i): 
     r = distance(i,j) 
     if r < 8: Q += (atoms[i].q * atoms[j].q)/r 

cependant, vous devez être prudent avec hydrogènes souvent, ils ne sont pas fournis explicitement, en particulier avec des données RMN

+0

Merci, je vais jeter un oeil sur les sites. Peut-être, si quelqu'un peut suggérer une structure générale de ce à quoi le programme devrait ressembler, cela pourrait m'aider à me concentrer sur ce point par coup. – Two786

+0

@ Two786 pour commencer, essayez de suivre, en utilisant l'entrée que vous avez obtenu à partir de: 'pour la chaîne dans l'entrée: print string.split()'. quelque part j'ai écrit l'analyseur il y a longtemps, si je le trouve, je l'afficherai. – Anycorn

Questions connexes