Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

#$Id: gridConverter.py 91 2011-02-07 23:01:27Z sarkiss $ 

"""Converts all grids supported by Volume package from MGLTools to VTK XML format.""" 

from Volume.IO.volReaders import ReadMRC, ReadCCP4, ReadCNS, ReadGRD, ReadBRIX,\ 

                                    ReadSPIDER, ReadRawiv, ReadEM, ReadFLDBinary 

from Volume.IO.volWriters import WriteCCP4 

from Volume.IO.UHBDGridReader import UHBDReaderASCII 

from Volume.IO.DelphiReader import DelphiReaderBin 

from Volume.IO.dxReader import ReadDX 

from Volume.IO.AutoGridReader import ReadAutoGrid 

from Volume.IO.gamessOrbitalsReader import ReadGamessOrbitals 

 

from enthought.tvtk.api import tvtk 

 

import sys, re, os 

import numpy 

 

def convertToTVTK(gridFile): 

    reader = None 

    if not os.path.exists(gridFile): 

        print gridFile, " not exists" 

    else: 

        if(re.search('\.mrc$',gridFile,re.I)): 

            reader = ReadMRC() 

        elif(re.search('\.ccp4*$',gridFile,re.I)): 

            reader = ReadCCP4() 

        elif(re.search('\.cns$|\.xplo*r*$',gridFile,re.I)): 

            reader = ReadCNS() 

        elif(re.search('\.grd$',gridFile,re.I)): 

            reader = ReadGRD() 

        elif(re.search('\.fld$',gridFile,re.I)): 

            reader = ReadFLDBinary() 

        elif(re.search('\.map$',gridFile,re.I)): 

            reader = ReadAutoGrid() 

        elif(re.search('\.omap$|\.brix$|\.dsn6$|\.dn6$',gridFile,re.I)): 

            reader = ReadBRIX() 

        elif(re.search('\.rawiv$',gridFile,re.I)): 

            reader = ReadRawiv() 

        elif(re.search('\.d*e*l*phi$',gridFile,re.I)): 

            reader = DelphiReaderBin() 

        elif(re.search('\.uhbd$',gridFile,re.I)): 

            reader = UHBDReaderASCII() 

        elif(re.search('\.dx$',gridFile,re.I)): 

            reader = ReadDX() 

        elif(re.search('\.spi$',gridFile,re.I)): 

            reader = ReadSPIDER() 

    if not reader: 

        print "Error: Unknown file format " + gridFile 

        usage() 

 

    grid3D = reader.read(gridFile, normalize=True) 

    i = tvtk.ImageData(spacing=grid3D.stepSize, origin=grid3D.origin, dimensions=grid3D.data.shape) 

    i.point_data.scalars = numpy.ravel(grid3D.data.copy(),order='F') 

    i.point_data.scalars.name = 'scalars' 

 

    return i 

 

def convert(gridFile): 

    tvtkGrid = convertToTVTK(gridFile) 

    base, ext = os.path.splitext(gridFile) 

    w = tvtk.XMLImageDataWriter(input=tvtkGrid, file_name=base+".xml") 

    w.write() 

 

def usage(): 

    print """ Usage: """ +__file__ +""" input 

     

    List of input files supported:  

     

    * AutoGrid 

    * BRIX/DNS6 

    * CCP4 

    * CNS/XPLORE 

    * Data Explorer(DX) 

    * Delphi     

    * GRD 

    * MRC 

    * Rawiv 

    * SPIDER 

    * UHDB/GRID 

    * AVS/FLD Binary 

     

    Visit http://mgltools.scripps.edu/documentation/tutorial/volume-rendering/introduction 

    for the links to these format descriptions""" 

 

if __name__ == '__main__': 

    if len(sys.argv) < 2: 

        print "Error: No input file\n" 

        usage() 

    else: 

        convert(sys.argv[1])