Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
holtgrewe committed Sep 27, 2022
1 parent 774adf7 commit 04bb398
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 45 deletions.
20 changes: 9 additions & 11 deletions varfish/vueapp/src/components/SubmissionList.vue
Expand Up @@ -93,12 +93,11 @@
placeholder="Select Case"
select-label=""
deselect-label=""
:loading="loadingVariants"
:disabled="loadingVariants"
:options="familyUuids"
:custom-label="getFamilyLabel"
@input="fetchRawModalUserAnnotations()"
@close="fetchRawModalUserAnnotations()"
@select="fetchRawModalUserAnnotations()"
@remove="fetchRawModalUserAnnotations()"
></multiselect>
</div>
<div class="form-group">
Expand Down Expand Up @@ -352,6 +351,7 @@ import { mapActions, mapState } from 'vuex'
import {
getSubmissionLabel,
getVariantId,
HPO_AGE_OF_ONSET,
HPO_INHERITANCE_MODE,
isDiseaseTerm,
Expand Down Expand Up @@ -425,7 +425,7 @@ export default {
*/
fetchRawModalUserAnnotations() {
if (this.familyUuid) {
this.modalUserAnnotations.splice(0, this.modalUserAnnotations.length)
Vue.set(this, 'modalUserAnnotations', [])
this.fetchError = false
this.loadingVariants = true
Vue.set(this, 'rawModalUserAnnotations', null)
Expand All @@ -436,10 +436,6 @@ export default {
.then((res) => {
this.fetchError = false
const getVariantId = (obj) => {
return `${obj.release}-${obj.chromosome}-${obj.start}-${obj.reference}-${obj.alternative}`
}
const collect = (arr) => {
const result = {}
for (const obj of arr) {
Expand Down Expand Up @@ -490,8 +486,11 @@ export default {
'rawModalUserAnnotationsCount',
Object.keys(smallVariants).length
)
const userAnnotations = this._computeUserAnnotations(this.rawModalUserAnnotations)
Array.prototype.push.apply(this.modalUserAnnotations, userAnnotations);
Vue.set(
this,
'modalUserAnnotations',
this._computeUserAnnotations(this.rawModalUserAnnotations)
)
this.loadingVariants = false
})
.catch((error) => {
Expand All @@ -502,7 +501,6 @@ export default {
}
},
/**
* Return filtered data to display in the annotated variant modal.
*/
Expand Down
10 changes: 10 additions & 0 deletions varfish/vueapp/src/helpers.js
Expand Up @@ -31,6 +31,16 @@ export function removeItemOnce(arr, value) {
return arr
}

export function getVariantId(obj, prefix = '') {
return [
obj[prefix + 'release'] || obj[prefix + 'assembly'],
obj[prefix + 'chromosome'],
obj[prefix + 'start'],
obj[prefix + 'reference'],
obj[prefix + 'alternative'],
].join('-')
}

export function removeItemAll(arr, value) {
let i = 0
while (i < arr.length) {
Expand Down
79 changes: 45 additions & 34 deletions varfish/vueapp/src/store/modules/clinvarExport.js
Expand Up @@ -2,7 +2,8 @@ import Vue from 'vue'

import { HPO_INHERITANCE_MODE, isDiseaseTerm, uuidv4 } from '@/helpers'

import clinvarExport from '../../api/clinvarExport'
import clinvarExportApi from '../../api/clinvarExport'
import { getVariantId } from '../../helpers'

/**
* Enum for the valid clinvar export application states.
Expand Down Expand Up @@ -75,31 +76,31 @@ export const actions = {
commit('SET_APP_STATE', AppState.initializing)

Promise.all([
clinvarExport
clinvarExportApi
.getOrganisations(state.appContext)
.then((res) => commit('SET_ORGANISATIONS', res)),
clinvarExport
clinvarExportApi
.getSubmitters(state.appContext)
.then((res) => commit('SET_SUBMITTERS', res)),
clinvarExport
clinvarExportApi
.getAssertionMethods(state.appContext)
.then((res) => commit('SET_ASSERTION_METHODS', res)),
clinvarExport
clinvarExportApi
.getSubmissionSets(state.appContext)
.then((res) => commit('SET_SUBMISSION_SETS', res)),
clinvarExport
clinvarExportApi
.getSubmissions(state.appContext)
.then((res) => commit('SET_SUBMISSIONS', res)),
clinvarExport
clinvarExportApi
.getIndividuals(state.appContext)
.then((res) => commit('SET_INDIVIDUALS', res)),
clinvarExport
clinvarExportApi
.getSubmissionIndividuals(state.appContext)
.then((res) => commit('SET_SUBMISSION_INDIVIDUALS', res)),
clinvarExport
clinvarExportApi
.getFamilies(state.appContext)
.then((res) => commit('SET_FAMILIES', res)),
clinvarExport
clinvarExportApi
.getSubmittingOrgs(state.appContext)
.then((res) => commit('SET_SUBMITTING_ORGS', res)),
]).then(
Expand Down Expand Up @@ -170,13 +171,13 @@ export const actions = {
submissionSetExists
) {
if (submissionSetExists) {
const res = await clinvarExport.updateSubmissionSet(
const res = await clinvarExportApi.updateSubmissionSet(
state.currentSubmissionSet,
state.appContext
)
return res
} else {
const apiSet = await clinvarExport.createSubmissionSet(
const apiSet = await clinvarExportApi.createSubmissionSet(
state.currentSubmissionSet,
state.appContext
)
Expand Down Expand Up @@ -206,15 +207,15 @@ export const actions = {
) {
const localUuid = state.currentSubmissionSet.submitting_orgs[i]
if (localUuid in state.oldModel.submittingOrgs) {
await clinvarExport.updateSubmittingOrg(
await clinvarExportApi.updateSubmittingOrg(
{
...JSON.parse(JSON.stringify(state.submittingOrgs[localUuid])),
sort_order: i,
},
state.appContext
)
} else {
const apiSubmittingOrg = await clinvarExport.createSubmittingOrg(
const apiSubmittingOrg = await clinvarExportApi.createSubmittingOrg(
{
...JSON.parse(JSON.stringify(state.submittingOrgs[localUuid])),
sort_order: i,
Expand All @@ -238,7 +239,7 @@ export const actions = {
for (let i = 0; i < oldSubmissionSet.submitting_orgs.length; i++) {
const localSubmittingOrgUuid = oldSubmissionSet.submitting_orgs[i]
if (!(localSubmittingOrgUuid in state.submittingOrgs)) {
await clinvarExport.deleteSubmittingOrg(
await clinvarExportApi.deleteSubmittingOrg(
state.oldModel.submittingOrgs[localSubmittingOrgUuid],
state.appContext
)
Expand All @@ -257,15 +258,15 @@ export const actions = {
const localSubmission = state.submissions[localSubmissionUuid]
let apiSubmission = null
if (submissionExists) {
apiSubmission = await clinvarExport.updateSubmission(
apiSubmission = await clinvarExportApi.updateSubmission(
{
...JSON.parse(JSON.stringify(localSubmission)),
sort_order: sortOrder,
},
state.appContext
)
} else {
apiSubmission = await clinvarExport.createSubmission(
apiSubmission = await clinvarExportApi.createSubmission(
{
...JSON.parse(JSON.stringify(localSubmission)),
sort_order: sortOrder,
Expand All @@ -292,7 +293,7 @@ export const actions = {
localIndividualUuid
)
) {
await clinvarExport.deleteSubmissionIndividual(
await clinvarExportApi.deleteSubmissionIndividual(
state.oldModel.submissionIndividuals[localIndividualUuid],
state.appContext
)
Expand All @@ -310,7 +311,7 @@ export const actions = {
let apiSubmissionIndividual = null
if (localSubmissionIndividualExists) {
apiSubmissionIndividual =
await clinvarExport.updateSubmissionIndividual(
await clinvarExportApi.updateSubmissionIndividual(
{
...JSON.parse(JSON.stringify(localSI)),
sort_order: i,
Expand All @@ -319,7 +320,7 @@ export const actions = {
)
} else {
apiSubmissionIndividual =
await clinvarExport.createSubmissionIndividual(
await clinvarExportApi.createSubmissionIndividual(
{
...JSON.parse(JSON.stringify(localSI)),
sort_order: i,
Expand Down Expand Up @@ -375,13 +376,16 @@ export const actions = {
if (!(oldSubmissionUuid in state.submissions)) {
const oldSubmission = state.oldModel.submissions[oldSubmissionUuid]
for (const oldSubmissionIndividualUuid of oldSubmission.submission_individuals) {
await clinvarExport.deleteSubmissionIndividual(
await clinvarExportApi.deleteSubmissionIndividual(
state.oldModel.submissionIndividuals[oldSubmissionIndividualUuid],
state.appContext
)
commit('DELETE_SUBMISSION_INDIVIDUAL', oldSubmissionIndividualUuid)
}
await clinvarExport.deleteSubmission(oldSubmission, state.appContext)
await clinvarExportApi.deleteSubmission(
oldSubmission,
state.appContext
)
commit('DELETE_SUBMISSION', oldSubmissionUuid)
}
}
Expand Down Expand Up @@ -410,7 +414,7 @@ export const actions = {
for (const submittingOrgUuid of state.currentSubmissionSet
.submitting_orgs) {
if (submittingOrgUuid in state.oldModel.submittingOrgs) {
await clinvarExport.deleteSubmittingOrg(
await clinvarExportApi.deleteSubmittingOrg(
state.submittingOrgs[submittingOrgUuid],
state.appContext
)
Expand All @@ -425,15 +429,15 @@ export const actions = {
)
for (const submissionInvidualUuid of submissionInvidualUuids) {
if (submissionInvidualUuid in state.oldModel.submissionIndividuals) {
await clinvarExport.deleteSubmissionIndividual(
await clinvarExportApi.deleteSubmissionIndividual(
state.submissionIndividuals[submissionInvidualUuid],
state.appContext
)
}
commit('DELETE_SUBMISSION_INDIVIDUAL', submissionInvidualUuid)
}
if (submissionUuid in state.oldModel.submissions) {
await clinvarExport.deleteSubmission(
await clinvarExportApi.deleteSubmission(
state.submissions[submissionUuid],
state.appContext
)
Expand All @@ -444,7 +448,7 @@ export const actions = {
if (
state.currentSubmissionSet.sodar_uuid in state.oldModel.submissionSets
) {
await clinvarExport.deleteSubmissionSet(
await clinvarExportApi.deleteSubmissionSet(
state.submissionSets[state.currentSubmissionSet.sodar_uuid],
state.appContext
)
Expand Down Expand Up @@ -553,8 +557,18 @@ export const actions = {
/**
* Add the given individual to the current submission.
*/
addIndividualToCurrentSubmission({ commit }, individual) {
commit('ADD_INDIVIDUAL_TO_CURRENT_SUBMISSION', individual)
async addIndividualToCurrentSubmission({ state, commit }, individual) {
const res = await clinvarExportApi.getUserAnnotations(
state.appContext,
individual.family
)
const smallVariants = Object.fromEntries(
res.small_variants.map((v) => [getVariantId(v), v])
)
commit('ADD_INDIVIDUAL_TO_CURRENT_SUBMISSION', {
individual,
smallVariants,
})
},
/**
* Update the given submission individual.
Expand Down Expand Up @@ -1028,12 +1042,9 @@ export const mutations = {
state.currentSubmissionSet.submissions.push(newSubmission.sodar_uuid)
},

ADD_INDIVIDUAL_TO_CURRENT_SUBMISSION(state, individual) {
const s = state.currentSubmission
const variantKey =
`${s.variant_assembly}-${s.variant_chromosome}` +
`-${s.variant_start}-${s.variant_reference}-${s.variant_alternative}`
const smallVariant = state.userAnnotations.smallVariants[variantKey] // XXX
ADD_INDIVIDUAL_TO_CURRENT_SUBMISSION(state, { individual, smallVariants }) {
const variantKey = getVariantId(state.currentSubmission, 'variant_')
const smallVariant = smallVariants[variantKey]
const { variantAlleleCount, variantZygosity } = extractVariantZygosity(
smallVariant,
[individual.sodar_uuid],
Expand Down

0 comments on commit 04bb398

Please sign in to comment.