Renumbering
bearophileHUGS at lycos.com
bearophileHUGS at lycos.com
Tue Sep 2 17:36:16 EDT 2008
Francesco Pietra, few notes:
- In Python and C item numbering generally starts from 0, so you talk
about column 0, 1, etc.
- You can also use the Italian Python newsgroup if know Italian.
- The number of lines with a particular number doesn't seem important
to solve your problem.
- You don't need to try to set non-proportional characters on usenet.
This is a first try at a solution, you can tell us if it's correct:
data = """\
ATOM 3424 N LEU B 428 143.814 87.271 77.726
1.00115.20 2SG3426
ATOM 3425 CA LEU B 428 142.918 87.524 78.875
1.00115.20 2SG3427
ATOM 3426 CB LEU B 428 141.559 88.057 78.392
1.00115.20 2SG3428
ATOM 3427 CG LEU B 428 140.577 88.341 79.544
1.00115.20 2SG3429
ATOM 3428 CD1 LEU B 428 141.102 89.464 80.454
1.00115.20 2SG3430
ATOM 3429 CD2 LEU B 428 139.159 88.615 79.017
1.00115.20 2SG3431
ATOM 3430 C LEU B 428 142.680 86.253 79.615
1.00115.20 2SG3432
ATOM 3431 O LEU B 428 142.725 86.226 80.842
1.00115.20 2SG3433
ATOM 3432 N SER B 429 142.432 85.155 78.878
1.00134.86 2SG3434
ATOM 3433 CA SER B 429 142.175 83.908 79.534
1.00134.86 2SG3435
ATOM 3434 CB SER B 429 141.666 82.805 78.590
1.00134.86 2SG3436
ATOM 3435 OG SER B 429 140.392 83.155 78.069
1.00134.86 2SG3437
ATOM 3436 C SER B 429 143.451 83.432 80.141
1.00134.86 2SG3438
ATOM 3437 O SER B 429 144.543 83.756 79.676
1.00134.86 2SG3439"""
lines = (line.split() for line in data.splitlines())
for parts in lines:
if parts[4] == "B":
parts[5] = str( int(parts[5]) - 427)
parts[2] = parts[2].ljust(4)
print " ".join(parts)
It prints:
ATOM 3424 N LEU B 1 143.814 87.271 77.726 1.00115.20
2SG3426
ATOM 3425 CA LEU B 1 142.918 87.524 78.875 1.00115.20
2SG3427
ATOM 3426 CB LEU B 1 141.559 88.057 78.392 1.00115.20
2SG3428
ATOM 3427 CG LEU B 1 140.577 88.341 79.544 1.00115.20
2SG3429
ATOM 3428 CD1 LEU B 1 141.102 89.464 80.454 1.00115.20
2SG3430
ATOM 3429 CD2 LEU B 1 139.159 88.615 79.017 1.00115.20
2SG3431
ATOM 3430 C LEU B 1 142.680 86.253 79.615 1.00115.20
2SG3432
ATOM 3431 O LEU B 1 142.725 86.226 80.842 1.00115.20
2SG3433
ATOM 3432 N SER B 2 142.432 85.155 78.878 1.00134.86
2SG3434
ATOM 3433 CA SER B 2 142.175 83.908 79.534 1.00134.86
2SG3435
ATOM 3434 CB SER B 2 141.666 82.805 78.590 1.00134.86
2SG3436
ATOM 3435 OG SER B 2 140.392 83.155 78.069 1.00134.86
2SG3437
ATOM 3436 C SER B 2 143.451 83.432 80.141 1.00134.86
2SG3438
ATOM 3437 O SER B 2 144.543 83.756 79.676 1.00134.86
2SG3439
Your data is probably in a file, so you have to change the first line
of the code:
lines = (line.split() for line in open("namefile.txt"))
If your output file must to hard-coded columns (and generally those
files don't need such property) then you have to make that code of
mine more complex...
Bye,
bearophile
More information about the Python-list
mailing list