Je génère des coordonnées 3D (x, y, z) dans un fichier avec le code suivant.Impression au format prédéfini Perl
for (my $x = 0.000; $x < 4.200; $x += 1.400) {
for (my $y = 0.000; $y < 4.200; $y += 1.400) {
for (my $z = 0.000; $z < 4.200; $z += 1.400) {
push @arr_grid, "$x $y $z\n";
}
}
}
foreach (@arr_grid) {
say "HETATM 1 O HOH 1 $_ O";
}
Maintenant, mon problème est que je veux obtenir la sortie avec un format précis (APB) avec des valeurs d'index comme,
1-6 7-11 13-16 18-20 23-26 31-38 39-46 47-54 77-78
(Name) (S.No) (x) (y) (z)
HETATM 1 O HOH 1 -8.863 16.944 14.289 N
HETATM 100 O HOH 16 -15.352 11.525 5.325 N
HETATM 117 O HOH 16 -12.954 9.717 5.182 C
HETATM 126 O HOH 17 -19.225 11.667 -0.391 C
HETATM 1005 O HOH 97 9.246 23.287 11.503 O
Voici les x, y, z shoulb être des données type réel (8.2) et d'autres sont justifiés à droite. Les valeurs x, y, z ne sont pas celles générées par le programme. J'ai placé des valeurs arbitraires. Aidez-moi, s'il vous plaît.
Je ne comprends pas votre question. Perl n'est pas un langage strictement typé, donc il n'a pas nativement un concept de "type de données réel". –
@JackManey, que je veux obtenir la sortie comme je l'ai montré, j'ai mentionné les valeurs d'index sur la première ligne, je n'ai pas besoin de deux premières lignes en sortie. juste pour faire comprendre, j'ai écrit les deux premières lignes. – gthm
Il existe quelques modules perl qui lisent/écrivent des fichiers PDB. Jetez un oeil à https://metacpan.org/module/Chemistry::File::PDB – JRideout