#!/usr/bin/python
import os,sys
from program import program
import common

class pdbcur(program):
  name="PDBCUR"
  binary="pdbcur"
  never_merge=True
  ccp4_parsing=True
  stat={}
  stat['atoms_deleted'] = common.stats(name='list of number of atoms deleted', multiple=True,
            regexp=r"(\S+)\s+atoms were deleted.")
  stat['chain_ids'] = common.stats(name='list of all chain IDs in the input pdb file', multiple=True,
            regexp=r"Chain \"(\S+)\" has \d+ residues, of which", convert=False)


  def Init(self):
    self.outfilename = { 'pdb': self.name+'.pdb' }

  def TreatInput(self):
    self.mdl = self.inp.Get('model',filetype='pdb')
    if not self.mdl:
      common.Error('No model supplied for {0}.'.format(self.name))
    self.SetArg('xyzin', self.mdl.GetFileName('pdb'))

  def DefineOutput(self):
    # the typ and atomtypes could change in principle; for the moment just this simplistic implementation
    newmdl=self.out.AddCopy(self.mdl)
    self.out.SetFileToChild(newmdl, self.outfilename['pdb'], 'pdb')

  def TreatOutput(self):
    self.SetArg('xyzout', self.out.Get('model').GetFileName('pdb'))
