21
21
22
22
from .. import get_info
23
23
from .filemanip import (md5 , hashlib , hash_infile )
24
- from .. import logging
24
+ from .. import logging , __version__
25
25
iflogger = logging .getLogger ('interface' )
26
26
27
27
foaf = pm .Namespace ("foaf" , "http://xmlns.com/foaf/0.1/" )
@@ -185,7 +185,7 @@ def safe_encode(x, as_literal=True):
185
185
return dumps (x )
186
186
return pm .Literal (dumps (x ), nipype_ns ['pickle' ])
187
187
except TypeError as e :
188
- iflogger .info (e )
188
+ iflogger .debug (e )
189
189
value = "Could not encode: " + str (e )
190
190
if not as_literal :
191
191
return value
@@ -239,7 +239,7 @@ def prov_encode(graph, value, create_container=True):
239
239
return entity
240
240
241
241
242
- def write_provenance (results , filename = 'provenance' , format = 'turtle ' ):
242
+ def write_provenance (results , filename = 'provenance' , format = 'all ' ):
243
243
ps = ProvStore ()
244
244
ps .add_results (results )
245
245
return ps .write_provenance (filename = filename , format = format )
@@ -371,7 +371,8 @@ def add_results(self, results, keep_provenance=False):
371
371
user_agent = self .g .agent (get_attr_id (user_attr ), user_attr )
372
372
agent_attr = {pm .PROV ["type" ]: pm .PROV ["SoftwareAgent" ],
373
373
pm .PROV ["label" ]: "Nipype" ,
374
- foaf ["name" ]: safe_encode ("Nipype" )}
374
+ foaf ["name" ]: safe_encode ("Nipype" ),
375
+ nipype_ns ["version" ]: __version__ }
375
376
for key , value in list (get_info ().items ()):
376
377
agent_attr .update ({nipype_ns [key ]: safe_encode (value )})
377
378
software_agent = self .g .agent (get_attr_id (agent_attr ), agent_attr )
@@ -384,6 +385,17 @@ def write_provenance(self, filename='provenance', format='all'):
384
385
if format in ['provn' , 'all' ]:
385
386
with open (filename + '.provn' , 'wt' ) as fp :
386
387
fp .writelines (self .g .get_provn ())
387
- if format in ['json' , 'all' ]:
388
- g .serialize (filename + '.json' , format = 'json' )
388
+ try :
389
+ if format in ['rdf' , 'all' ]:
390
+ if len (self .g .bundles ) == 0 :
391
+ rdf_format = 'turtle'
392
+ ext = '.ttl'
393
+ else :
394
+ rdf_format = 'trig'
395
+ ext = '.trig'
396
+ self .g .serialize (filename + ext , format = 'rdf' , rdf_format = rdf_format )
397
+ if format in ['jsonld' ]:
398
+ self .g .serialize (filename + '.jsonld' , format = 'rdf' , rdf_format = 'json-ld' , indent = 4 )
399
+ except pm .serializers .DoNotExist :
400
+ pass
389
401
return self .g
0 commit comments