Exemple #1
0
    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)
Exemple #2
0
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
Exemple #3
0
    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)
Exemple #4
0
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))
Exemple #5
0
    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)
Exemple #6
0
    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)
Exemple #7
0
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))
Exemple #8
0
    def paginate_queryset(self, queryset, request, view=None):
        self.count = queryset.grouped_count
        self.limit = self.get_limit(request)

        if self.limit is None:
            return None

        self.offset = self.get_offset(request)

        self.request = request
        if self.count > self.limit and self.template is not None:
            self.display_page_controls = True

        if self.count == 0 or self.offset > self.count:
            return []

        mapping_groups = []
        self.facets = self.create_facets(queryset)
        for _, group in queryset.grouped_slice(self.offset,
                                               self.limit).items():
            mapping_groups.append(
                MappingsSerializer.build_mapping_group(group))

        return mapping_groups