@@ -131,8 +131,8 @@ def __init__(
131131 # obo version not specified -> try to identify from mzML by self._init_iter
132132 self .info ["obo_version" ] = None
133133
134- self .iter = self ._init_iter ()
135134 self .OT = self ._init_obo_translator ()
135+ self .iter = self ._init_iter ()
136136
137137 def __next__ (self ):
138138 """
@@ -295,6 +295,8 @@ def _obo_version_validator(version):
295295 2017 : "4.1.0" ,
296296 2018 : "4.1.10" ,
297297 2019 : "4.1.22" ,
298+ 2024 : "4.1.79" ,
299+ 2025 : "4.1.188"
298300 }
299301 version_fixed = None
300302 if obo_rgx .match (version ):
@@ -343,7 +345,7 @@ def _init_obo_translator(self):
343345 # parse obo, check MS tags and if they are ok in minimum.py (minimum
344346 # required) ...
345347 if self .info .get ("obo_version" , None ) is None :
346- self .info ["obo_version" ] = "1 .1.0 "
348+ self .info ["obo_version" ] = "4 .1.79 "
347349 obo_translator = obo .OboTranslator .from_cache (version = self .info ["obo_version" ])
348350
349351 return obo_translator
@@ -403,6 +405,9 @@ def _init_iter(self):
403405 elif element .tag .endswith ("}dataProcessingList" ):
404406 self .info ["data_processing_list" ] = True
405407 self .info ["data_processing_list_element" ] = element
408+ elif element .tag .endswith ("}cvParam" ):
409+ if self .term_is_a_member (element .attrib .get ('accession' ), "MS:1000494" ):
410+ self .info ["instrument_name" ] = element .attrib .get ('name' )
406411
407412 elif element .tag .endswith ("}spectrumList" ):
408413 spec_cnt = element .attrib .get ("count" )
@@ -453,6 +458,23 @@ def get_chromatogram_count(self):
453458 def close (self ):
454459 self .info ["file_object" ].close ()
455460
461+ def term_is_a_member (self , tested_term , member_of_term ):
462+ """
463+ Use translated obo file to check if given term is_a member of the
464+
465+ Returns:
466+ is_member (bool) whether given term is a member of member_of_term
467+
468+ """
469+ is_member = False
470+ try :
471+ term_in = self .OT [tested_term ]
472+ if term_in :
473+ is_member = self .OT .id [tested_term ]['is_a' ].startswith (member_of_term )
474+ except KeyError :
475+ print (f'term not found ({ tested_term } )' )
476+ return is_member
477+
456478
457479if __name__ == "__main__" :
458480 print (__doc__ )
0 commit comments