Thanks for the immediate response! On Dec 12, 2007 5:57 PM, John Fouhy <[EMAIL PROTECTED]> wrote:
> On 13/12/2007, Bryan Fodness <[EMAIL PROTECTED]> wrote: > > I am new to doing anything like this. I have looked at > > http://www.leadtools.com/SDK/Medical/DICOM/ltdc1.htm and am > > not sure how to proceed. > > I haven't much experience here, but this is how I'd proceed, I think: > > 1. Start by reading the file. It's binary data (I guess) so there's > no point in reading lines.: > rawData = open('file.dcm', 'rb').read() > > 2. Write a function to parse the preamble: > > def parsePreamble(data): > preamble = data[:128] > dicm = data[128:132] > > # you might need to read up on encodings and things to make sure > this test is valid > if dicm == 'DICM': > return preamble, 132 > else: > raise NotAPreambleException > > 3. Write functions to parse data elements. The functions are going to > try to parse a data element starting at a particular position, and if > successful, return the position of the end of the element. > > def parseDataelement(data, start): > # do stuff -- the web page you linked didn't have enough information > here > return element, pos > > 4. Parse the whole thing; > > def parseDICOM(data): > elements = [] > try: > preamble, next = parsePreamble(data) > except NotAPreambleException: > preamble, next = None, 0 > > while True: > element, next = parseDataElement(data, next) > elements.append(element) > # you will need some way of breaking out of this loop, either by > checking the structure of > # element for an end condition, or by parseDataElement raising > an exception. > > return elements # and maybe preamble too if you want it > > HTH! > -- "The game of science can accurately be described as a never-ending insult to human intelligence." - João Magueijo
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor