except that haddock expects the new PDB format for nucleotides which has three letter notations like ADE, GUA, CYT, THY.
Well, if that's indeed the case, HADDOCK is
not using the new PDB format as documented in "
Remediation of the protein data bank archive". Specifically, DNA residues now should be named DA, DC, DG, and DT, as shown in an example (
355d) below:
ATOM 26 C2' DG A 2 22.447 27.195 19.590 1.00 10.31 C
ATOM 27 C1' DG A 2 21.722 26.527 20.744 1.00 8.31 C
ATOM 28 N9 DG A 2 20.293 26.737 20.884 1.00 6.86 N
ATOM 29 C8 DG A 2 19.536 27.799 20.464 1.00 7.02 C
3DNA generated nucleic acid structures (including
fiber) do not follow
strictly the PDB guideline, which seems having not caused any practical problems. As a rule, I do not tailor core 3DNA to any specific third-party tool. For background information, please see my blog post "
PDB format, how many variants are there?".
That said, you may easily write up a format-converting script to fit your needs. In 3DNA v2.1beta, the
perl_scripts/ directory contains a
simple script named
x3dna2charmm_pdb that converts DNA residue names from one-letter to three. It is enclosed below for reference, and you are welcome to customize it (especially the
two lines in red).
Let us know how it goes.
Xiang-Jun
------------------------------------------------------------------------------------------------
#!/usr/bin/env perl
use strict;
use warnings;
## This is utility Perl script for converting 3DNA generated PDB file
## to that accepted by CHARMM. Initially written in response to a
## request from a 3DNA user.
## Please note that this script may not be that sophisticated, since I
## know little about the specifications of the CHARMM PDB format.
## Please let me know if you find any bug in it.
die "Usage: $0 3DNA_generated_PDB converted_PDB\n" unless @ARGV == 2;
my $x3dna_pdb = $ARGV[0];
my $charmm_pdb = $ARGV[1];
open( FH, "$x3dna_pdb" ) || die "Can't open <$x3dna_pdb> for reading: $!\n";
open( FO, ">$charmm_pdb" ) || die "Can't open <$charmm_pdb> for writing: $!\n";
while (<FH>) {
if (/^ATOM/) {
chomp;
# expand this list as necessary ...
my %one2three = (
' A' => 'ADE',
' C' => 'CYT',
' G' => 'GUA',
' T' => 'THY'
);
my $residue = substr( $_, 17, 3 );
substr( $_, 17, 3 ) = $one2three{$residue}
if ( exists $one2three{$residue} );
my $chainID = substr( $_, 21, 1 );
substr( $_, 21, 1 ) = ' ';
substr( $_, 54, 18 ) = ' 0.00 0.00 ';
substr( $_, 72, 1 ) = $chainID;
print FO "$_\n";
} else {
print FO;
}
}
close(FH);
close(FO);
=for example
Sample CHARMM PDB file:
ATOM 27 H2' ADE 1 -3.643 6.134 3.867 0.00 0.00 A
ATOM 28 C3' ADE 1 -4.155 7.022 5.806 0.00 0.00 A
ATOM 29 H3' ADE 1 -5.203 7.382 5.738 0.00 0.00 A
ATOM 30 O3' ADE 1 -3.256 8.063 5.448 0.00 0.00 A
ATOM 31 P THY 2 -3.070 8.432 3.902 0.00 0.00 A
ATOM 32 O1P THY 2 -4.195 7.871 3.120 0.00 0.00 A
ATOM 33 O2P THY 2 -2.853 9.889 3.761 0.00 0.00 A
ATOM 34 O5' THY 2 -1.722 7.646 3.549 0.00 0.00 A
Sample 3DNA generated PDB file:
ATOM 50 O3' C A 3 -7.224 -1.903 7.585
ATOM 51 C2' C A 3 -6.408 0.308 8.023
ATOM 52 C1' C A 3 -5.322 0.045 6.986
ATOM 53 N1 C A 3 -4.202 0.995 7.051
Transformed file:
ATOM 50 O3' CYT 3 -7.224 -1.903 7.585 0.00 0.00 A
ATOM 51 C2' CYT 3 -6.408 0.308 8.023 0.00 0.00 A
ATOM 52 C1' CYT 3 -5.322 0.045 6.986 0.00 0.00 A
ATOM 53 N1 CYT 3 -4.202 0.995 7.051 0.00 0.00 A
=cut
------------------------------------------------------------------------------------------------