14
14
from os .path import join as pjoin
15
15
import tempfile
16
16
import getpass
17
+ import logging
17
18
import warnings
18
19
import sqlite3
19
20
27
28
from .optpkg import optional_package
28
29
dicom , have_dicom , _ = optional_package ('dicom' )
29
30
31
+ logger = logging .getLogger ('nibabel.dft' )
30
32
31
33
class DFTError (Exception ):
32
34
"base class for DFT exceptions"
@@ -153,7 +155,7 @@ def as_nifti(self):
153
155
for (i , si ) in enumerate (self .storage_instances ):
154
156
if i + 1 != si .instance_number :
155
157
raise InstanceStackError (self , i , si )
156
- print 'reading %d/%d' % (i + 1 , len (self .storage_instances ))
158
+ logger . info ( 'reading %d/%d' % (i + 1 , len (self .storage_instances ) ))
157
159
d = self .storage_instances [i ].dicom ()
158
160
data [i , :, :] = d .pixel_array
159
161
@@ -288,7 +290,7 @@ def update_cache(base_dir):
288
290
for dir in sorted (mtimes .keys ()):
289
291
if dir in db_mtimes and mtimes [dir ] <= db_mtimes [dir ]:
290
292
continue
291
- print 'updating %s' % dir
293
+ logger . debug ( 'updating %s' % dir )
292
294
_update_dir (c , dir , files_by_dir [dir ], studies , series , storage_instances )
293
295
if dir in db_mtimes :
294
296
query = "UPDATE directory SET mtime = ? WHERE path = ?"
@@ -332,20 +334,20 @@ def get_studies(base_dir=None):
332
334
return studies
333
335
334
336
def _update_dir (c , dir , files , studies , series , storage_instances ):
335
- print dir
337
+ logger . debug ( 'Updating directory %s' % dir )
336
338
c .execute ("SELECT name, mtime FROM file WHERE directory = ?" , (dir , ))
337
339
db_mtimes = dict (c )
338
340
for fname in db_mtimes :
339
341
if fname not in files :
340
- print ' remove %s' % fname
342
+ logger . debug ( ' remove %s' % fname )
341
343
c .execute ("DELETE FROM file WHERE directory = ? AND name = ?" ,
342
344
(dir , fname ))
343
345
for fname in files :
344
346
mtime = os .lstat ('%s/%s' % (dir , fname )).st_mtime
345
347
if fname in db_mtimes and mtime <= db_mtimes [fname ]:
346
- print ' okay %s' % fname
348
+ logger . debug ( ' okay %s' % fname )
347
349
else :
348
- print ' update %s' % fname
350
+ logger . debug ( ' update %s' % fname )
349
351
si_uid = _update_file (c , dir , fname , studies , series , storage_instances )
350
352
if fname not in db_mtimes :
351
353
query = """INSERT INTO file (directory,
@@ -365,14 +367,14 @@ def _update_file(c, path, fname, studies, series, storage_instances):
365
367
try :
366
368
do = dicom .read_file ('%s/%s' % (path , fname ))
367
369
except dicom .filereader .InvalidDicomError :
368
- print ' not a DICOM file'
370
+ logger . debug ( ' not a DICOM file' )
369
371
return None
370
372
try :
371
373
study_comments = do .StudyComments
372
374
except AttributeError :
373
375
study_comments = ''
374
376
try :
375
- print ' storage instance %s' % str (do .SOPInstanceUID )
377
+ logger . debug ( ' storage instance %s' % str (do .SOPInstanceUID ) )
376
378
if str (do .StudyInstanceUID ) not in studies :
377
379
query = """INSERT INTO study (uid,
378
380
date,
@@ -420,7 +422,7 @@ def _update_file(c, path, fname, studies, series, storage_instances):
420
422
c .execute (query , params )
421
423
storage_instances .append (str (do .SOPInstanceUID ))
422
424
except AttributeError , data :
423
- print ' %s' % str (data )
425
+ logger . debug ( ' %s' % str (data ) )
424
426
return None
425
427
return str (do .SOPInstanceUID )
426
428
@@ -468,13 +470,13 @@ def clear_cache():
468
470
def _init_db (verbose = True ):
469
471
""" Initialize database """
470
472
if verbose :
471
- print 'db filename: ' + DB_FNAME
473
+ logger . info ( 'db filename: ' + DB_FNAME )
472
474
global DB
473
475
DB = sqlite3 .connect (DB_FNAME , check_same_thread = False )
474
476
with _db_change () as c :
475
477
c .execute ("SELECT COUNT(*) FROM sqlite_master WHERE type = 'table'" )
476
478
if c .fetchone ()[0 ] == 0 :
477
- print 'create'
479
+ logger . debug ( 'create' )
478
480
for q in CREATE_QUERIES :
479
481
c .execute (q )
480
482
0 commit comments