def get(self, request, pk): mapping = get_mapping(pk) authenticated = False if request.user and request.user.is_authenticated: authenticated = True email_recipients_list = { recipient_id: recipient_details.get('name') for (recipient_id, recipient_details) in settings.EMAIL_RECIPIENT_LIST.items() } data = { 'taxonomy': build_taxonomy_data(mapping), 'mapping': MappingsSerializer.build_mapping(mapping, fetch_sequence=True, authenticated=authenticated), 'relatedEntries': { 'mapped': build_related_mappings_data(mapping), 'unmapped': build_related_unmapped_entries_data(mapping) }, 'emailRecipientsList': email_recipients_list } serializer = MappingSerializer(data) return Response(serializer.data)
def build_related_mappings_data(mapping): """ Return the list of mappings sharing the same ENST or Uniprot accession of the given mapping. Parameters ---------- mapping : Mapping object Returns ------- list List of objects that are related to the same mapping group """ # related mappings share the same group_id and tax id mapping_mh = mapping.mapping_history.latest( 'release_mapping_history__time_mapped') mapping_mh_rmh = mapping_mh.release_mapping_history mapping_grouping_id = mapping_mh.grouping_id related_mappings_mh = MappingHistory.objects.filter( release_mapping_history=mapping_mh_rmh, grouping_id=mapping_grouping_id) related_mappings = [] for mh in related_mappings_mh: m = mh.mapping if m.mapping_id != mapping.mapping_id: related_mappings.append( MappingsSerializer.build_mapping(m, fetch_sequence=False)) return related_mappings
def post(self, request, pk, difference): mapping = get_mapping(pk) mapping.alignment_difference = difference mapping.save() serializer = EnsemblUniprotMappingSerializer( MappingsSerializer.build_mapping(mapping)) return Response(serializer.data)
def build_related_mappings_data(mapping): """ Return the list of mappings sharing the same ENST or Uniprot accession of the given mapping. """ # related mapping share the same group_id and tax id mappings = Mapping.objects.filter( unique_grouping_id=mapping.unique_grouping_id, uniprot__uniprot_tax_id=mapping.uniprot.uniprot_tax_id).exclude( pk=mapping.mapping_id) return list( map( lambda m: MappingsSerializer.build_mapping(m, fetch_sequence=False ), mappings))
def get(self, request, pk): mapping = get_mapping(pk) data = { 'taxonomy': build_taxonomy_data(mapping), 'mapping': MappingsSerializer.build_mapping( mapping, fetch_sequence=True, authenticated=request.user.is_authenticated), 'relatedMappings': build_related_mappings_data(mapping) } serializer = MappingSerializer(data) return Response(serializer.data)
def get(self, request, pk): mapping = get_mapping(pk) data = { 'taxonomy': build_taxonomy_data(mapping), 'mapping': MappingsSerializer.build_mapping( mapping, fetch_sequence=True, authenticated=True if request.user and request.user.is_authenticated else False), 'relatedEntries': { 'mapped': build_related_mappings_data(mapping), 'unmapped': build_related_unmapped_entries_data(mapping) } } serializer = MappingSerializer(data) return Response(serializer.data)
def build_related_mappings_data(mapping): """ Return the list of mappings sharing the same ENST or Uniprot accession of the given mapping. """ # related mappings share the same group_id and tax id mapping_mh = mapping.mapping_history.latest( 'release_mapping_history__time_mapped') mapping_mh_rmh = mapping_mh.release_mapping_history mapping_grouping_id = mapping_mh.grouping_id related_mappings_mh = MappingHistory.objects.filter( release_mapping_history=mapping_mh_rmh, grouping_id=mapping_grouping_id) related_mappings = filter(lambda m: m.mapping_id != mapping.mapping_id, (mh.mapping for mh in related_mappings_mh)) # mappings = Mapping.objects.filter(mapping_history__grouping_id=mapping.mapping_history.latest('release_mapping_history__time_mapped').grouping_id, uniprot__uniprot_tax_id=mapping.uniprot.uniprot_tax_id).exclude(pk=mapping.mapping_id) return list( map( lambda m: MappingsSerializer.build_mapping(m, fetch_sequence=False ), related_mappings))