Thank you both for your responses. I was using the mzXML 2.1 tutorial as a guide to extract inflated peak list, the only difference being that I was unpacking onto an unsigned quad value rather then an unsigned 32-bit value in network order (when I did use N* as opposed to Q*, my peak array was twice as long as it should have been).
I then tried to pack $bin_peaks[0] onto "V" (unsigned 32-bit little-endian order, i.e. VAX) as well as "Q<" (unsigned 64-bit little-endian) but still ended up with identical negative values. Is there some other template or method to reverse byte order? Or is there some other mistake in my code that I am just not seeing. I am open to all suggestions. On Monday, March 25, 2013 9:17:33 PM UTC-4, Jimmy Eng wrote: > > Take a look at the example Perl code in appendix B.1 of this document: > > > http://sashimi.sourceforge.net/schema_revision/mzXML_2.1/Doc/mzXML_2.1_tutorial.pdf > > Are you possibly missing a conversion from network (big endian) to host > (little endian) byte order? > > > On Mon, Mar 25, 2013 at 2:55 PM, Chris McKennan > <[email protected]<javascript:> > > wrote: > >> I have been trying to extract MS1 peak information from an mzXML and am >> having a lot of trouble retrieving appropriate values. I have a general >> idea of the process one needs to take to read zlib compressed peak lists >> (decode the zlib compressed string -> inflate the binary string -> unpack >> the binary data as a floating point number) but cannot seem to execute it. >> >> I have written the following perl script to read a peak list given by >> $data (I am working on a 64-bit computer with 64-bit compression precision): >> >> #! usr/bin/perl -w >> use strict; >> use Compress::Zlib; >> use MIME::Base64; >> >> my $data = "%CompressedList%"; >> my $comp_bin_spec = decode_base64($data); >> >> my ($i, $status) = inflateInit(-Bufsize => 4096); >> >> my $out; >> ($out, $status) = $i -> inflate($comp_bin_spec); >> >> my @bin_peaks = unpack("Q*", $out); >> >> my $spec = unpack("f", pack("I", >> $bin_peaks[0])); ####Packs to an Integer >> and then unpacks as a floating point >> print $spec; >> >> >> This script returns the vector @bin_peaks with the appropriate number of >> entries, but the code must contain an error because I retrieve negative >> values when I convert its entries to floats. Does anybody have an idea >> about where the problem might lie (I think it most likely lies in the >> second to last line, but I can't seem to find any other appropriate >> templates to pack $bin_peaks[0] onto before unpacking it as a floating >> point)? >> >> Thanks in advance, >> Chris >> >> >> >> CompressedList = >> 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 >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "spctools-discuss" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to >> [email protected]<javascript:> >> . >> Visit this group at http://groups.google.com/group/spctools-discuss?hl=en >> . >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > -- You received this message because you are subscribed to the Google Groups "spctools-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/spctools-discuss?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
