Re: [f2py] Character Arrays FROM Common Block

Kevin Manross <[email protected]> Fri, 07 Sep 2012 10:57:02 -0600
Newsgroups gmane.comp.python.f2py.user
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--===============0616971707822881695==
Content-Type: multipart/alternative;
 boundary="------------050808080408000201090409"

This is a multi-part message in MIME format.
--------------050808080408000201090409
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit


Thanks for the reply Tim!

I've written one myself, though I'm still testing it for 
"generic-ness".  I'll post it if/when I get it hammered out and tested 
fairly well.

I was hoping there might be a more fundamental way of handling character 
arrays from FORTRAN into python.

Thanks again!

-kevin.


On 9/7/12 10:45 AM, Tim-DRS wrote:
> I had to write my own parser.
> Don't have it handy at the moment.
> I didn't write generically enough to drop immediately into your code, 
> but it was flexible.
>
> Tim
>
> Sent from my iPod
>
> On Sep 6, 2012, at 2:15 PM, Kevin Manross <[email protected] 
> <mailto:[email protected]>> wrote:
>
>>
>> Greetings!
>>
>> I have been enjoying learning to use f2py as a relative novice in 
>> both Python and FORTRAN.
>>
>> I have been working on wrapping the NOAA NCEP BUFRLIB library 
>> <http://www.nco.ncep.noaa.gov/sib/decoders/BUFRLIB/> to make the I/O 
>> more user friendly, to take advantage of the many efficient packages 
>> available in Python, and to translate the data into other data 
>> formats (such as netCDF).
>>
>> I have been successful in wrapping the library in order to use the 
>> subroutines, but to have greater flexibility I need to access the 
>> common block data.  I can access it, and am trying to work through 
>> the FORTRAN column-order issues between the respective arrays.  The 
>> one area that I'm really stuck on is trying to extract character 
>> arrays in proper order.
>>
>> I have an example of the issue I'm running into:
>>
>> ============= FORTRAN File ===============
>>
>> C     FILE: CHARTEST.F
>>       SUBROUTINE FOO()
>> C
>> C     ABSTRACT: Test character arrays when using with F2PY. Problem 
>> is in
>> C               FORTRAN column-order, character arrays get all messed 
>> up.
>> C               Hope to learn a way around this
>> C
>> C     INPUTS:   None
>> C     OUTPUTS:  STROUT - character array
>> C
>> C
>>       COMMON /TEST/   STROUT(20)
>>       CHARACTER*3   STROUT
>>
>>       STROUT(1) = 'ABC'
>>       STROUT(2) = 'DEF'
>>       STROUT(3) = 'GHI'
>>       STROUT(4) = 'JKL'
>>       STROUT(5) = 'MNO'
>>       STROUT(6) = 'PQR'
>>       STROUT(7) = 'STU'
>>       STROUT(8) = 'VWX'
>>       STROUT(9) = 'YZ'
>>
>>       END
>>
>>
>>
>> ========== Python Script  =================
>>
>> #!/usr/bin/env python
>>
>> import chartest
>>
>> chartest.foo()
>> print chartest.test.strout
>>
>>
>>
>>
>> So while I need to get the array elements back out in the order that 
>> they are entered (I.e., 'ABC') the output I get is:
>>
>> % ./test_chartest.py
>> [['A' 'U' '']
>>  ['B' 'V' '']
>>  ['C' 'W' '']
>>  ['D' 'X' '']
>>  ['E' 'Y' '']
>>  ['F' 'Z' '']
>>  ['G' ' ' '']
>>  ['H' '' '']
>>  ['I' '' '']
>>  ['J' '' '']
>>  ['K' '' '']
>>  ['L' '' '']
>>  ['M' '' '']
>>  ['N' '' '']
>>  ['O' '' '']
>>  ['P' '' '']
>>  ['Q' '' '']
>>  ['R' '' '']
>>  ['S' '' '']
>>  ['T' '' '']]
>>
>> I've been playing with Numpy's myriad of array manipulation, but with 
>> no success thus far.
>>
>> Is there a "built-in" way around this reordering of character arrays, 
>> or will I need to create my own parser for this?
>>
>> Many thanks for any input!
>>
>> -kevin.
>>
>>
>> -- 
>> Kevin Manross
>> NCAR/CISL/Data Support Section
>> Phone: (303)-497-1218
>> Email:[email protected] <mailto:[email protected]>
>> Web:http://dss.ucar.edu
>> _______________________________________________
>> f2py-users mailing list
>> f2py-users-Y4l6ocDipWCuvFJfX82//[email protected] <mailto:f2py-users-Y4l6ocDipWCuvFJfX82//[email protected]>
>> http://cens.ioc.ee/mailman/listinfo/f2py-users
>
>
> _______________________________________________
> f2py-users mailing list
> f2py-users-Y4l6ocDipWCuvFJfX82//[email protected]
> http://cens.ioc.ee/mailman/listinfo/f2py-users

-- 
Kevin Manross
NCAR/CISL/Data Support Section
Phone: (303)-497-1218
Email:[email protected] <mailto:[email protected]>
Web:http://rda.ucar.edu

--------------050808080408000201090409
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    Thanks for the reply Tim!<br>
    <br>
    I've written one myself, though I'm still testing it for
    "generic-ness".&nbsp; I'll post it if/when I get it hammered out and
    tested fairly well.<br>
    <br>
    I was hoping there might be a more fundamental way of handling
    character arrays from FORTRAN into python.<br>
    <br>
    Thanks again!<br>
    <br>
    -kevin.<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 9/7/12 10:45 AM, Tim-DRS wrote:<br>
    </div>
    <blockquote
      cite="mid:599ED85F-F9D7-477E-9951-40FD2436FDEF-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org"
      type="cite">
      <div>I had to write my own parser.</div>
      <div>Don't have it handy at the moment.</div>
      <div>I didn't write generically enough to drop immediately into
        your code, but it was flexible.</div>
      <div><br>
      </div>
      <div>Tim<br>
        <br>
        Sent from my iPod</div>
      <div><br>
        On Sep 6, 2012, at 2:15 PM, Kevin Manross &lt;<a
          moz-do-not-send="true" href="mailto:[email protected]">[email protected]</a>&gt;
        wrote:<br>
        <br>
      </div>
      <blockquote type="cite">
        <div>
          <meta http-equiv="content-type" content="text/html;
            charset=ISO-8859-1">
          <br>
          Greetings!<br>
          <br>
          I have been enjoying learning to use f2py as a relative novice
          in both Python and FORTRAN.<br>
          <br>
          I have been working on wrapping the NOAA NCEP BUFRLIB library
          <a moz-do-not-send="true" class="moz-txt-link-rfc2396E"
            href="http://www.nco.ncep.noaa.gov/sib/decoders/BUFRLIB/">&lt;http://www.nco.ncep.noaa.gov/sib/decoders/BUFRLIB/&gt;</a>
          to make the I/O more user friendly, to take advantage of the
          many efficient packages available in Python, and to translate
          the data into other data formats (such as netCDF).<br>
          <br>
          I have been successful in wrapping the library in order to use
          the subroutines, but to have greater flexibility I need to
          access the common block data.&nbsp; I can access it, and am trying
          to work through the FORTRAN column-order issues between the
          respective arrays.&nbsp; The one area that I'm really stuck on is
          trying to extract character arrays in proper order.<br>
          <br>
          I have an example of the issue I'm running into:<br>
          <br>
          ============= FORTRAN File ===============<br>
          <br>
          C&nbsp;&nbsp;&nbsp;&nbsp; FILE: CHARTEST.F<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUBROUTINE FOO()<br>
          C<br>
          C&nbsp;&nbsp;&nbsp;&nbsp; ABSTRACT: Test character arrays when using with F2PY.
          Problem is in <br>
          C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FORTRAN column-order, character arrays get all
          messed up. <br>
          C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hope to learn a way around this<br>
          C<br>
          C&nbsp;&nbsp;&nbsp;&nbsp; INPUTS:&nbsp;&nbsp; None<br>
          C&nbsp;&nbsp;&nbsp;&nbsp; OUTPUTS:&nbsp; STROUT - character array<br>
          C<br>
          C<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMMON /TEST/&nbsp;&nbsp; STROUT(20)<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CHARACTER*3&nbsp;&nbsp; STROUT<br>
          <br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STROUT(1) = 'ABC'<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STROUT(2) = 'DEF'<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STROUT(3) = 'GHI'<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STROUT(4) = 'JKL'<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STROUT(5) = 'MNO'<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STROUT(6) = 'PQR'<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STROUT(7) = 'STU'<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STROUT(8) = 'VWX'<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STROUT(9) = 'YZ'<br>
          <br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END<br>
          <br>
          <br>
          <br>
          ========== Python Script&nbsp; =================<br>
          <br>
          #!/usr/bin/env python<br>
          <br>
          import chartest<br>
          <br>
          chartest.foo()<br>
          print chartest.test.strout<br>
          <br>
          <br>
          <br>
          <br>
          So while I need to get the array elements back out in the
          order that they are entered (I.e., 'ABC') the output I get is:<br>
          <br>
          % ./test_chartest.py<br>
          [['A' 'U' '']<br>
          &nbsp;['B' 'V' '']<br>
          &nbsp;['C' 'W' '']<br>
          &nbsp;['D' 'X' '']<br>
          &nbsp;['E' 'Y' '']<br>
          &nbsp;['F' 'Z' '']<br>
          &nbsp;['G' ' ' '']<br>
          &nbsp;['H' '' '']<br>
          &nbsp;['I' '' '']<br>
          &nbsp;['J' '' '']<br>
          &nbsp;['K' '' '']<br>
          &nbsp;['L' '' '']<br>
          &nbsp;['M' '' '']<br>
          &nbsp;['N' '' '']<br>
          &nbsp;['O' '' '']<br>
          &nbsp;['P' '' '']<br>
          &nbsp;['Q' '' '']<br>
          &nbsp;['R' '' '']<br>
          &nbsp;['S' '' '']<br>
          &nbsp;['T' '' '']]<br>
          <br>
          I've been playing with Numpy's myriad of array manipulation,
          but with no success thus far.<br>
          <br>
          Is there a "built-in" way around this reordering of character
          arrays, or will I need to create my own parser for this?<br>
          <br>
          Many thanks for any input!<br>
          <br>
          -kevin.<br>
          <br>
          <br>
          <div class="moz-signature">-- <br>
            Kevin Manross<br>
            NCAR/CISL/Data Support Section<br>
            Phone: (303)-497-1218<br>
            Email:<a moz-do-not-send="true"
              href="mailto:[email protected]">[email protected]</a><br>
            Web:<a moz-do-not-send="true" href="http://dss.ucar.edu">http://dss.ucar.edu</a><br>
          </div>
        </div>
      </blockquote>
      <blockquote type="cite">
        <div><span>_______________________________________________</span><br>
          <span>f2py-users mailing list</span><br>
          <span><a moz-do-not-send="true"
              href="mailto:f2py-users-Y4l6ocDipWCuvFJfX82//[email protected]">f2py-users-Y4l6ocDipWCuvFJfX82//[email protected]</a></span><br>
          <span><a moz-do-not-send="true"
              href="http://cens.ioc.ee/mailman/listinfo/f2py-users">http://cens.ioc.ee/mailman/listinfo/f2py-users</a></span><br>
        </div>
      </blockquote>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
f2py-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:f2py-users-Y4l6ocDipWCuvFJfX82//[email protected]">f2py-users-Y4l6ocDipWCuvFJfX82//[email protected]</a>
<a class="moz-txt-link-freetext" href="http://cens.ioc.ee/mailman/listinfo/f2py-users">http://cens.ioc.ee/mailman/listinfo/f2py-users</a>
</pre>
    </blockquote>
    <br>
    <div class="moz-signature">-- <br>
      Kevin Manross<br>
      NCAR/CISL/Data Support Section<br>
      Phone: (303)-497-1218<br>
      Email:<a href="mailto:[email protected]">[email protected]</a><br>
      Web:<a href="http://rda.ucar.edu">http://rda.ucar.edu</a><br>
    </div>
  </body>
</html>

--------------050808080408000201090409--


--===============0616971707822881695==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
f2py-users mailing list
f2py-users-Y4l6ocDipWCuvFJfX82//[email protected]
http://cens.ioc.ee/mailman/listinfo/f2py-users

--===============0616971707822881695==--