15 May 2014

577. Skype and webcam on debian wheezy: black screen

This is another shameless re-posting of a solution published by others. See e.g. 
http://community.skype.com/t5/Linux/Webcam-is-not-working-on-skype-with-Ubuntu-12-04/td-p/858418
https://bbs.archlinux.org/viewtopic.php?id=95388
http://ubuntuforums.org/showthread.php?t=966882

Why am I doing this? Mostly because this blog doubles as a notebook where I can write down solutions that worked for me so that I don't find myself scouring the internet over and over again for the same solution.

I hope that I'm adding a bit of value by providing step-by-step solutions and snazzy screenshots though.

The issue:
even though the camera is working fine there's only a completely black picture in skype (not underexposed -- just plain black):






The solution:
Use LD_PRELOAD to load the 32 bit V4L library (which you need to have installed -- use apt-file to find out what package). You can either start skype from the command line, or make changes to the launcher, either via main menu  as shown in the screenshot or by editing ~/.local/share/applications/skype.desktop i.e. run skype with 
env LD_PRELOAD="/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so" skype


 At this point starting skype + webcam should be a happy marriage:
(aside from exposure, white balance etc. etc.)

13 May 2014

576. Shortening the bash prompt in debian

This is yet another post in which I'm (almost) simply reposting a solution that someone else has already posted online.

Let's say that my contribution is to put it in context of debian.

Either way, here's the problem that needed solving: the debian prompt by default lists all directories, which sometimes means that the prompt itself breaks across two lines.

Luckily, it's not difficult to chop the prompt down to a more manageable, yet still informative, length. The solution is here (we do like a descriptive URL): http://superuser.com/questions/387673/how-can-i-limit-the-number-of-directories-in-my-prompt

That particular solution also allows you to change the permissible length of the path that will be shown -- change the 50 in the argument to droppath to set the number of chars.

Edit your ~/.bashrc and add the bits in red:
# drops first portion of a path $1 if length is greater than $2 function __droppath { if [[ ${#1} -gt $2 ]]; then p=$1 while [ ${#p} -gt $2 ]; do p="/"$(echo "$p"|cut -d"/" -f3-) done echo "..."$p else echo $1 fi } if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]$(_droppath "\w" 50)\[\033[00m\]\$ ' else PS1='${debian_chroot:+($debian_chroot)}\u@\h: $(__droppath "\w" 50)\$ ' fi

and here's an example using a length of 25 chars (which is a bit short).

Unmodified:
me@niobium: /usr/local/lib/python2.7/site-packages$\

Modified:
me@niobium: .../python2.7/site-packages$

You can always use pwd to figure out what the full path is if necessary:
me@niobium: .../python2.7/site-packages$ pwd
/usr/local/lib/python2.7/site-packages

12 May 2014

575. Gaussview: CConnetctionGFCHK::Parse_GFCHK() Missing or bad data: Alpha Orbital Energies Line Number XXXX

I've been getting a fair number of errors when trying to open .fchk files with gaussview 4.x that I've generated using g09. In particular, I've been getting this:



Thinking that it might have something to do with the version of gaussview being too old, I tried gaussview 5.x, which throws the same error. Gaussview (4.x), by the way, runs fine in wine 1.7.

Turns out it's a poorly written piece of software -- gaussview can't properly parse output generated by gaussian. Great...neither piece of software is cheap. Better yet, gabedit does not have any issue reading the unmodified fchk file.

If you do need to use gview though, the solution is outlined here: http://www.ccl.net/cgi-bin/ccl/message-new?2012+07+18+005

Briefly, edit your fchk file and change the "Number of basis functions" to the same number as is shown for the "Number of independent functions" i.e. change
1 alpha 2 FOpt RB3PW91 Gen 3 Number of atoms I 101 4 Info1-9 I N= 9 5 89 86 0 0 0 100 6 2 18 -602 7 Charge I 7 8 Multiplicity I 1 9 Number of electrons I 530 10 Number of alpha electrons I 265 11 Number of beta electrons I 265 12 Number of basis functions I 2015 13 Number of independent functions I 2005 14 Number of point charges in /Mol/ I 0 15 Number of translation vectors I 0
to
1 alpha 2 FOpt RB3PW91 Gen 3 Number of atoms I 101 4 Info1-9 I N= 9 5 89 86 0 0 0 100 6 2 18 -602 7 Charge I 7 8 Multiplicity I 1 9 Number of electrons I 530 10 Number of alpha electrons I 265 11 Number of beta electrons I 265 12 Number of basis functions I 2005 13 Number of independent functions I 2005 14 Number of point charges in /Mol/ I 0 15 Number of translation vectors I 0
And that's it.

09 May 2014

574. Texmaker and texlive on windows xp

There are two ways of dealing with latex on windows -- either using native packages or via cygwin. Here's the  native approach, which I tested in a virtual machine with Windows XP SP2

 
1. Install texlive

Go to http://www.tug.org/texlive/acquire-netinstall.html and download http://mirror.ctan.org/systems/texlive/tlnet/install-tl.exe

Run the file. You'll now be taken through the installation of texlive. Note that the full installation is ca 3.7 Gb and it will take a few hours to download and install. On the other hand, space is cheap and most people (in academia) don't pay for bandwidth, so it's not a bad idea to do the full install.

Anyway, here are a few screenshots of the installation process:



It's a good idea to change the mirror to speed up the download



Uncheck TexWorks since we'll be installing TexMaker


This step can take many hours


Finally done.


2. Install texmaker

Go to http://www.xm1math.net/texmaker/download.html and download http://www.xm1math.net/texmaker/texmakerwin32_install.exe

The same file will work on XP, Vista and 8 (and presumably 7, which is more or less a patched version of Vista) and it will work on both 32 and 64 bit systems.

Install texmaker.


3. Configure  texmaker
Start texmaker

Go to Options/Configure Texmaker.

Under Commands you can select to use an external pdf viewer. Note that you will need to make sure that the path is correct -- in my case it was pointing to adobe reader 11, whereas I had adobe reader 9 installed. Easy enough to change, but you need to do it manually. The embedded/internal pdf viewer works ok, but distorts the text and figures somewhat (everything got a bit squashed)
Choose internal or external pdf viewer. Make sure the path is correct
Under Quick Build you can tick Latex+Bib(la)tex+Latex(x2)+dvips+ps2pdf+View pdf. NOTE: if you do this you won't be able to compile any file which hasn't got a \cite command and a mathing .bib file.

Alternatively, pick latex + dvips + ps2pdf + View pdf.

Quick Build -- pick the one with bibtex in it
Under Editor you can disable code completion (which can get annoying at times):

You can now load a tex file and hit F1 to compile it:


Quick test example

0. Create a folder called e.g. testtex
 
1. Download UCSD.eps from here: http://vectorlogotypes.net/logo/68332_UCSD.htm

Put it in the testtex folder.


2. Create the following anothertest.bib file in either texmaker or notepad:
@Article{2014:example,
  AUTHOR = {Placeholder, A},
  TITLE = {Comprehensive title},
  YEAR = 2014,
  JOURNAL = {J. Comp. Chem.},
  VOLUME ={45},
  PAGES = {100-101}
}
Put it in the testtex folder.

3. Create a new tex file in texmaker:


Make sure to tick graphicx

Basic tex file
Save to your testtex folder.

4. Edit your tex file as shown below::
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}

\usepackage{url}
\title{This is a test}

\begin{document}

\section{The test}
This is a simple test which consists of inserting a figure and adding a reference via bibtex. You can download the logo from \url{http://vectorlogotypes.net/logo/68332_UCSD.htm}. Put the UCSD.eps file in the same directory as your .tex file.
\begin{figure}
 \includegraphics{UCSD.eps}
 \caption{UC San Diego logo.}
 \label{fig:test}
\end{figure}

Here's a citation.\cite{2014:example}

\bibliography{anothertest}
\bibliographystyle{ChemEurJ}
\end{document}
5. Compile.
If you set up your F1 as shown above (i.e. with bibtex support), then all you need to do is hit F1. Otherwise, if you used the alternative setup, do F2 (latex), F11 (bibtex), F2 (latex), F11 (bibtex), F1 (compile and view).

20 April 2014

573. PCSensors K-type USB thermocouple adapter TEMPer1K4 (0c45:7403) on debian

UPDATE 1 May 2014:
I've rewritten the code now to properly deal with the presence of both a 0c45:7401 and a 0c45:7403 simultaneously. Note that I'm not convince about the accuracy of the temperature readings (accuracy as in whether there's any systematic bias to the output. The reproducibility seems to be excellent though).

Original post:
I just received this usb thermocouple reader (TEMPer1k4): http://www.pcsensor.com/index.php?_a=product&product_id=104

About the product:
lsusb shows 0c45:7403 (Microdia Foot Switch)

dmesg shows
[13448.536120] usb 6-1: new low-speed USB device number 3 using uhci_hcd [13448.709126] usb 6-1: New USB device found, idVendor=0c45, idProduct=7403 [13448.709139] usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [13448.709146] usb 6-1: Product: TH1000isoV1.5 [13448.709152] usb 6-1: Manufacturer: RDing


Getting it to work:
You can use the same program as in this post: http://verahill.blogspot.com.au/2013/12/532-temper-temperature-monitoring-usb.html with some minor modifications. Before running
sudo python setup.py install

make some changes in temperusb/temper.py.

Firstly, you need to allow for the detection of devices with the 0c45:7403 ID
 
15 VIDPIDs = [(0x0c45L,0x7401L),(0x0c45L,0x7403L)]
Secondly, you need to make sure that the program knows which device is which and treats them differently. Finally, you need to collect the right data-- the TEMPer1k4 returns a data_s with a length of 8 (caveat -- I haven't checked what the output from 0c45:7401 looks like. Maybe it too yields 8 fields), and the [2:4] data block contains the internal temperature of the USB device, while the [4:6] data block holds the thermocouple junction temperature. Of a sort -- you get a number which you need to translate into a temperature. See the bottom of this post for how I worked it all out. Please note that you should calibrate the thermocouple -- the uncorrected output seems to be at least 2-3 degrees too high.
temper.py
 
 15 VIDPIDs = [(0x0c45L,0x7401L),(0x0c45L,0x7403L)]

 63     def getid(self):
 64         return self._device.idProduct

125             if self._device.idProduct==29697:
126                 temp_c = 125.0/32000.0*(struct.unpack('>h', data_s[2:4])[0])+0.0025
127                 if format == 'celsius':
128                     temp_c = temp_c * self._scale + self._offset
129                     return temp_c
130                 elif format == 'fahrenheit':
131                     return temp_c*1.8+32.0
132                 elif format == 'millicelsius':
133                     return int(temp_c*1000)
134                 else:
135                     raise ValueError("Unknown format")
136             elif self._device.idProduct==29699:
137                 temp_c = (struct.unpack('>h', data_s[4:6])[0])*0.25-2.00
138                 temp_internal=(125.0/32000.0*(struct.unpack('>h', data_s[2:4])[0]))+0.0025
139                 if format == 'celsius':
140                     temp_c = temp_c * self._scale + self._offset
141                     return temp_c
142                 elif format == 'fahrenheit':
143                     if self._device.idProduct==29697: #0x7401
144                         return temp_c*1.8+32.0
145                     elif self._device.idProduct==29699: #0x7403
146                         return temp_internal
147 

cli.py
 
 31     for i, dev in enumerate(devs):
 32         readings.append({'device': i,
 33                          'id':dev.getid(),
 34                          'temperature_c': dev.get_temperature(),
 35                          'temperature_f':
 36                          dev.get_temperature(format="fahrenheit"),
 37                          'ports': dev.get_ports(),
 38                          'bus': dev.get_bus()
 39                          })
 40 
 41     for reading in readings:
 42         if disp_ports:
 43             portinfo = " (bus %s - port %s)" % (reading['bus'],
 44                                                 reading['ports'])
 45         else:
 46             portinfo = ""
 47         if reading['id']==29697:
 48             print('Device #%i%s: %0.1f°C %0.1f°F'
 49                   % (reading['device'],
 50                      portinfo,
 51                      reading['temperature_c'],
 52                      reading['temperature_f']))
 53         elif reading['id']==29699:
 54             print('Device #%i%s: %0.1f°C %0.1f°C'
 55                   % (reading['device'],
 56                      portinfo,
 57                      reading['temperature_c'],
 58                      reading['temperature_f']))

Beyond this, follow the instructions in http://verahill.blogspot.com.au/2013/12/532-temper-temperature-monitoring-usb.html and make sure to set up a rules file with the correct USB ID for this device.

Done!

If you're curious about the details, have a look below.

Analysing USB traffic:
Since I wasn't quite sure where to start I figured the easiest approach would be to sniff the traffic between the usb device and the offically supported programme from PC Sensors. So I installed it Win XP in virtualbox, read a couple of temperatures and compared them with the captured data.

To capture data I did:
sudo apt-get install tshark
sudo modprobe usbmon
lsusb
Bus 008 Device 003: ID 17ef:4815 Lenovo Integrated Webcam [R5U877] Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 043: ID 0c45:7403 Microdia Foot Switch Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
sudo tshark -D
1. eth0 2. wlan0 3. nflog 4. nfqueue 5. usbmon1 6. usbmon2 7. usbmon3 8. usbmon4 9. usbmon5 10. usbmon6 11. usbmon7 12. usbmon8 13. any 14. lo (Loopback)
touch 1.pcap chmod ugo+w 1.pcap sudo tshark -i usbmon4 -w $HOME/1.pcap

I opened the 1.pcap file in wireshark and looked for fields called leftover data.

Here are two examples of such 'leftover data' fields:
Host to USB: 01 80 00 00 00 00 00 00
USB to Host: 80 06 17 f0 00 5c 0f ff

Subjecting the system to different temperatures helped me figure out what fields where changing -- I've marked them in bold above (blue for the thermocouple, red for the internal temperature). Interestingly, I got overflow when freezing the thermocouple between two ice cubes, which indicated that there was a fairly high lower limit (1.5 degrees)
The following are some of the data I harvested. The temperature is in the first column, the hex code is in the second one and the decimal value is in the third one:
Internal:
23.63 17a 378
23.69 17b 379
23.94 17f 383
23.75 17c 380
21.88 15e 350
22.31 165 357
22.88 16e 366

Thermocouple: 23.75 05f 95 23.50 05e 9 38.25 099 153 24.00 066 102 87.50 15e 350 79.50 13e 318
In other words, T(thermo)=output(thermo)*0.25+1.50 and T(int.)=(output(int.)-0.0025)/0.0625. Because the internal data is in fields 2:4 it's seen as e.g. 17b0 instead of 17b, so the decimal version needs to be divided by 16 (line 126 above).

I also set up an /etc/temper.conf file and did chown $USER /etc/temper.conf in order to be able to read it (must be a better way). I tried to calibrate the thermocouple in my kitchen with iced water and boiling water. The boiling water gave a reading of 102 degrees, while the iced water gave me 7.5 degrees Celsius even after what should've been long enough to achieve equilibrium. I'll calibrate it in the lab later. So for now a simple offset might be enough to give a working temperature.
temper-poll -p
Device #0 (bus 2 - port 2)
so temper.conf became
2-2: scale = 1.00, offset = -4.0


The temper-usb code is changing too quickly!. You'll thus need to read and understand the code rather than just pasting it in. Here are the full, edited cli.py an temper.py files.

cli.py
# encoding: utf-8
from __future__ import print_function
from temper import TemperHandler


def main():
    th = TemperHandler()
    devs = th.get_devices()
    readings = []
    print("Found %i devices" % len(devs))

    for i, dev in enumerate(devs):
        readings.append({'device': i,
                         'id':dev.getid(),
                         'temperature_c': dev.get_temperature(),
                         'temperature_f':
                         dev.get_temperature(format="fahrenheit")
                         })

    for reading in readings:
  if reading['id']==29697:
   print('Device #%i: %0.1f°C %0.1f°F' % (reading['device'],
                                               reading['temperature_c'],
                                               reading['temperature_f']))
  elif reading['id']==29699:
   print('Device #%i: %0.1f°C %0.1f°C' % (reading['device'],
                                               reading['temperature_c'],
                                               reading['temperature_f']))

temper.py
# encoding: utf-8
#
# Handles devices reporting themselves as USB VID/PID 0C45:7401 (mine also says RDing TEMPerV1.2).
#
# Copyright 2012, 2013 Philipp Adelt 
#
# This code is licensed under the GNU public license (GPL). See LICENSE.md for details.

import usb
import sys
import struct

VIDPIDs = [(0x0c45L,0x7401L),(0x0c45L,0x7402L),(0x0c45L,0x7403L)]
REQ_INT_LEN = 8
REQ_BULK_LEN = 8
TIMEOUT = 2000

class TemperDevice():
    def __init__(self, device):
        self._device = device
        self._handle = None

    def get_temperature(self, format='celsius'):
        try:
            if not self._handle:
                self._handle = self._device.open()
                try:
                    self._handle.detachKernelDriver(0)
                except usb.USBError:
                    pass
                try:
                    self._handle.detachKernelDriver(1)
                except usb.USBError:
                    pass
                self._handle.setConfiguration(1)
                self._handle.claimInterface(0)
                self._handle.claimInterface(1)
                self._handle.controlMsg(requestType=0x21, request=0x09, value=0x0201, index=0x00, buffer="\x01\x01", timeout=TIMEOUT) # ini_control_transfer

            self._control_transfer(self._handle, "\x01\x80\x33\x01\x00\x00\x00\x00") # uTemperatura
            self._interrupt_read(self._handle)
            self._control_transfer(self._handle, "\x01\x82\x77\x01\x00\x00\x00\x00") # uIni1
            self._interrupt_read(self._handle)
            self._control_transfer(self._handle, "\x01\x86\xff\x01\x00\x00\x00\x00") # uIni2
            self._interrupt_read(self._handle)
            self._interrupt_read(self._handle)
            self._control_transfer(self._handle, "\x01\x80\x33\x01\x00\x00\x00\x00") # uTemperatura
            data = self._interrupt_read(self._handle)
            data_s = "".join([chr(byte) for byte in data])

            if self._device.idProduct==29697: 
    temp_c = 125.0/32000.0*(struct.unpack('>h', data_s[2:4])[0])+0.0025
    if format == 'celsius':
     return temp_c
    elif format == 'fahrenheit':
     return temp_c*1.8+32.0
    elif format == 'millicelsius':
     return int(temp_c*1000)
    else:
     raise ValueError("Unknown format")
            elif self._device.idProduct==29699: 
    temp_c = (struct.unpack('>h', data_s[4:6])[0])*0.25-4.00
    temp_internal=(125.0/32000.0*(struct.unpack('>h', data_s[2:4])[0]))+0.0025
    if format == 'celsius':
     return temp_c
    elif format == 'fahrenheit':
     if self._device.idProduct==29697: #0x7401
      return temp_c*1.8+32.0
     elif self._device.idProduct==29699: #0x7403
      return temp_internal
    elif format == 'millicelsius':
     return int(temp_c*1000)
    else:
     raise ValueError("Unknown format")
        except usb.USBError, e:
            self.close()
            if "not permitted" in str(e):
                raise Exception("Permission problem accessing USB. Maybe I need to run as root?")
            else:
                raise
    
    def getid(self):
        #print self._device.idProduct
        return self._device.idProduct

    def close(self):
        if self._handle:
            try:
                self._handle.releaseInterface()
            except ValueError:
                pass
            self._handle = None

    def _control_transfer(self, handle, data):
        handle.controlMsg(requestType=0x21, request=0x09, value=0x0200, index=0x01, buffer=data, timeout=TIMEOUT)

    def _interrupt_read(self, handle):
        return handle.interruptRead(0x82, REQ_INT_LEN)

        
class TemperHandler():
    def __init__(self):
        busses = usb.busses()
        self._devices = []
        for bus in busses:
            self._devices.extend([TemperDevice(x) for x in bus.devices if (x.idVendor,x.idProduct) in VIDPIDs])

    def get_devices(self):
        return self._devices

16 April 2014

572. autorotate/superimpose python script

If you want to calculate reaction coordinates between two structures you need to make sure that the structures haven't been rotated or translated, something which easily happens if you allow symmetry in gaussian and (it seems) z-matrix in nwchem.

I've written a script that lets you take two structures and align and superimpose them so that only the atoms that take part in the reaction move.

It works by you defining a minimum of four atoms that aren't supposed to move /relative to each other/ (i.e. they can be translated/rotated --- just not relative to each other) between the two structures. Four atoms far from each other are ideal. You need to make sure that they also don't lie in the same plane, but form a three-dimensional space.

I've tried this on real molecules too and it works better than I'd ever dared to hope for. The more 'stationary' atoms that you can use to make up the transformation matrix, the better.


Example:
In this example atom F is in a different location in structures a and b. The structures have also been rotated relative to each other.

a.xyz
6 A A 0.00000 0.00000 1.00000 B 0.00000 1.00000 0.00000 C 1.00000 0.00000 0.00000 D -1.00000 0.00000 0.00000 E 0.00000 0.00000 -1.00000 F 0.00000 0.500000 0.00000
b.xyz
6 B A 1 0 0 B 0 1 0 C 0 0 -1 D 0 0 1 E -1 0 0 F 0 -1 0

./autorotate.py a.xyz b.xyz '1,2,3,4'
Selected atoms in molecules 1 and 2 ['A', 0.0, 0.0, 1.0] ['A', 1.0, 0.0, 0.0] ['B', 0.0, 1.0, 0.0] ['B', 0.0, 1.0, 0.0] ['C', 1.0, 0.0, 0.0] ['C', 0.0, 0.0, -1.0] ['D', -1.0, 0.0, 0.0] ['D', 0.0, 0.0, 1.0] Transformation max error: 3.33066907388e-16 Writing to a.rot.xyz

a.rot.xyz
6 A A 1.00000 0.00000 0.00000 B -0.00000 1.00000 -0.00000 C -0.00000 0.00000 -1.00000 D -0.00000 0.00000 1.00000 E -1.00000 -0.00000 -0.00000 F -0.00000 0.50000 -0.00000
This is how it looks (note that the axis aren't aligned with (1,0,0; 0,1,0; 0,0,1) but seem to go through the centre of the molecule):
a.xyz
a.rot.xyz


b.xyz





Code:
#!/usr/bin/python
import sys
import numpy as np

#autorotate input_1.xyz input_2.xyz '1,2,3,4'
# need to pick at least four atoms that are not in the same plane
# input_1.xyz will be rotated to align with input_2.xyz
# you pick at least four atoms that should have the same positions
# relative to one another (i.e. distance and relative geometry). These 
# are then used to calculate an affine transform matrix which is used 
# to rotate and translate structure input_1.xyz to overlap with 
# structure 2

def formatinput(argument):
 infile1=sys.argv[1]
 atoms=sys.argv[3]
 atoms=atoms.split(',')
 coord_sys=[]

 for n in atoms:
  coord_sys+=[int(n)-1]
 try:
  infile2=sys.argv[2]
 except:
  infile2=''
 infile=[infile1,infile2]
 return infile,coord_sys
 
def getrawdata(infile):
 f=open(infile,'r')
 
 n=0
 preamble=[]
 
 struct=[]
 
 for line in f:
  if n<2: data-blogger-escaped-if="" data-blogger-escaped-line.rstrip="" data-blogger-escaped-n="" data-blogger-escaped-preamble="">1:
   line=line.rstrip()
   struct+=[line]
  n+=1
 xyz=[struct]
 
 return xyz, preamble

def getcoords(rawdata,preamble,atoms):
 
 n=0
 cartesian=[]
 
 for structure in rawdata:
  n=n+1
  num="%03d" % (n,)
  for item in structure:
   
   coordx=filter(None,item.split(' '))
   coordy=filter(None,item.split('\t'))
   if len(coordx)>len(coordy):
    coords=coordx
   else:
    coords=coordy
      
   coordinates=[float(coords[1]),float(coords[2]),float(coords[3])]
   element=coords[0]
   cartesian+=[[element,float(coords[1]),float(coords[2]),float(coords[3])]]
     
 return cartesian

def getstructures(rawdata,preamble):
 
 n=0
 cartesian=[]
 
 for structure in rawdata:
  n=n+1
  num="%03d" % (n,)
  for item in structure:
   
   coordx=filter(None,item.split(' '))
   coordy=filter(None,item.split('\t'))
   if len(coordx)>len(coordy):
    coords=coordx
   else:
    coords=coordy
      
   coordinates=[float(coords[1]),float(coords[2]),float(coords[3])]
   element=coords[0]
   cartesian+=[coordinates]
     
 return cartesian

def affine_transform(atoms,structures):
# from http://stackoverflow.com/questions/20546182/how-to-perform-coordinates-affine-transformation-using-python-part-2
 primaryatomcoords=[]
 for n in atoms:
  primaryatomcoords+=[structures[0][n]]

 secondaryatomcoords=[]
 for n in atoms:
  secondaryatomcoords+=[structures[1][n]]

 primary = np.array(primaryatomcoords)
 secondary = np.array(secondaryatomcoords)
 primaryfull = np.array(structures[0])

 # Pad the data with ones, so that our transformation can do translations too
 n = primary.shape[0]
 pad = lambda x: np.hstack([x, np.ones((x.shape[0], 1))])
 unpad = lambda x: x[:,:-1]
 X = pad(primary)
 Y = pad(secondary)
 Xp= pad(primaryfull)

 # Solve the least squares problem X * A = Y
 # to find our transformation matrix A
 A, res, rank, s = np.linalg.lstsq(X, Y)

 transform = lambda x: unpad(np.dot(pad(x), A))

# print "Max error should be as small as possible if the rotation is successful"
# print "If max error is large you may have selected a bad set of atoms"
 print "Transformation max error:", np.abs(secondary - transform(primary)).max()
 secondaryfull=transform(primaryfull)
 return secondaryfull

def transform_xyz(tmatrix,newxyz):
 final_xyz=[]
 for n in newxyz:
  coord=np.mat(str(n[0])+';'+str(n[1])+';'+str(n[2]))
  newcoord=np.dot(tmatrix,coord)
  newcoord=np.matrix.tolist(newcoord)
  final_xyz+=[[ newcoord[0][0],newcoord[1][0],newcoord[2][0]]]
 return final_xyz

def genxyzstring(coords,elementnumber):
 x_str='%10.5f'% coords[0]
 y_str='%10.5f'% coords[1]
 z_str='%10.5f'% coords[2]
 element=elementnumber
 xyz_string=element+(3-len(element))*' '+10*' '+\
 (8-len(x_str))*' '+x_str+10*' '+(8-len(y_str))*' '+y_str+10*' '+(8-len(z_str))*' '+z_str+'\n'
 
 return xyz_string

def write_aligned(aligned_structure,atom_coords,preamble,outfile):
 outfile=outfile.replace('.xyz','.rot.xyz')
 print "Writing to ",outfile
 g=open(outfile,'w')
 g.write(str(preamble[0])+'\n'+str(preamble[1])+'\n')
 
 for n in range(0,len(aligned_structure)):
  xyzstring=genxyzstring(aligned_structure[n],atom_coords[n][0])
  g.write(xyzstring)
 g.close()
 return 0
 
if __name__ == "__main__":
 infile,atoms=formatinput(sys.argv)
 
 xyz=['','']
 preamble=['','']
 
 #get raw data
 xyz[0],preamble[0]=getrawdata(infile[0])
 xyz[1],preamble[1]=getrawdata(infile[1])

 atom_coords=[getcoords(xyz[0],preamble[0],atoms)]
 atom_coords+=[getcoords(xyz[1],preamble[1],atoms)]
 
 #collect structures from raw data
 structures=[getstructures(xyz[0],preamble[0])]
 structures+=[getstructures(xyz[1],preamble[1])]
 
 print "Selected atoms in molecules 1 and 2"
 for n in atoms:
  print atom_coords[0][n],atom_coords[1][n]
  
 #transform structure
 aligned_structure=affine_transform(atoms,structures)
 
 write_aligned(aligned_structure,atom_coords[0],preamble[0],str(infile[0]))
 

09 April 2014

571. Briefly: Dodgy/underpowered UPS?

I've built quite a few computers in the past, and in general I haven't had any issues beyond the odd dodgy RAM stick.

However, a while back I became careless and built a box ('Oxygen') where the motherboard didn't officially support the CPU. Swapping CPUs with another box seemed to solve the issues I had.

See e.g.
http://verahill.blogspot.com.au/2013/10/520-new-node-amd-fx-835032-gb-ram990-fx.html
http://verahill.blogspot.com.au/2013/10/523-random-reboots-troubleshooting-in.html

In the past couple of weeks I've begun to see some worrying signs that all isn't right. In particular I noticed the following in the dmesg output:
[693166.514897] [Hardware Error]: MC2 Error: VB Data ECC or parity error. [693166.514926] [Hardware Error]: Error Status: Corrected error, no action required. [693166.514934] [Hardware Error]: CPU:6 (15:1:2) MC2_STATUS[-|CE|MiscV|-|-|-|-|CECC]: 0x98414000010c0176 [693166.514955] [Hardware Error]: cache level: L2, tx: DATA, mem-tx: EV

A few days after that, the computer turned itself off without returning any additional error messages. It did cause me to look at the sensor output though (I've been logging it every two minutes for months), and I compared it with another computer ('Neon') which is completely stable. Note that both computers have been running the same types of jobs recently (large memory frequency jobs).

Hardware specs:
Oxygen: AMD FX8150, 32 gb ram, Corsair GS700, asrock 990 fx extreme3
Neon: AMD FX8350, 32 gb ram, Corsair GS800, gigabyte 990 fxa

Anyway, this is what I found:
On Neon the power output is very stable, while on Oxygen it jumps up and down between ca 45 W and 130 W.

Has it been a crappy UPS that has been causing the issues all along? Or do these plot mean nothing?

570. Briefly: restarting a g09 frequency job with SGE, using same queue

I've had g09 frequency jobs die on me, and in g09 analytical frequency jobs can only be restarted using the .rwf. Because the .rwf files are 160 gb, I don't want to be copying them back and forth between nodes. It's easier then to simply make sure that the restarted job is run on the same node as the original job.

A good resource for SGE related stuff is http://rous.mit.edu/index.php/SGE_Instructions_and_Tips#Submitting_jobs_to_specific_queues

Either way, first figure out what node the job ran on. Assuming that the job number was 445:
qacct -j 445|grep hostname
hostname compute-0-6.local

Next figure out the PID, as this is used to name the Gau-[PID].rwf file:
grep PID g03.g03out
Entering Link 1 = /share/apps/gaussian/g09/l1.exe PID= 24286.

You can now craft your restart file, g09_freq.restart -- you'll need to make sure that the paths are appropriate for your system:
%nprocshared=8 %Mem=900000000 %rwf=/scratch/Gau-24286.rwf %Chk=/home/me/jobs/testing/delta_631gplusstar-freq/delta_631gplusstar-freq.chk #P restart
(having empty lines at the end of the file is important) and a qsub file, g09_freq.qsub:
#$ -S /bin/sh #$ -cwd #$ -l h_rt=999:30:00 #$ -l h_vmem=8G #$ -j y #$ -pe orte 8 export GAUSS_SCRDIR=/tmp export GAUSS_EXEDIR=/share/apps/gaussian/g09/bsd:/share/apps/gaussian/g09/local:/share/apps/gaussian/g09/extras:/share/apps/gaussian/g09 /share/apps/gaussian/g09/g09 g09_freq.restart > g09_freq.out
Then submit it to the correct queue by doing
qsub -q all.q@compute-0-6.local g09_freq.qsub

The output goes to g09_freq.log. You know if the restart worked properly if it says
Skip MakeAB in pass 1 during restart.
and
Resume CPHF with iteration 214.

Note that restarting analytical frequency jobs in g09 can be a hit and miss affair. Jobs that run out of time are easy to restart, and some jobs that die silently have also been restarted successfully. On the other hand, a job that died because my resource allocations ran out couldn't be restarted i.e. restart started the freq job from scratch. The same happened with one a node of mine that has what seems like a dodgy PSU. Finally, I also couldn't restart jobs that died silently due to allocation all the RAM to g09 without leaving any to the OS (or at least that's the current best theory). It may thus be a good idea to back up the rwf file every now and again, in spite of the unwieldy size.

03 April 2014

569. Briefly: Dual monitor set-up on Debian Wheezy with Gnome and a single nvidia graphics card

This is very easy, but I might as well document it here anyway.

This morning another group threw out two functioning monitors and I grabbed both. While I haven't yet decided on what to do with the second one I decided to use one to make a dual monitor set-up for my work station.

My desktop has both onboard nvidia graphics and a separate pci-e nvidia (GT 430) graphics card. Using lspci only the external graphics card shows up, probably because the bios prioritises the external card and disables the onboard graphics.

The nvidia GT 430 card has three output ports: vga, hdmi and dvi. My main monitor (Dell P2411H, 1920x1080) has both vga and dvi, and my 'new' monitor (HP S1932, 1366x768) only has vga.

The first step was to physically connect both monitors to my computer. I originally thought I had to use one card per monitor, which would've necessitated me to reboot, change the bios and probably hand-craft an xorg.conf. I don't like rebooting, so I looked at the alternatives.

Apparently you can simply connect both monitors to the same card by using the different ports, so I hooked up the small screen to the vga port and the big one to the hdmi port.

After that it was a simple matter of opening 'displays' in the gnome 3 systems settings, setting both monitors to 'on', and arranging them side by side correctly by dragging them with the mouse:



I also had a look at it in nvidia-settings:

The only issue that remained was guake -- it was showing up in the 'wrong' screen (i.e. the left-most, smaller one).  This post showed how to edit: http://haifzhan.blogspot.com.au/2013/10/guake-dual-monitor-setup.html

This is how to do it on the version currently in wheezy, 0.4.3:
sudo vim `which guake`
814 def get_final_window_rect(self): 815 """Gets the final size of the main window of guake. The height 816 is the window_height property, width is window_width and the 817 horizontal alignment is given by window_alignment. 818 """ 819 screen = self.window.get_screen() 820 height = self.client.get_int(KEY('/general/window_height')) 821 width = 100 822 halignment = self.client.get_int(KEY('/general/window_halignment')) 823 824 # get the rectangle just from the first/default monitor in the 825 # future we might create a field to select which monitor you 826 # wanna use 827 828 #monitor = 0 # use the left most monitor 829 monitor = screen.get_n_monitors() - 1 # use the rightmost monitor 830 831 monitor_rect = screen.get_monitor_geometry(monitor) 832 window_rect = monitor_rect.copy() 833 total_width = window_rect.width 834 window_rect.height = window_rect.height * height / 100 835 window_rect.width = window_rect.width * width / 100 836 837 if width < monitor_rect.width: 838 if halignment == ALIGN_CENTER: 839 window_rect.x = monitor_rect.x+(monitor_rect.width - window_rect.width) / 2 840 elif halignment == ALIGN_LEFT: 841 window_rect.x = monitor_rect.x 842 elif halignment == ALIGN_RIGHT: 843 window_rect.x = monitor_rect.x+monitor_rect.width-window_rect.width 844 window_rect.y = monitor_rect.y 845 return window_rect 846

Note that the edited version will be overwritten when you upgrade guake.

25 March 2014

568. PyMol troubles in Jessie -- no solutions [update]

I and linux are not on speaking terms at the moment. My main issue right now is that the routing that I set up a long time ago (http://verahill.blogspot.com.au/2012/02/debian-testing-wheezy-64-configuring.html) no longer works properly -- yes, I can see the subnets, but the routing table is wrong, and traffic is routed over the wrong physical interface which leads to a significant slowdown.

In addition, pymol is unusable on my laptop which is running debian jessie. I'm not the only one with pymol related issues either -- follow the thread at the end of http://verahill.blogspot.com.au/p/miscellaneous.html and you will see another example of pymol troubles, troubles which I accidentally reproduced in the virtual machine later in this post. Anyway, these are unsolved issues but I post them here in case other people are wondering whether they are the only ones. I might even muster the courage to submit a bug report to debian although the first issue is definitely present in upstreams...and I think that the second one is as well. Unfortunately, pymol isn't quite free software and the online support doesn't appear to be as good as for many traditional FOSS packages.

Either way, here are some observations:

On a physical machine (Lenovo Thinkpad SL410 running Jessie:
UPDATE 26/3/2014: this works now after doing a full upgrade/dist-upgrade. Not sure what did it -- no obvious package that would've fixed it. The issue below with gallium remains though.

Version 1.7.0.0 on Linux niobium 3.11-2-amd64 #1 SMP Debian 3.11.10-1 (2013-12-04) x86_64 GNU/Linux.
Detected OpenGL version 2.0 or greater. Shaders available. Detected GLSL version 1.20. OpenGL graphics engine: GL_VENDOR: Intel Open Source Technology Center GL_RENDERER: Mesa DRI Mobile Intel GM45 Express Chipset GL_VERSION: 2.1 Mesa 9.2.2 Adjusting settings to improve performance for Intel cards. Detected 2 CPU cores. Enabled multithreaded rendering.

Building the upstreams version doesn't solve the issue.

inxi -G:
Graphics: Card: Intel Mobile 4 Series Integrated Graphics Controller X.Org: 1.15.0 drivers: intel (unloaded: fbdev,vesa) Resolution: 1366x768@60.0hz GLX Renderer: Mesa DRI Mobile Intel GM45 Express GLX Version: 2.1 Mesa 9.2.2

In a debian testing virtual machine (virtual box) running jessie:
Default DE seems to be Xfce. Before installing gnome i.e. in Xfce:
X Error of failed request: 0 Major opcode of failed request: 155 (GLX) Minor opcode of failed request: 26 (X_GLXMakeContextCurrent) Serial number of failed request: 49 Current serial number in output stream: 49 PyMOL: abrupt program termination.
After installing gnome:
Detected OpenGL version 2.0 or greater. Shaders available. Detected GLSL version 1.30. OpenGL graphics engine: GL_VENDOR: VMware, Inc. GL_RENDERER: Gallium 0.4 on llvmpipe (LLVM 3.3, 128 bits) GL_VERSION: 2.1 Mesa 9.2.2 pure virtual method called
and a normal window is opened:
While it says v 1.6.x it is version 1.7.0.0 and it says so in the terminal output -- just not in the fancy figure.


However, on loading any structure (e.g. xyz or pdb -- even as small as methane):
OpenGL version 2.0 or greater. Shaders available. Detected GLSL version 1.30. OpenGL graphics engine: GL_VENDOR: VMware, Inc. GL_RENDERER: Gallium 0.4 on llvmpipe (LLVM 3.3, 128 bits) GL_VERSION: 2.1 Mesa 9.2.2 CmdLoad: "/home/me/Downloads/methane.pdb" loaded as "methane". Segmentation fault
Running catchsegv gives a lot of output -- see bottom of this post.

I next installed the guest additions from the debian repos using
sudo apt-get install virtualbox-guest-*
(the guest additions that are installable via virtualbox itself fail to build on kernel 3.13) and rebooted.

At this point pymol shows
me@debian:~$ pymol ~/Downloads/methane.pdb OpenGL Warning: glFlushVertexArrayRangeNV not found in mesa table OpenGL Warning: glVertexArrayRangeNV not found in mesa table OpenGL Warning: glCombinerInputNV not found in mesa table OpenGL Warning: glCombinerOutputNV not found in mesa table OpenGL Warning: glCombinerParameterfNV not found in mesa table OpenGL Warning: glCombinerParameterfvNV not found in mesa table OpenGL Warning: glCombinerParameteriNV not found in mesa table OpenGL Warning: glCombinerParameterivNV not found in mesa table OpenGL Warning: glFinalCombinerInputNV not found in mesa table OpenGL Warning: glGetCombinerInputParameterfvNV not found in mesa table OpenGL Warning: glGetCombinerInputParameterivNV not found in mesa table OpenGL Warning: glGetCombinerOutputParameterfvNV not found in mesa table OpenGL Warning: glGetCombinerOutputParameterivNV not found in mesa table OpenGL Warning: glGetFinalCombinerInputParameterfvNV not found in mesa table OpenGL Warning: glGetFinalCombinerInputParameterivNV not found in mesa table OpenGL Warning: glDeleteFencesNV not found in mesa table OpenGL Warning: glFinishFenceNV not found in mesa table OpenGL Warning: glGenFencesNV not found in mesa table OpenGL Warning: glGetFenceivNV not found in mesa table OpenGL Warning: glIsFenceNV not found in mesa table OpenGL Warning: glSetFenceNV not found in mesa table OpenGL Warning: glTestFenceNV not found in mesa table PyMOL(TM) Molecular Graphics System, Version 1.7.0.0. Copyright (c) Schrodinger, LLC. All Rights Reserved. Created by Warren L. DeLano, Ph.D. PyMOL is user-supported open-source software. Although some versions are freely available, PyMOL is not in the public domain. If PyMOL is helpful in your work or study, then please volunteer support for our ongoing efforts to create open and affordable scientific software by purchasing a PyMOL Maintenance and/or Support subscription. More information can be found at "http://www.pymol.org". Enter "help" for a list of commands. Enter "help " for information on a specific command. Hit ESC anytime to toggle between text and graphics. Detected OpenGL version 2.0 or greater. Shaders available. Detected GLSL version 4.20. OpenGL Warning: No pincher, please call crStateSetCurrentPointers() in your SPU OpenGL graphics engine: GL_VENDOR: Humper GL_RENDERER: Chromium GL_VERSION: 2.1 Chromium 1.9 CmdLoad: "/home/me/Downloads/methane.pdb" loaded as "methane". OpenGL Warning: No pincher, please call crStateSetCurrentPointers() in your SPU
and the molecule shows up briefly before the window goes black, which constitutes a bit of progress.

Closing the program gives
PyMOL: normal program termination. Segmentation fault

catchsegv output using the gallium driver
PyMOL(TM) Molecular Graphics System, Version 1.7.0.0. Copyright (c) Schrodinger, LLC. All Rights Reserved. Created by Warren L. DeLano, Ph.D. PyMOL is user-supported open-source software. Although some versions are freely available, PyMOL is not in the public domain. If PyMOL is helpful in your work or study, then please volunteer support for our ongoing efforts to create open and affordable scientific software by purchasing a PyMOL Maintenance and/or Support subscription. More information can be found at "http://www.pymol.org". Enter "help" for a list of commands. Enter "help " for information on a specific command. Hit ESC anytime to toggle between text and graphics. Detected OpenGL version 2.0 or greater. Shaders available. Detected GLSL version 1.30. OpenGL graphics engine: GL_VENDOR: VMware, Inc. GL_RENDERER: Gallium 0.4 on llvmpipe (LLVM 3.3, 128 bits) GL_VERSION: 2.1 Mesa 9.2.2 ExecutiveLoad: "methane.xyz" loaded as "methane", through state 1. Segmentation fault *** Segmentation fault Register dump: RAX: 0000000002214e08 RBX: 000000000000ffff RCX: 0000000000000000 RDX: 00007f1db5b69640 RSI: 00000000ffffffff RDI: 00007fff4c2e7d60 RBP: 00007fff4c0e7d80 R8 : 0000000000000000 R9 : 0000000000000000 R10: 0000000002088a50 R11: 000000000208c940 R12: 000000000248b650 R13: 00007f1dafad70fc R14: 00007fff4c0e7c94 R15: 0000000000000000 RSP: 00007fff4c0e7c10 RIP: 00007f1daf8f4202 EFLAGS: 00010206 CS: 0033 FS: 0000 GS: 0000 Trap: 0000000e Error: 00000006 OldMask: 00000000 CR2: 4c2eb110 FPUCW: 0000037f FPUSW: 00000000 TAG: 00000000 RIP: 00000000 RDP: 00000000 ST(0) 0000 0000000000000000 ST(1) 0000 0000000000000000 ST(2) 0000 0000000000000000 ST(3) 0000 0000000000000000 ST(4) 0000 0000000000000000 ST(5) 0000 0000000000000000 ST(6) 0000 0000000000000000 ST(7) 0000 0000000000000000 mxcsr: 9ffb XMM0: 00000000000000000000000000000000 XMM1: 00000000000000000000000000000000 XMM2: 00000000000000000000000000000000 XMM3: 00000000000000000000000000000000 XMM4: 00000000000000000000000000000000 XMM5: 00000000000000000000000000000000 XMM6: 00000000000000000000000000000000 XMM7: 00000000000000000000000000000000 XMM8: 00000000000000000000000000000000 XMM9: 00000000000000000000000000000000 XMM10: 00000000000000000000000000000000 XMM11: 00000000000000000000000000000000 XMM12: 00000000000000000000000000000000 XMM13: 00000000000000000000000000000000 XMM14: 00000000000000000000000000000000 XMM15: 00000000000000000000000000000000 Backtrace: /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x2ed202)[0x7f1daf8f4202] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x2e8dfe)[0x7f1daf8efdfe] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x2f1a69)[0x7f1daf8f8a69] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x338f6f)[0x7f1daf93ff6f] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x33a059)[0x7f1daf941059] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(llvmpipe_update_fs+0x99d)[0x7f1daf945bbd] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(llvmpipe_update_derived+0x1a0)[0x7f1daf93e9c0] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(lp_setup_update_state+0xe8)[0x7f1daf938d08] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x33726b)[0x7f1daf93e26b] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x208c40)[0x7f1daf80fc40] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x20908e)[0x7f1daf81008e] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x201f94)[0x7f1daf808f94] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x2049fa)[0x7f1daf80b9fa] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x200235)[0x7f1daf807235] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x2010e4)[0x7f1daf8080e4] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x2f7285)[0x7f1daf8fe285] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x2f7454)[0x7f1daf8fe454] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x212b21)[0x7f1daf819b21] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x20b916)[0x7f1daf812916] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x20bd96)[0x7f1daf812d96] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x326a72)[0x7f1daf92da72] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x14fb1c)[0x7f1daf756b1c] /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so(+0x1294c4)[0x7f1daf7304c4] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(+0xf3bb9)[0x7f1db4c16bb9] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(CGORenderGL+0x745)[0x7f1db4c359b5] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(+0x1a5b7c)[0x7f1db4cc8b7c] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(CoordSetRender+0x323)[0x7f1db4d56253] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(+0x1e5203)[0x7f1db4d08203] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(SceneRenderAllObject+0xc1)[0x7f1db4beb291] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(+0xc8898)[0x7f1db4beb898] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(DoRendering+0x204)[0x7f1db4bebe54] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(SceneRender+0x13c7)[0x7f1db4bf2a77] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(OrthoDoDraw+0x104c)[0x7f1db4c918ec] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(ExecutiveDrawNow+0xc1)[0x7f1db4df4ab1] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(PyMOL_DrawWithoutLock+0x16e)[0x7f1db4e5a73e] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(+0x3233a0)[0x7f1db4e463a0] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(+0x3241fc)[0x7f1db4e471fc] /usr/lib/x86_64-linux-gnu/libglut.so.3(+0x22834)[0x7f1db3cd7834] /usr/lib/x86_64-linux-gnu/libglut.so.3(fgEnumWindows+0x39)[0x7f1db3cdb279] /usr/lib/x86_64-linux-gnu/libglut.so.3(glutMainLoopEvent+0x11c)[0x7f1db3cd7d7c] /usr/lib/x86_64-linux-gnu/libglut.so.3(glutMainLoop+0xa1)[0x7f1db3cd8671] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(+0x324b30)[0x7f1db4e47b30] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(main_shared+0x88)[0x7f1db4e48698] /usr/lib/python2.7/dist-packages/pymol/_cmd.so(+0x3039b4)[0x7f1db4e269b4] python2.7(PyEval_EvalFrameEx+0x42d)[0x51f18d] python2.7(PyEval_EvalCodeEx+0x2ac)[0x53bd7c] python2.7(PyEval_EvalFrameEx+0x7f6)[0x51f556] python2.7(PyEval_EvalCodeEx+0x2ac)[0x53bd7c] python2.7(PyEval_EvalCode+0x32)[0x5b0b62] python2.7(PyEval_EvalFrameEx+0x4f5c)[0x523cbc] python2.7(PyEval_EvalCodeEx+0x2ac)[0x53bd7c] python2.7(PyEval_EvalFrameEx+0x7f6)[0x51f556] python2.7[0x4e738a] python2.7(PyObject_Call+0x36)[0x55f4c6] python2.7[0x41e910] python2.7(Py_Main+0x898)[0x44bfba] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7f1db57e7b45] python2.7[0x57b33e] Memory map: 00400000-006bc000 r-xp 00000000 08:01 274159 /usr/bin/python2.7 008bc000-008bd000 r--p 002bc000 08:01 274159 /usr/bin/python2.7 008bd000-00932000 rw-p 002bd000 08:01 274159 /usr/bin/python2.7 00932000-00944000 rw-p 00000000 00:00 0 01316000-02a92000 rw-p 00000000 00:00 0 [heap] 7f1da4000000-7f1da465c000 rw-p 00000000 00:00 0 7f1da465c000-7f1da8000000 ---p 00000000 00:00 0 7f1da8e6b000-7f1da8eeb000 rw-p 00000000 00:00 0 7f1da913e000-7f1da917e000 rw-p 00000000 00:00 0 7f1da917e000-7f1da91fe000 rwxp 00000000 00:00 0 7f1da91fe000-7f1da936b000 rw-p 00000000 00:00 0 7f1da936b000-7f1da9373000 r-xp 00000000 08:01 274422 /usr/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so 7f1da9373000-7f1da9572000 ---p 00008000 08:01 274422 /usr/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so 7f1da9572000-7f1da9573000 r--p 00007000 08:01 274422 /usr/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so 7f1da9573000-7f1da9574000 rw-p 00008000 08:01 274422 /usr/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so 7f1da9574000-7f1da9580000 r-xp 00000000 08:01 521244 /lib/x86_64-linux-gnu/libnss_files-2.18.so 7f1da9580000-7f1da977f000 ---p 0000c000 08:01 521244 /lib/x86_64-linux-gnu/libnss_files-2.18.so 7f1da977f000-7f1da9780000 r--p 0000b000 08:01 521244 /lib/x86_64-linux-gnu/libnss_files-2.18.so 7f1da9780000-7f1da9781000 rw-p 0000c000 08:01 521244 /lib/x86_64-linux-gnu/libnss_files-2.18.so 7f1da9781000-7f1da978b000 r-xp 00000000 08:01 521253 /lib/x86_64-linux-gnu/libnss_nis-2.18.so 7f1da978b000-7f1da998a000 ---p 0000a000 08:01 521253 /lib/x86_64-linux-gnu/libnss_nis-2.18.so 7f1da998a000-7f1da998b000 r--p 00009000 08:01 521253 /lib/x86_64-linux-gnu/libnss_nis-2.18.so 7f1da998b000-7f1da998c000 rw-p 0000a000 08:01 521253 /lib/x86_64-linux-gnu/libnss_nis-2.18.so 7f1da998c000-7f1da9993000 r-xp 00000000 08:01 521246 /lib/x86_64-linux-gnu/libnss_compat-2.18.so 7f1da9993000-7f1da9b92000 ---p 00007000 08:01 521246 /lib/x86_64-linux-gnu/libnss_compat-2.18.so 7f1da9b92000-7f1da9b93000 r--p 00006000 08:01 521246 /lib/x86_64-linux-gnu/libnss_compat-2.18.so 7f1da9b93000-7f1da9b94000 rw-p 00007000 08:01 521246 /lib/x86_64-linux-gnu/libnss_compat-2.18.so 7f1da9b94000-7f1da9b95000 ---p 00000000 00:00 0 7f1da9b95000-7f1daa415000 rw-p 00000000 00:00 0 [stack:5355] 7f1daa415000-7f1daa595000 rwxp 00000000 00:00 0 7f1daa595000-7f1daa615000 rw-p 00000000 00:00 0 7f1daa615000-7f1daa616000 ---p 00000000 00:00 0 7f1daa616000-7f1daae16000 rw-p 00000000 00:00 0 [stack:5354] 7f1daae16000-7f1daae1f000 r-xp 00000000 08:01 270355 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 7f1daae1f000-7f1dab01e000 ---p 00009000 08:01 270355 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 7f1dab01e000-7f1dab01f000 r--p 00008000 08:01 270355 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 7f1dab01f000-7f1dab020000 rw-p 00009000 08:01 270355 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 7f1dab020000-7f1dab022000 r-xp 00000000 08:01 277479 /usr/lib/x86_64-linux-gnu/libXss.so.1.0.0 7f1dab022000-7f1dab222000 ---p 00002000 08:01 277479 /usr/lib/x86_64-linux-gnu/libXss.so.1.0.0 7f1dab222000-7f1dab223000 rw-p 00002000 08:01 277479 /usr/lib/x86_64-linux-gnu/libXss.so.1.0.0 7f1dab223000-7f1dab25d000 r-xp 00000000 08:01 270332 /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.8.0 7f1dab25d000-7f1dab45c000 ---p 0003a000 08:01 270332 /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.8.0 7f1dab45c000-7f1dab45e000 r--p 00039000 08:01 270332 /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.8.0 7f1dab45e000-7f1dab45f000 rw-p 0003b000 08:01 270332 /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.8.0 7f1dab45f000-7f1dab473000 r-xp 00000000 08:01 275893 /usr/lib/x86_64-linux-gnu/libXft.so.2.3.1 7f1dab473000-7f1dab673000 ---p 00014000 08:01 275893 /usr/lib/x86_64-linux-gnu/libXft.so.2.3.1 7f1dab673000-7f1dab674000 rw-p 00014000 08:01 275893 /usr/lib/x86_64-linux-gnu/libXft.so.2.3.1 7f1dab674000-7f1dab689000 r-xp 00000000 08:01 521239 /lib/x86_64-linux-gnu/libnsl-2.18.so 7f1dab689000-7f1dab888000 ---p 00015000 08:01 521239 /lib/x86_64-linux-gnu/libnsl-2.18.so 7f1dab888000-7f1dab889000 r--p 00014000 08:01 521239 /lib/x86_64-linux-gnu/libnsl-2.18.so 7f1dab889000-7f1dab88a000 rw-p 00015000 08:01 521239 /lib/x86_64-linux-gnu/libnsl-2.18.so 7f1dab88a000-7f1dab88c000 rw-p 00000000 00:00 0 7f1dab88c000-7f1dab9a5000 r-xp 00000000 08:01 299562 /usr/lib/x86_64-linux-gnu/libtcl8.5.so 7f1dab9a5000-7f1dabba5000 ---p 00119000 08:01 299562 /usr/lib/x86_64-linux-gnu/libtcl8.5.so 7f1dabba5000-7f1dabba9000 r--p 00119000 08:01 299562 /usr/lib/x86_64-linux-gnu/libtcl8.5.so 7f1dabba9000-7f1dabbb0000 rw-p 0011d000 08:01 299562 /usr/lib/x86_64-linux-gnu/libtcl8.5.so 7f1dabbb0000-7f1dabbb1000 rw-p 00000000 00:00 0 7f1dabbb1000-7f1dabcdd000 r-xp 00000000 08:01 299568 /usr/lib/x86_64-linux-gnu/libtk8.5.so 7f1dabcdd000-7f1dabedc000 ---p 0012c000 08:01 299568 /usr/lib/x86_64-linux-gnu/libtk8.5.so 7f1dabedc000-7f1dabeea000 r--p 0012b000 08:01 299568 /usr/lib/x86_64-linux-gnu/libtk8.5.so 7f1dabeea000-7f1dabefb000 rw-p 00139000 08:01 299568 /usr/lib/x86_64-linux-gnu/libtk8.5.so 7f1dabefb000-7f1dabefc000 rw-p 00000000 00:00 0 7f1dabefc000-7f1dac003000 r-xp 00000000 08:01 299629 /usr/lib/libBLT.2.4.so.8.5 7f1dac003000-7f1dac203000 ---p 00107000 08:01 299629 /usr/lib/libBLT.2.4.so.8.5 7f1dac203000-7f1dac204000 r--p 00107000 08:01 299629 /usr/lib/libBLT.2.4.so.8.5 7f1dac204000-7f1dac221000 rw-p 00108000 08:01 299629 /usr/lib/libBLT.2.4.so.8.5 7f1dac221000-7f1dac222000 rw-p 00000000 00:00 0 7f1dac222000-7f1dac22e000 r-xp 00000000 08:01 299653 /usr/lib/python2.7/lib-dynload/_tkinter.so 7f1dac22e000-7f1dac42d000 ---p 0000c000 08:01 299653 /usr/lib/python2.7/lib-dynload/_tkinter.so 7f1dac42d000-7f1dac42e000 r--p 0000b000 08:01 299653 /usr/lib/python2.7/lib-dynload/_tkinter.so 7f1dac42e000-7f1dac430000 rw-p 0000c000 08:01 299653 /usr/lib/python2.7/lib-dynload/_tkinter.so 7f1dac430000-7f1dac4b0000 rw-p 00000000 00:00 0 7f1dac4b0000-7f1dacf30000 rwxp 00000000 00:00 0 7f1dacf30000-7f1dad031000 rw-p 00000000 00:00 0 7f1dad032000-7f1dad132000 rwxp 00000000 00:00 0 7f1dad132000-7f1dad93f000 rw-p 00000000 00:00 0 7f1dad93f000-7f1dad976000 r-xp 00000000 08:01 278421 /usr/lib/x86_64-linux-gnu/libtxc_dxtn_s2tc.so.0.0.0 7f1dad976000-7f1dadb75000 ---p 00037000 08:01 278421 /usr/lib/x86_64-linux-gnu/libtxc_dxtn_s2tc.so.0.0.0 7f1dadb75000-7f1dadb76000 r--p 00036000 08:01 278421 /usr/lib/x86_64-linux-gnu/libtxc_dxtn_s2tc.so.0.0.0 7f1dadb76000-7f1dadb77000 rw-p 00037000 08:01 278421 /usr/lib/x86_64-linux-gnu/libtxc_dxtn_s2tc.so.0.0.0 7f1dadb77000-7f1daf0ac000 r-xp 00000000 08:01 270279 /usr/lib/x86_64-linux-gnu/libLLVM-3.3.so.1 7f1daf0ac000-7f1daf1c3000 rw-p 01535000 08:01 270279 /usr/lib/x86_64-linux-gnu/libLLVM-3.3.so.1 7f1daf1c3000-7f1daf1d5000 rw-p 00000000 00:00 0 7f1daf1d5000-7f1daf1dc000 r-xp 00000000 08:01 265205 /usr/lib/x86_64-linux-gnu/libffi.so.6.0.1 7f1daf1dc000-7f1daf3db000 ---p 00007000 08:01 265205 /usr/lib/x86_64-linux-gnu/libffi.so.6.0.1 7f1daf3db000-7f1daf3dc000 r--p 00006000 08:01 265205 /usr/lib/x86_64-linux-gnu/libffi.so.6.0.1 7f1daf3dc000-7f1daf3dd000 rw-p 00007000 08:01 265205 /usr/lib/x86_64-linux-gnu/libffi.so.6.0.1 7f1daf3dd000-7f1daf404000 r-xp 00000000 08:01 521410 /lib/x86_64-linux-gnu/libexpat.so.1.6.0 7f1daf404000-7f1daf604000 ---p 00027000 08:01 521410 /lib/x86_64-linux-gnu/libexpat.so.1.6.0 7f1daf604000-7f1daf606000 r--p 00027000 08:01 521410 /lib/x86_64-linux-gnu/libexpat.so.1.6.0 7f1daf606000-7f1daf607000 rw-p 00029000 08:01 521410 /lib/x86_64-linux-gnu/libexpat.so.1.6.0 7f1daf607000-7f1dafb63000 r-xp 00000000 08:01 401825 /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so 7f1dafb63000-7f1dafd63000 ---p 0055c000 08:01 401825 /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so 7f1dafd63000-7f1dafd80000 r--p 0055c000 08:01 401825 /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so 7f1dafd80000-7f1dafd8a000 rw-p 00579000 08:01 401825 /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so 7f1dafd8a000-7f1daffb0000 rw-p 00000000 00:00 0 7f1daffb7000-7f1db03b1000 rw-p 00000000 00:00 0 7f1db03b1000-7f1db0575000 r-xp 00000000 08:01 265863 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 7f1db0575000-7f1db0775000 ---p 001c4000 08:01 265863 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 7f1db0775000-7f1db0790000 r--p 001c4000 08:01 265863 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 7f1db0790000-7f1db079f000 rw-p 001df000 08:01 265863 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 7f1db079f000-7f1db07a3000 rw-p 00000000 00:00 0 7f1db07a3000-7f1db07f8000 r-xp 00000000 08:01 265878 /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 7f1db07f8000-7f1db09f8000 ---p 00055000 08:01 265878 /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 7f1db09f8000-7f1db09fb000 r--p 00055000 08:01 265878 /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 7f1db09fb000-7f1db0a02000 rw-p 00058000 08:01 265878 /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 7f1db0a02000-7f1db0a06000 r-xp 00000000 08:01 274397 /usr/lib/python2.7/lib-dynload/_hashlib.x86_64-linux-gnu.so 7f1db0a06000-7f1db0c05000 ---p 00004000 08:01 274397 /usr/lib/python2.7/lib-dynload/_hashlib.x86_64-linux-gnu.so 7f1db0c05000-7f1db0c06000 r--p 00003000 08:01 274397 /usr/lib/python2.7/lib-dynload/_hashlib.x86_64-linux-gnu.so 7f1db0c06000-7f1db0c07000 rw-p 00004000 08:01 274397 /usr/lib/python2.7/lib-dynload/_hashlib.x86_64-linux-gnu.so 7f1db0c07000-7f1db0d08000 rw-p 00000000 00:00 0 7f1db0d08000-7f1db0d0c000 r-xp 00000000 08:01 521455 /lib/x86_64-linux-gnu/libuuid.so.1.3.0 7f1db0d0c000-7f1db0f0b000 ---p 00004000 08:01 521455 /lib/x86_64-linux-gnu/libuuid.so.1.3.0 7f1db0f0b000-7f1db0f0c000 r--p 00003000 08:01 521455 /lib/x86_64-linux-gnu/libuuid.so.1.3.0 7f1db0f0c000-7f1db0f0d000 rw-p 00004000 08:01 521455 /lib/x86_64-linux-gnu/libuuid.so.1.3.0 7f1db0f0d000-7f1db0f24000 r-xp 00000000 08:01 271415 /usr/lib/x86_64-linux-gnu/libICE.so.6.3.0 7f1db0f24000-7f1db1123000 ---p 00017000 08:01 271415 /usr/lib/x86_64-linux-gnu/libICE.so.6.3.0 7f1db1123000-7f1db1125000 rw-p 00016000 08:01 271415 /usr/lib/x86_64-linux-gnu/libICE.so.6.3.0 7f1db1125000-7f1db1128000 rw-p 00000000 00:00 0 7f1db1128000-7f1db112f000 r-xp 00000000 08:01 271417 /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1 7f1db112f000-7f1db132e000 ---p 00007000 08:01 271417 /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1 7f1db132e000-7f1db132f000 rw-p 00006000 08:01 271417 /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1 7f1db132f000-7f1db1334000 r-xp 00000000 08:01 270065 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 7f1db1334000-7f1db1533000 ---p 00005000 08:01 270065 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 7f1db1533000-7f1db1534000 rw-p 00004000 08:01 270065 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 7f1db1534000-7f1db1537000 r-xp 00000000 08:01 270059 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 7f1db1537000-7f1db1736000 ---p 00003000 08:01 270059 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 7f1db1736000-7f1db1737000 r--p 00002000 08:01 270059 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 7f1db1737000-7f1db1738000 rw-p 00003000 08:01 270059 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 7f1db1738000-7f1db1797000 r-xp 00000000 08:01 271512 /usr/lib/x86_64-linux-gnu/libXt.so.6.0.0 7f1db1797000-7f1db1997000 ---p 0005f000 08:01 271512 /usr/lib/x86_64-linux-gnu/libXt.so.6.0.0 7f1db1997000-7f1db1998000 r--p 0005f000 08:01 271512 /usr/lib/x86_64-linux-gnu/libXt.so.6.0.0 7f1db1998000-7f1db199d000 rw-p 00060000 08:01 271512 /usr/lib/x86_64-linux-gnu/libXt.so.6.0.0 7f1db199d000-7f1db199e000 rw-p 00000000 00:00 0 7f1db199e000-7f1db19a5000 r-xp 00000000 08:01 521242 /lib/x86_64-linux-gnu/librt-2.18.so 7f1db19a5000-7f1db1ba4000 ---p 00007000 08:01 521242 /lib/x86_64-linux-gnu/librt-2.18.so 7f1db1ba4000-7f1db1ba5000 r--p 00006000 08:01 521242 /lib/x86_64-linux-gnu/librt-2.18.so 7f1db1ba5000-7f1db1ba6000 rw-p 00007000 08:01 521242 /lib/x86_64-linux-gnu/librt-2.18.so 7f1db1ba6000-7f1db1bb1000 r-xp 00000000 08:01 270264 /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0 7f1db1bb1000-7f1db1db0000 ---p 0000b000 08:01 270264 /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0 7f1db1db0000-7f1db1db1000 r--p 0000a000 08:01 270264 /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0 7f1db1db1000-7f1db1db2000 rw-p 0000b000 08:01 270264 /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0 7f1db1db2000-7f1db1db7000 r-xp 00000000 08:01 270342 /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0 7f1db1db7000-7f1db1fb6000 ---p 00005000 08:01 270342 /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0 7f1db1fb6000-7f1db1fb7000 r--p 00004000 08:01 270342 /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0 7f1db1fb7000-7f1db1fb8000 rw-p 00005000 08:01 270342 /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0 7f1db1fb8000-7f1db1fd6000 r-xp 00000000 08:01 270070 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 7f1db1fd6000-7f1db21d5000 ---p 0001e000 08:01 270070 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 7f1db21d5000-7f1db21d6000 r--p 0001d000 08:01 270070 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 7f1db21d6000-7f1db21d7000 rw-p 0001e000 08:01 270070 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 7f1db21d7000-7f1db21da000 r-xp 00000000 08:01 270293 /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0 7f1db21da000-7f1db23da000 ---p 00003000 08:01 270293 /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0 7f1db23da000-7f1db23db000 r--p 00003000 08:01 270293 /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0 7f1db23db000-7f1db23dc000 rw-p 00004000 08:01 270293 /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0 7f1db23dc000-7f1db23f1000 r-xp 00000000 08:01 270334 /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0 7f1db23f1000-7f1db25f0000 ---p 00015000 08:01 270334 /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0 7f1db25f0000-7f1db25f2000 r--p 00014000 08:01 270334 /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0 7f1db25f2000-7f1db25f3000 rw-p 00016000 08:01 270334 /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0 7f1db25f3000-7f1db25f4000 r-xp 00000000 08:01 270305 /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0 7f1db25f4000-7f1db27f3000 ---p 00001000 08:01 270305 /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0 7f1db27f3000-7f1db27f4000 r--p 00000000 08:01 270305 /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0 7f1db27f4000-7f1db27f5000 rw-p 00001000 08:01 270305 /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0 7f1db27f5000-7f1db27fa000 r-xp 00000000 08:01 270336 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 7f1db27fa000-7f1db29f9000 ---p 00005000 08:01 270336 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 7f1db29f9000-7f1db29fa000 r--p 00004000 08:01 270336 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 7f1db29fa000-7f1db29fb000 rw-p 00005000 08:01 270336 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 7f1db29fb000-7f1db29fd000 r-xp 00000000 08:01 270338 /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0 7f1db29fd000-7f1db2bfc000 ---p 00002000 08:01 270338 /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0 7f1db2bfc000-7f1db2bfd000 r--p 00001000 08:01 270338 /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0 7f1db2bfd000-7f1db2bfe000 rw-p 00002000 08:01 270338 /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0 7f1db2bfe000-7f1db2c1f000 r-xp 00000000 08:01 270266 /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0 7f1db2c1f000-7f1db2e1f000 ---p 00021000 08:01 270266 /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0 7f1db2e1f000-7f1db2e22000 r--p 00021000 08:01 270266 /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0 7f1db2e22000-7f1db2e23000 rw-p 00024000 08:01 270266 /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0 7f1db2e23000-7f1db2e24000 rw-p 00000000 00:00 0 7f1db2e24000-7f1db2f59000 r-xp 00000000 08:01 270078 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 7f1db2f59000-7f1db3159000 ---p 00135000 08:01 270078 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 7f1db3159000-7f1db315a000 r--p 00135000 08:01 270078 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 7f1db315a000-7f1db315f000 rw-p 00136000 08:01 270078 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 7f1db315f000-7f1db3170000 r-xp 00000000 08:01 270340 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 7f1db3170000-7f1db336f000 ---p 00011000 08:01 270340 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 7f1db336f000-7f1db3370000 r--p 00010000 08:01 270340 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 7f1db3370000-7f1db3371000 rw-p 00011000 08:01 270340 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 7f1db3371000-7f1db3380000 r-xp 00000000 08:01 270932 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 7f1db3380000-7f1db357f000 ---p 0000f000 08:01 270932 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 7f1db357f000-7f1db3580000 r--p 0000e000 08:01 270932 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 7f1db3580000-7f1db3581000 rw-p 0000f000 08:01 270932 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 7f1db3581000-7f1db3599000 r-xp 00000000 08:01 272833 /usr/lib/x86_64-linux-gnu/libXmu.so.6.2.0 7f1db3599000-7f1db3799000 ---p 00018000 08:01 272833 /usr/lib/x86_64-linux-gnu/libXmu.so.6.2.0 7f1db3799000-7f1db379b000 rw-p 00018000 08:01 272833 /usr/lib/x86_64-linux-gnu/libXmu.so.6.2.0 7f1db379b000-7f1db37b0000 r-xp 00000000 08:01 521230 /lib/x86_64-linux-gnu/libgcc_s.so.1 7f1db37b0000-7f1db39b0000 ---p 00015000 08:01 521230 /lib/x86_64-linux-gnu/libgcc_s.so.1 7f1db39b0000-7f1db39b1000 rw-p 00015000 08:01 521230 /lib/x86_64-linux-gnu/libgcc_s.so.1 7f1db39b1000-7f1db3a96000 r-xp 00000000 08:01 265853 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19 7f1db3a96000-7f1db3c96000 ---p 000e5000 08:01 265853 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19 7f1db3c96000-7f1db3c9e000 r--p 000e5000 08:01 265853 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19 7f1db3c9e000-7f1db3ca0000 rw-p 000ed000 08:01 265853 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19 7f1db3ca0000-7f1db3cb5000 rw-p 00000000 00:00 0 7f1db3cb5000-7f1db3cf7000 r-xp 00000000 08:01 299556 /usr/lib/x86_64-linux-gnu/libglut.so.3.9.0 7f1db3cf7000-7f1db3ef7000 ---p 00042000 08:01 299556 /usr/lib/x86_64-linux-gnu/libglut.so.3.9.0 7f1db3ef7000-7f1db3efb000 r--p 00042000 08:01 299556 /usr/lib/x86_64-linux-gnu/libglut.so.3.9.0 7f1db3efb000-7f1db3f00000 rw-p 00046000 08:01 299556 /usr/lib/x86_64-linux-gnu/libglut.so.3.9.0 7f1db3f00000-7f1db3f6c000 r-xp 00000000 08:01 272794 /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1 7f1db3f6c000-7f1db416c000 ---p 0006c000 08:01 272794 /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1 7f1db416c000-7f1db416d000 r--p 0006c000 08:01 272794 /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1 7f1db416d000-7f1db416e000 rw-p 0006d000 08:01 272794 /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1 7f1db416e000-7f1db41c8000 r-xp 00000000 08:01 270344 /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0 7f1db41c8000-7f1db43c8000 ---p 0005a000 08:01 270344 /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0 7f1db43c8000-7f1db43ca000 r--p 0005a000 08:01 270344 /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0 7f1db43ca000-7f1db43cb000 rw-p 0005c000 08:01 270344 /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0 7f1db43cb000-7f1db43cc000 rw-p 00000000 00:00 0 7f1db43cc000-7f1db444d000 r-xp 00000000 08:01 273938 /usr/lib/x86_64-linux-gnu/libGLEW.so.1.10.0 7f1db444d000-7f1db464d000 ---p 00081000 08:01 273938 /usr/lib/x86_64-linux-gnu/libGLEW.so.1.10.0 7f1db464d000-7f1db4653000 rw-p 00081000 08:01 273938 /usr/lib/x86_64-linux-gnu/libGLEW.so.1.10.0 7f1db4653000-7f1db4658000 rw-p 00000000 00:00 0 7f1db4658000-7f1db46f6000 r-xp 00000000 08:01 270326 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.11.1 7f1db46f6000-7f1db48f5000 ---p 0009e000 08:01 270326 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.11.1 7f1db48f5000-7f1db48fb000 r--p 0009d000 08:01 270326 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.11.1 7f1db48fb000-7f1db48fc000 rw-p 000a3000 08:01 270326 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.11.1 7f1db48fc000-7f1db4922000 r-xp 00000000 08:01 525952 /lib/x86_64-linux-gnu/libpng12.so.0.50.0 7f1db4922000-7f1db4b21000 ---p 00026000 08:01 525952 /lib/x86_64-linux-gnu/libpng12.so.0.50.0 7f1db4b21000-7f1db4b22000 r--p 00025000 08:01 525952 /lib/x86_64-linux-gnu/libpng12.so.0.50.0 7f1db4b22000-7f1db4b23000 rw-p 00026000 08:01 525952 /lib/x86_64-linux-gnu/libpng12.so.0.50.0 7f1db4b23000-7f1db4f84000 r-xp 00000000 08:01 300014 /usr/lib/python2.7/dist-packages/pymol/_cmd.so 7f1db4f84000-7f1db5184000 ---p 00461000 08:01 300014 /usr/lib/python2.7/dist-packages/pymol/_cmd.so 7f1db5184000-7f1db5193000 r--p 00461000 08:01 300014 /usr/lib/python2.7/dist-packages/pymol/_cmd.so 7f1db5193000-7f1db55bd000 rw-p 00470000 08:01 300014 /usr/lib/python2.7/dist-packages/pymol/_cmd.so 7f1db55bd000-7f1db5601000 rw-p 00000000 00:00 0 7f1db5601000-7f1db57c6000 r--p 00000000 08:01 260609 /usr/lib/locale/locale-archive 7f1db57c6000-7f1db5966000 r-xp 00000000 08:01 521248 /lib/x86_64-linux-gnu/libc-2.18.so 7f1db5966000-7f1db5b65000 ---p 001a0000 08:01 521248 /lib/x86_64-linux-gnu/libc-2.18.so 7f1db5b65000-7f1db5b69000 r--p 0019f000 08:01 521248 /lib/x86_64-linux-gnu/libc-2.18.so 7f1db5b69000-7f1db5b6b000 rw-p 001a3000 08:01 521248 /lib/x86_64-linux-gnu/libc-2.18.so 7f1db5b6b000-7f1db5b6f000 rw-p 00000000 00:00 0 7f1db5b6f000-7f1db5c70000 r-xp 00000000 08:01 521245 /lib/x86_64-linux-gnu/libm-2.18.so 7f1db5c70000-7f1db5e70000 ---p 00101000 08:01 521245 /lib/x86_64-linux-gnu/libm-2.18.so 7f1db5e70000-7f1db5e71000 r--p 00101000 08:01 521245 /lib/x86_64-linux-gnu/libm-2.18.so 7f1db5e71000-7f1db5e72000 rw-p 00102000 08:01 521245 /lib/x86_64-linux-gnu/libm-2.18.so 7f1db5e72000-7f1db5e89000 r-xp 00000000 08:01 521435 /lib/x86_64-linux-gnu/libz.so.1.2.8 7f1db5e89000-7f1db6088000 ---p 00017000 08:01 521435 /lib/x86_64-linux-gnu/libz.so.1.2.8 7f1db6088000-7f1db6089000 r--p 00016000 08:01 521435 /lib/x86_64-linux-gnu/libz.so.1.2.8 7f1db6089000-7f1db608a000 rw-p 00017000 08:01 521435 /lib/x86_64-linux-gnu/libz.so.1.2.8 7f1db608a000-7f1db608c000 r-xp 00000000 08:01 521236 /lib/x86_64-linux-gnu/libutil-2.18.so 7f1db608c000-7f1db628b000 ---p 00002000 08:01 521236 /lib/x86_64-linux-gnu/libutil-2.18.so 7f1db628b000-7f1db628c000 r--p 00001000 08:01 521236 /lib/x86_64-linux-gnu/libutil-2.18.so 7f1db628c000-7f1db628d000 rw-p 00002000 08:01 521236 /lib/x86_64-linux-gnu/libutil-2.18.so 7f1db628d000-7f1db6290000 r-xp 00000000 08:01 521240 /lib/x86_64-linux-gnu/libdl-2.18.so 7f1db6290000-7f1db648f000 ---p 00003000 08:01 521240 /lib/x86_64-linux-gnu/libdl-2.18.so 7f1db648f000-7f1db6490000 r--p 00002000 08:01 521240 /lib/x86_64-linux-gnu/libdl-2.18.so 7f1db6490000-7f1db6491000 rw-p 00003000 08:01 521240 /lib/x86_64-linux-gnu/libdl-2.18.so 7f1db6491000-7f1db64a9000 r-xp 00000000 08:01 521234 /lib/x86_64-linux-gnu/libpthread-2.18.so 7f1db64a9000-7f1db66a8000 ---p 00018000 08:01 521234 /lib/x86_64-linux-gnu/libpthread-2.18.so 7f1db66a8000-7f1db66a9000 r--p 00017000 08:01 521234 /lib/x86_64-linux-gnu/libpthread-2.18.so 7f1db66a9000-7f1db66aa000 rw-p 00018000 08:01 521234 /lib/x86_64-linux-gnu/libpthread-2.18.so 7f1db66aa000-7f1db66ae000 rw-p 00000000 00:00 0 7f1db66ae000-7f1db66b2000 r-xp 00000000 08:01 521254 /lib/x86_64-linux-gnu/libSegFault.so 7f1db66b2000-7f1db68b1000 ---p 00004000 08:01 521254 /lib/x86_64-linux-gnu/libSegFault.so 7f1db68b1000-7f1db68b2000 r--p 00003000 08:01 521254 /lib/x86_64-linux-gnu/libSegFault.so 7f1db68b2000-7f1db68b3000 rw-p 00004000 08:01 521254 /lib/x86_64-linux-gnu/libSegFault.so 7f1db68b3000-7f1db68d3000 r-xp 00000000 08:01 521238 /lib/x86_64-linux-gnu/ld-2.18.so 7f1db6902000-7f1db69c2000 rw-p 00000000 00:00 0 7f1db69f3000-7f1db6ab8000 rw-p 00000000 00:00 0 7f1db6acf000-7f1db6ad2000 rw-p 00000000 00:00 0 7f1db6ad2000-7f1db6ad3000 r--p 0001f000 08:01 521238 /lib/x86_64-linux-gnu/ld-2.18.so 7f1db6ad3000-7f1db6ad4000 rw-p 00020000 08:01 521238 /lib/x86_64-linux-gnu/ld-2.18.so 7f1db6ad4000-7f1db6ad5000 rw-p 00000000 00:00 0 7fff4c0d5000-7fff4c0f6000 rw-p 00000000 00:00 0 7fff4c178000-7fff4c17a000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]