http://www.mediawiki.org/wiki/Special:Code/pywikipedia/11180

Revision: 11180
Author:   drtrigon
Date:     2013-03-05 19:24:16 +0000 (Tue, 05 Mar 2013)
Log Message:
-----------
bug fix; LinAlgError: SVD did not converge (which should not happen in fact)

Modified Paths:
--------------
    trunk/pywikipedia/catimages.py

Modified: trunk/pywikipedia/catimages.py
===================================================================
--- trunk/pywikipedia/catimages.py      2013-03-04 14:10:51 UTC (rev 11179)
+++ trunk/pywikipedia/catimages.py      2013-03-05 19:24:16 UTC (rev 11180)
@@ -639,23 +639,27 @@
         #pywikibot.output( u'FFT_Comp: %s %s' % (1.-float(i*i)/(s[0]*s[1]), 
peaks) )
 
         # svd
-        U, S, Vh = linalg.svd(np.matrix(gray))
-        #U, S, Vh = linalg.svd(np.matrix(fft))      # do combined 'svd of fft'
-        SS = np.zeros(s)
-        ss = min(s)
-        for i in range(0, len(S)-1, max( int(len(S)/100.), 1 )):   # 
(len(S)==ss) -> else; problem!
-            #SS = np.zeros(s)
-            #SS[:(ss-i),:(ss-i)] = np.diag(S[:(ss-i)])
-            SS[:(i+1),:(i+1)] = np.diag(S[:(i+1)])
-            #Image.fromarray(np.dot(np.dot(U, SS), Vh) - gray).show()
-            #if ((np.dot(np.dot(U, SS), Vh) - gray).max() >= (255/4.)):
-            if ((np.dot(np.dot(U, SS), Vh) - gray).max() < (255/4.)):
-                break
-        #data['SVD_Comp'] = 1.-float(i)/ss
-        data['SVD_Comp'] = float(i)/ss
-        data['SVD_Min']  = S[:(i+1)].min()
-        #pywikibot.output( u'SVD_Comp: %s' % (1.-float(i)/ss) )
-        #pywikibot.output( u'SVD_Comp: %s %s %s' % (float(i)/ss, 
S[:(i+1)].min(), S[:(i+1)].max()) )
+        try:
+            U, S, Vh = linalg.svd(np.matrix(gray))
+            #U, S, Vh = linalg.svd(np.matrix(fft))      # do combined 'svd of 
fft'
+            SS = np.zeros(s)
+            ss = min(s)
+            for i in range(0, len(S)-1, max( int(len(S)/100.), 1 )):   # 
(len(S)==ss) -> else; problem!
+                #SS = np.zeros(s)
+                #SS[:(ss-i),:(ss-i)] = np.diag(S[:(ss-i)])
+                SS[:(i+1),:(i+1)] = np.diag(S[:(i+1)])
+                #Image.fromarray(np.dot(np.dot(U, SS), Vh) - gray).show()
+                #if ((np.dot(np.dot(U, SS), Vh) - gray).max() >= (255/4.)):
+                if ((np.dot(np.dot(U, SS), Vh) - gray).max() < (255/4.)):
+                    break
+            #data['SVD_Comp'] = 1.-float(i)/ss
+            data['SVD_Comp'] = float(i)/ss
+            data['SVD_Min']  = S[:(i+1)].min()
+            #pywikibot.output( u'SVD_Comp: %s' % (1.-float(i)/ss) )
+            #pywikibot.output( u'SVD_Comp: %s %s %s' % (float(i)/ss, 
S[:(i+1)].min(), S[:(i+1)].max()) )
+        except linalg.LinAlgError:
+            # SVD did not converge; in fact this should NEVER happen...(?!?)
+            pass
 
         if data:
             self._buffer_Geometry.update(data)


_______________________________________________
Pywikipedia-svn mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn

Reply via email to