<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=windows-1252">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <div class="moz-forward-container"><br>
      <br>
      -------- Forwarded Message --------
      <table class="moz-email-headers-table" cellpadding="0"
        cellspacing="0" border="0">
        <tbody>
          <tr>
            <th valign="BASELINE" align="RIGHT" nowrap="nowrap">Subject:
            </th>
            <td>Re: [Numpy-discussion] Problem with np.savetxt</td>
          </tr>
          <tr>
            <th valign="BASELINE" align="RIGHT" nowrap="nowrap">Date: </th>
            <td>Thu, 10 Oct 2019 10:10:58 -0400</td>
          </tr>
          <tr>
            <th valign="BASELINE" align="RIGHT" nowrap="nowrap">From: </th>
            <td>Stephen P. Molnar <a class="moz-txt-link-rfc2396E" href="mailto:s.molnar@sbcglobal.net"><s.molnar@sbcglobal.net></a></td>
          </tr>
          <tr>
            <th valign="BASELINE" align="RIGHT" nowrap="nowrap">To: </th>
            <td><a class="moz-txt-link-abbreviated" href="mailto:numpy-discussion@python.org">numpy-discussion@python.org</a></td>
          </tr>
        </tbody>
      </table>
      <br>
      <br>
      <pre>I am slowly and not quickly stumbling forward, but at this point my 
degree of mental entropy (confusion) is monumental.

This works:

> import numpy as np
>
> print('${d}')
>
> data = np.genfromtxt("14-7.log", usecols=(1), skip_header=27, 
> skip_footer=1, encoding=None)
>
> print(data)
>
> np.savetxt('14-7.dG', data, fmt='%12.9f', header='14-7')
> print(data)

which produces:

> runfile('/home/comp/Apps/Python/PsoVina/DeltaGTable_V_s.py', 
> wdir='/home/comp/Apps/Python/PsoVina', current_namespace=True)
> ${d}
> [-9.96090267 -8.97950478 -8.94261136 -8.91552301 -8.73650883 -8.66338714
>  -8.41073971 -8.38914635 -8.29679891 -8.16845411 -8.12799082 -8.12710377
>  -7.97909074 -7.94187268 -7.90076621 -7.88148523 -7.83782648 -7.8159095
>  -7.72254029 -7.72034674]
> [-9.96090267 -8.97950478 -8.94261136 -8.91552301 -8.73650883 -8.66338714
>  -8.41073971 -8.38914635 -8.29679891 -8.16845411 -8.12799082 -8.12710377
>  -7.97909074 -7.94187268 -7.90076621 -7.88148523 -7.83782648 -7.8159095
>  -7.72254029 -7.72034674]
Note;  the print statements are for a quick check o the output, which is:

> # 14-7
> -9.960902669
> -8.979504781
> -8.942611364
> -8.915523010
> -8.736508831
> -8.663387139
> -8.410739711
> -8.389146347
> -8.296798909
> -8.168454106
> -8.127990818
> -8.127103774
> -7.979090739
> -7.941872682
> -7.900766215
> -7.881485228
> -7.837826485
> -7.815909505
> -7.722540286
> -7.720346742
 Also, this bash script works:

> #!/bin/bash
>
> # Run.dG.list_1
>
> while IFS= read -r d
> do
>     echo "${d}.log"
>
> done <ligand.list
which returns the three log file names:

> 14-7.log
> 15-7.log
> 18-7.log
> C-VX3.log


But, if I run this bash script:

> #!/bin/bash
>
> # Run.dG.list_1
>
> while IFS= read -r d
> do
>     echo "${d}.log"
>     python3 DeltaGTable_V_sl.py
>
>
> done <ligand.list
>
where DeltaGTable_V_sl.py is:

> import numpy as np
>
> print('${d}')
>
> data = np.genfromtxt('${d}.log', usecols=(1), skip_header=27, 
> skip_footer=1, encoding=None)
> print(data)
>
> np.savetxt('${d}.dG', data, fmt='%12.9f', header='${d}')
> print(data.dG)

I get:

> (base) comp@AbNormal:~/Apps/Python/PsoVina$ sh ./Run.dG.list_1.sh
> 14-7.log
> python3: can't open file 'DeltaGTable_V_sl.py': [Errno 2] No such file 
> or directory
> 15-7.log
> python3: can't open file 'DeltaGTable_V_sl.py': [Errno 2] No such file 
> or directory
> 18-7.log
> python3: can't open file 'DeltaGTable_V_sl.py': [Errno 2] No such file 
> or directory
> C-VX3.log
> python3: can't open file 'DeltaGTable_V_sl.py': [Errno 2] No such file 
> or directory

So, it would appear that the log file labels are in the workspace, but 
'${d}.log' is not being recognized as fname by genfromtxt. Although i 
have googled every combination of terms I can think of I am obviously 
missing something.

As I have potentially hundreds of files to process, I would appreciate 
pointers towards a solution to the problem.

Thanks in advance.

On 10/08/2019 10:49 AM, Stephen P. Molnar wrote:
> Many thanks or your kind replies.
>
> I really appreciate your suggestions.
>
> On 10/08/2019 09:44 AM, Andras Deak wrote:
>> PS. if you just want to specify the width of the fields you wouldn't
>> have to convert anything, because you can specify the size and
>> justification of a %s format. But arguably having float data as floats
>> is more natural anyway.
>>
>> On Tue, Oct 8, 2019 at 3:42 PM Andras Deak <a class="moz-txt-link-rfc2396E" href="mailto:deak.andris@gmail.com"><deak.andris@gmail.com></a> 
>> wrote:
>>> On Tue, Oct 8, 2019 at 3:17 PM Stephen P. Molnar 
>>> <a class="moz-txt-link-rfc2396E" href="mailto:s.molnar@sbcglobal.net"><s.molnar@sbcglobal.net></a> wrote:
>>>> I am embarrassed to be asking this question, but I have exhausted 
>>>> Google
>>>> at this point .
>>>>
>>>> I have a number of identically formatted text files from which I 
>>>> want to
>>>> extract data, as an example (hopefully, putting these in as quotes 
>>>> will
>>>> persevere the format):
>>>>
>>>>> ======================================================================= 
>>>>>
>>>>> PSOVina version 2.0
>>>>> Giotto H. K. Tai & Shirley W. I. Siu
>>>>>
>>>>> Computational Biology and Bioinformatics Lab
>>>>> University of Macau
>>>>>
>>>>> Visit <a class="moz-txt-link-freetext" href="http://cbbio.cis.umac.mo">http://cbbio.cis.umac.mo</a> for more information.
>>>>>
>>>>> PSOVina was developed based on the framework of AutoDock Vina.
>>>>>
>>>>> For more information about Vina, please visit 
>>>>> <a class="moz-txt-link-freetext" href="http://vina.scripps.edu">http://vina.scripps.edu</a>.
>>>>>
>>>>> ======================================================================= 
>>>>>
>>>>>
>>>>> Output will be 13-7_out.pdbqt
>>>>> Reading input ... done.
>>>>> Setting up the scoring function ... done.
>>>>> Analyzing the binding site ... done.
>>>>> Using random seed: 1828390527
>>>>> Performing search ... done.
>>>>>
>>>>> Refining results ... done.
>>>>>
>>>>> mode |   affinity | dist from best mode
>>>>>       | (kcal/mol) | rmsd l.b.| rmsd u.b.
>>>>> -----+------------+----------+----------
>>>>>     1    -8.862004149      0.000      0.000
>>>>>     2    -8.403522829      2.992      6.553
>>>>>     3    -8.401384636      2.707      5.220
>>>>>     4    -7.886402037      4.907      6.862
>>>>>     5    -7.845519031      3.233      5.915
>>>>>     6    -7.837434227      3.954      5.641
>>>>>     7    -7.834584887      3.188      7.294
>>>>>     8    -7.694395765      3.746      7.553
>>>>>     9    -7.691211177      3.536      5.745
>>>>>    10    -7.670759445      3.698      7.587
>>>>>    11    -7.661882758      4.882      7.044
>>>>>    12    -7.636280303      2.347      3.284
>>>>>    13    -7.635788052      3.511      6.250
>>>>>    14    -7.611175249      2.427      3.449
>>>>>    15    -7.586368357      2.142      2.864
>>>>>    16    -7.531307666      2.976      4.980
>>>>>    17    -7.520501084      3.085      5.775
>>>>>    18    -7.512906514      4.220      7.672
>>>>>    19    -7.307403528      3.240      4.354
>>>>>    20    -7.256063348      3.694      7.252
>>>>> Writing output ... done.
>>>>    At this point, my python script consists of only the following:
>>>>
>>>>> #!/usr/bin/env python3
>>>>> # -*- coding: utf-8 -*-
>>>>> """
>>>>>
>>>>> Created on Tue Sep 24 07:51:11 2019
>>>>>
>>>>> """
>>>>> import numpy as np
>>>>>
>>>>> data = []
>>>>>
>>>>> data = np.genfromtxt("13-7.log", usecols=(1), dtype=None,
>>>>> skip_header=27, skip_footer=1, encoding=None)
>>>>>
>>>>> print(data)
>>>>>
>>>>> np.savetxt('13-7', [data], fmt='%15.9f', header='13-7')
>>>> The problem lies in tfe np.savetxt line, on execution I get:
>>>>
>>>>> runfile('/home/comp/Apps/Models/1-PhosphorusLigands/CombinedLigands/MOL/Docking/VINA20/SmallSet/DeltaGTable_V_s.py', 
>>>>>
>>>>> wdir='/home/comp/Apps/Models/1-PhosphorusLigands/CombinedLigands/MOL/Docking/VINA20/SmallSet', 
>>>>>
>>>>> current_namespace=True)
>>>>> ['-8.839713733' '-8.743377250' '-8.151051167' '-8.090452911'
>>>>>   '-7.967494477' '-7.854890056' '-7.757417879' '-7.741557490'
>>>>>   '-7.643885488' '-7.611595767' '-7.507605524' '-7.413920814'
>>>>>   '-7.389408331' '-7.384446364' '-7.374206276' '-7.368808179'
>>>>>   '-7.346641418' '-7.325037898' '-7.309614787' '-7.113209147']
>>>>> Traceback (most recent call last):
>>>>>
>>>>>    File
>>>>> "/home/comp/Apps/Models/1-PhosphorusLigands/CombinedLigands/MOL/Docking/VINA20/SmallSet/DeltaGTable_V_s.py", 
>>>>>
>>>>> line 16, in <module>
>>>>>      np.savetxt('13-7', [data], fmt='%16.9f', header='13-7')
>>>>>
>>>>>    File "<__array_function__ internals>", line 6, in savetxt
>>>>>
>>>>>    File
>>>>> "/home/comp/Apps/Miniconda3/lib/python3.7/site-packages/numpy/lib/npyio.py", 
>>>>>
>>>>> line 1438, in savetxt
>>>>>      % (str(X.dtype), format))
>>>>>
>>>>> TypeError: Mismatch between array dtype ('<U12') and format specifier
>>>>> ('%16.9f %16.9f %16.9f %16.9f %16.9f %16.9f %16.9f %16.9f %16.9f
>>>>> %16.9f %16.9f %16.9f %16.9f %16.9f %16.9f %16.9f %16.9f %16.9f %16.9f
>>>>> %16.9f')
>>>> The data is in the data file, but the only entry in '13-7', the saved
>>>> file, is the label. Obviously, the error is in the format argument.
>>> Hi,
>>>
>>> One problem is the format: the error is telling you that you have
>>> strings in your array (compare the `'<U12'` dtype and the output of
>>> your `print(data)` call with strings inside), whereas %16.9f can only
>>> be used to format floats (f for float). You would first have to
>>> convert your array of strings to an array numbers. I don't usually use
>>> genfromtxt so I'm not sure how you can make it return floats for you
>>> in the first place, but I suspect `dtype=None` in the call to
>>> genfromtxt might be responsible. In any case making it return numbers
>>> should be the easier case.
>>> The second problem is that you should make sure you mean `[data]` in
>>> the call to savetxt. As it is now this would give you a 2d array of
>>> shape (1, 20), and the output would correspondingly contain a single
>>> row of 20 values (hence the 20 instances of '%16.9f' in the error
>>> message). In case you meant to print one value per row in a single
>>> column, you should drop the brackets around `data`:
>>> np.savetxt('13-7', data, fmt='%16.9f', header='13-7')
>>>
>>> And just a personal note, but I'd find an output file named '13-7' to
>>> be a bit surprising. Perhaps some extension or prefix would help
>>> organize these files?
>>> Regards,
>>>
>>> Andr??s
>>>
>>>> Help will be much appreciated.
>>>>
>>>> Thanks in advance.
>>>>
>>>> -- 
>>>> Stephen P. Molnar, Ph.D.
>>>> <a class="moz-txt-link-abbreviated" href="http://www.molecular-modeling.net">www.molecular-modeling.net</a>
>>>> 614.312.7528 (c)
>>>> Skype:  smolnar1
>>>>
>>>> _______________________________________________
>>>> NumPy-Discussion mailing list
>>>> <a class="moz-txt-link-abbreviated" href="mailto:NumPy-Discussion@python.org">NumPy-Discussion@python.org</a>
>>>> <a class="moz-txt-link-freetext" href="https://mail.python.org/mailman/listinfo/numpy-discussion">https://mail.python.org/mailman/listinfo/numpy-discussion</a>
>> _______________________________________________
>> NumPy-Discussion mailing list
>> <a class="moz-txt-link-abbreviated" href="mailto:NumPy-Discussion@python.org">NumPy-Discussion@python.org</a>
>> <a class="moz-txt-link-freetext" href="https://mail.python.org/mailman/listinfo/numpy-discussion">https://mail.python.org/mailman/listinfo/numpy-discussion</a>
>

-- 
Stephen P. Molnar, Ph.D.
<a class="moz-txt-link-abbreviated" href="http://www.molecular-modeling.net">www.molecular-modeling.net</a>
614.312.7528 (c)
Skype:  smolnar1

</pre>
      <br>
    </div>
    <br>
  </body>
</html>