Hi Gavin,
Thanks for using the 'x3dna_ensemble' Ruby script. I am glad you ask "about the naming conventions" of the output parameters. To address your question, it helps to know how the script works -- it calls 'analyze' for each model/snapshot and then extract the corresponding parameters of double helical structures.
Simply run 'analyze' on a single structure, you'd notice the following section at the very beginning of the .out file:
1. The list of the parameters given below correspond to the 5' to 3' direction
of strand I and 3' to 5' direction of strand II.
2. All angular parameters, except for the phase angle of sugar pseudo-
rotation, are measured in degrees in the range of [-180, +180], and all
displacements are measured in Angstrom units.
Listing strand II parameters in the 3'->5' direction makes its base numbering consistent with base-pairs in a duplex.
So you are right in assuming "that puckering1 refers to the pucker data from strand1 and puckering2 refers to data from strand2. I also assume that column 1 generated by extracting puckering1 refers to base 1 in the 5'->3' direction". However, as noted above, the puckering2 etc parameters are listed in 3'->5' direction.
As a general rule, whenever in doubt with any 3DNA-related issue, check with a concrete example, and do not hesitate to ask on the forum.
Xiang-Jun