@@ -338,6 +338,134 @@ def update_attribute(self, feature_id, attribute_key, old_value, new_value, orga
338338 data = self ._update_data (data , organism , sequence )
339339 return self .post ('deleteAttribute' , data )
340340
341+ def add_dbxref (self , feature_id , db , accession , organism = None , sequence = None ):
342+ """
343+ Add a dbxref to a feature
344+
345+ :type feature_id: str
346+ :param feature_id: Feature UUID
347+
348+ :type db: str
349+ :param db: DB Name (e.g. PMID)
350+
351+ :type accession: str
352+ :param accession: Accession Value
353+
354+ :type organism: str
355+ :param organism: Organism Common Name
356+
357+ :type sequence: str
358+ :param sequence: Sequence Name
359+
360+ This seems to show two attributes being added, but it behaves like those two are one.
361+
362+ :rtype: dict
363+ :return: A standard apollo feature dictionary ({"features": [{...}]})
364+ """
365+ data = {
366+ 'features' : [
367+ {
368+ 'uniquename' : feature_id ,
369+ 'dbxrefs' : [
370+ {
371+ 'db' : db ,
372+ 'accession' : accession ,
373+ }
374+ ]
375+ }
376+ ]
377+ }
378+ data = self ._update_data (data , organism , sequence )
379+ return self .post ('addDbxref' , data )
380+
381+ def delete_dbxref (self , feature_id , db , accession , organism = None , sequence = None ):
382+ """
383+ Delete a dbxref from a feature
384+
385+ :type feature_id: str
386+ :param feature_id: Feature UUID
387+
388+ :type db: str
389+ :param db: DB Name (e.g. PMID)
390+
391+ :type accession: str
392+ :param accession: Accession Value
393+
394+ :type organism: str
395+ :param organism: Organism Common Name
396+
397+ :type sequence: str
398+ :param sequence: Sequence Name
399+
400+ :rtype: dict
401+ :return: A standard apollo feature dictionary ({"features": [{...}]})
402+ """
403+ data = {
404+ 'features' : [
405+ {
406+ 'uniquename' : feature_id ,
407+ 'dbxrefs' : [
408+ {
409+ 'db' : db ,
410+ 'accession' : accession ,
411+ }
412+ ]
413+ }
414+ ]
415+ }
416+ data = self ._update_data (data , organism , sequence )
417+ return self .post ('deleteDbxref' , data )
418+
419+ def update_dbxref (self , feature_id , old_db , old_accession , new_db , new_accession , organism = None , sequence = None ):
420+ """
421+ Delete a dbxref from a feature
422+
423+ :type feature_id: str
424+ :param feature_id: Feature UUID
425+
426+ :type old_db: str
427+ :param old_db: Old DB Name (e.g. PMID)
428+
429+ :type old_accession: str
430+ :param old_accession: Old accession Value
431+
432+ :type new_db: str
433+ :param new_db: New DB Name (e.g. PMID)
434+
435+ :type new_accession: str
436+ :param new_accession: New accession Value
437+
438+ :type organism: str
439+ :param organism: Organism Common Name
440+
441+ :type sequence: str
442+ :param sequence: Sequence Name
443+
444+ :rtype: dict
445+ :return: A standard apollo feature dictionary ({"features": [{...}]})
446+ """
447+ data = {
448+ 'features' : [
449+ {
450+ 'uniquename' : feature_id ,
451+ 'old_dbxrefs' : [
452+ {
453+ 'db' : old_db ,
454+ 'accession' : old_accession ,
455+ }
456+ ],
457+ 'new_dbxrefs' : [
458+ {
459+ 'db' : new_db ,
460+ 'accession' : new_accession ,
461+ }
462+ ]
463+ }
464+ ]
465+ }
466+ data = self ._update_data (data , organism , sequence )
467+ return self .post ('deleteDbxref' , data )
468+
341469 def get_features (self , organism = None , sequence = None ):
342470 """
343471 Get the features for an organism / sequence
0 commit comments