Skip to content

Commit

Permalink
[Genetics] TS Refactor Variant Utils to use GraphQL types (#350)
Browse files Browse the repository at this point in the history
* refactor: plain rename variant js->ts for git history

* refactor: use gql generated types to type variant utils file.

- fix bug in variantParseGenesForVariantSchema incorrectly parsing out pqtls
- remove unused hasVariantInfo/variantInfo functions
- use gql response data interface wrappers to type remaining fns
  • Loading branch information
riyavsinha committed Apr 30, 2024
1 parent fd4f78d commit 3222077
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 31 deletions.
8 changes: 4 additions & 4 deletions apps/genetics/src/pages/VariantPage/AssignedGenes.jsx
Expand Up @@ -16,10 +16,10 @@ export const AssignedGenes = ({ variantId }) => {
variables: { variantId },
});

const genesForVariantSchema = data?.genesForVariantSchema
? variantParseGenesForVariantSchema(data)
: [];

const genesForVariantSchema = variantParseGenesForVariantSchema(data);
if (!genesForVariantSchema) {
return null;
}
return (
<Fragment>
<SectionHeading
Expand Down
6 changes: 1 addition & 5 deletions apps/genetics/src/pages/VariantPage/GWASLeadVariants.jsx
Expand Up @@ -13,11 +13,7 @@ export const GWASLeadVariants = ({ variantId }) => {
variables: { variantId },
});

const hasData =
data?.indexVariantsAndStudiesForTagVariant?.associations?.length > 0;
const associatedIndexVariants = hasData
? variantTransformAssociatedIndexVariants(data)
: [];
const associatedIndexVariants = variantTransformAssociatedIndexVariants(data);

return (
<Fragment>
Expand Down
6 changes: 1 addition & 5 deletions apps/genetics/src/pages/VariantPage/TagVariantPage.jsx
Expand Up @@ -13,11 +13,7 @@ export const TagVariantPage = ({ variantId }) => {
variables: { variantId },
});

const hasData =
data?.tagVariantsAndStudiesForIndexVariant?.associations?.length > 0;
const associatedTagVariants = hasData
? variantTransformAssociatedTagVariants(data)
: [];
const associatedTagVariants = variantTransformAssociatedTagVariants(data);

return (
<Fragment>
Expand Down
@@ -1,12 +1,17 @@
export function variantHasInfo(data) {
return data && data.variantInfo;
}
export function variantGetInfo(data) {
return data.variantInfo;
}
import {
G2VSchema,
IndexVariantsAndStudiesForTagVariant,
TagVariantsAndStudiesForIndexVariant,
} from "../__generated__/graphql";

export function variantTransformAssociatedIndexVariants(data) {
const associationsFlattened = data.indexVariantsAndStudiesForTagVariant.associations.map(d => {
type IndexVariantData = {
indexVariantsAndStudiesForTagVariant?: IndexVariantsAndStudiesForTagVariant;
};
export function variantTransformAssociatedIndexVariants(data?: IndexVariantData) {
if (!data?.indexVariantsAndStudiesForTagVariant?.associations?.length) {
return [];
}
return data.indexVariantsAndStudiesForTagVariant.associations.map(d => {
const { indexVariant, study, ...rest } = d;
return {
indexVariantId: indexVariant.id,
Expand All @@ -20,11 +25,16 @@ export function variantTransformAssociatedIndexVariants(data) {
...rest,
};
});
return associationsFlattened;
}

export function variantTransformAssociatedTagVariants(data) {
const associationsFlattened = data.tagVariantsAndStudiesForIndexVariant.associations.map(d => {
type TagVariantData = {
tagVariantsAndStudiesForIndexVariant?: TagVariantsAndStudiesForIndexVariant;
};
export function variantTransformAssociatedTagVariants(data?: TagVariantData) {
if (!data?.tagVariantsAndStudiesForIndexVariant?.associations?.length) {
return [];
}
return data.tagVariantsAndStudiesForIndexVariant.associations.map(d => {
const { tagVariant, study, ...rest } = d;
return {
tagVariantId: tagVariant.id,
Expand All @@ -38,7 +48,6 @@ export function variantTransformAssociatedTagVariants(data) {
...rest,
};
});
return associationsFlattened;
}

export const variantPopulations = [
Expand All @@ -57,14 +66,18 @@ export const variantPopulations = [
{ code: "OTH", description: "Other (population not assigned)" },
];

export function variantParseGenesForVariantSchema(data) {
const genesForVariantSchema = data.genesForVariantSchema;
type VariantSchemaData = {
genesForVariantSchema?: G2VSchema;
};
export function variantParseGenesForVariantSchema(data?: VariantSchemaData) {
const genesForVariantSchema = data?.genesForVariantSchema;
if (!genesForVariantSchema) return;
const currentQtls = genesForVariantSchema.qtls;
if (currentQtls.length === 0) return genesForVariantSchema;
//possibly add new fields
if (currentQtls[0].id === "pqtl") {
const pqtl = currentQtls[0];
const restQtls = currentQtls.slice(1, pqtl.length);
const restQtls = currentQtls.slice(1);
const sourceDescriptionBreakdown = parseSourceDescriptionBreakdown(
pqtl.sourceDescriptionBreakdown
);
Expand All @@ -76,12 +89,12 @@ export function variantParseGenesForVariantSchema(data) {
return genesForVariantSchema;
}

function parseSourceDescriptionBreakdown(description = "") {
function parseSourceDescriptionBreakdown(description?: string | null) {
if (!description) return;
return description.replace(" Sun *et al.* (2018)", "");
}

function parseSourceLabel(label = "") {
function parseSourceLabel(label?: string | null) {
if (!label) return;
return label.replace(" (Sun, 2018)", "");
}

0 comments on commit 3222077

Please sign in to comment.