Skip to content
Snippets Groups Projects
interfaces.ts 5.45 KiB
Newer Older
Julian Matschinske's avatar
Julian Matschinske committed
export interface Node {
  symbol: Array<string>;
Julian Matschinske's avatar
Julian Matschinske committed
  id: string;
Maiykol's avatar
Maiykol committed
  type: string;
  drugstoneId?: Array<string> | string;
  drugstoneType: NodeType;
  drugId?: string;
  uniprot?: Array<string>;
  entrez?: Array<string>;
Julian Matschinske's avatar
Julian Matschinske committed
  group?: string;
Maiykol's avatar
Maiykol committed
  groupName?: string;
  proteinName?: Array<string>;
  color?: string | any; // mostly any, but vis js allows detail settings
  shape?: string;
Julian Matschinske's avatar
Julian Matschinske committed
  interactions?: Node[];
  x?: number;
  y?: number;
  state?: {hover: boolean, selected: boolean};
  borderWidth: number;
  borderWidthSelected: number;
Julian Matschinske's avatar
Julian Matschinske committed
}

export interface Tissue {
Hartung, Michael's avatar
Hartung, Michael committed
  drugstoneId: number;
Julian Matschinske's avatar
Julian Matschinske committed
  name: string;
export interface NodeData {
  nodes: any;
  edges: any;
}

export interface NetworkData {
  nodes: any[],
  edges: NetworkEdge[]
}

export type NodeType = 'protein' | 'drug' | 'disorder' | 'other'
export type NetworkType = 'explorer' | 'analysis'

AndiMajore's avatar
AndiMajore committed
export type LegendContext = 'explorer' | 'adjacentDrugs' | 'drug' | 'drugTarget' | 'seeds' | 'adjacentDisorders';
Hartung, Michael's avatar
Hartung, Michael committed
/// drugstoneId to expressionlvl
export type NodeAttributeMap = { string: number } | {};
Michael Hartung's avatar
Michael Hartung committed
export interface NetexInteraction {
  dataset: string;
  proteinA: string;
  proteinB: string;
}
Julian Matschinske's avatar
Julian Matschinske committed
export interface NodeInteraction {
  from: string;
  to: string;
Julian Matschinske's avatar
Julian Matschinske committed
  group?: string;
Hartung, Michael's avatar
Hartung, Michael committed
  groupName?: string;
  title?: string;
  shadow?: boolean;
Hartung, Michael's avatar
Hartung, Michael committed
  // custom attributes by user
  // [key: string]: string | number | boolean;
Julian Späth's avatar
Julian Späth committed
export interface NetworkEdge {
  from: string;
  to: string;
Julian Späth's avatar
Julian Späth committed
}

export type AlgorithmTarget = 'drug' | 'drug-target'

export interface Task {
  token: string;
  info: {
    target: AlgorithmTarget,
    algorithm: AlgorithmType | QuickAlgorithmType;
    parameters?: { [key: string]: any };

    workerId?: string;
    jobId?: string;

    progress: number;
    status: string;

    createdAt: string;
    startedAt: string;
    finishedAt: string;

    done: boolean;
    failed: boolean;
  };
  stats: {
    queuePosition: number;
    queueLength: number;
  };
}
Julian Matschinske's avatar
Julian Matschinske committed
export function getProteinNodeId(protein: Node) {
Julian Späth's avatar
Julian Späth committed
}

Julian Matschinske's avatar
Julian Matschinske committed
export function getProteinBackendId(protein: Node) {
  return protein.id;
Julian Späth's avatar
Julian Späth committed
}

Julian Matschinske's avatar
Julian Matschinske committed
export function getNodeIdsFromI(pvi: NodeInteraction) {
Julian Späth's avatar
Julian Späth committed
  return {
    from: `p_${pvi.from}`,
    to: `p_${pvi.to}`,
export function getNodeIdsFromPPI(edge: NetworkEdge, wrappers: { [key: string]: Wrapper }) {
Julian Späth's avatar
Julian Späth committed
  return {
    from: wrappers[edge.from].id,
    to: wrappers[edge.to].id,
Julian Späth's avatar
Julian Späth committed
  };
}

export function getNodeIdsFromPDI(edge: NetworkEdge) {
  return {
    from: `${edge.from}`,
    to: `${edge.to}`,
Julian Späth's avatar
Julian Späth committed
  };
}

export function getDrugNodeId(drug: Drug) {
  /**
   * Returns backend_id of Drug object
   */
Hartung, Michael's avatar
Hartung, Michael committed
  return drug.drugstoneId
Julian Späth's avatar
Julian Späth committed
}

// export function getDisorderNodeId(disorder: Disorder) {
//   /**
//    * Returns backend_id of Drug object
//    */
Hartung, Michael's avatar
Hartung, Michael committed
//   return disorder.drugstoneId
export function getNodeId(node: Node) {
  /**
   * Returns backend_id of Gene object
   */
Hartung, Michael's avatar
Hartung, Michael committed
  //  if ('drugstoneId' in node) {
  //    return node['drugstoneId']
  //  } else {
  //    return node.id
  //  }
  return node.id
}

export function getNetworkId(node: Node) {
  /**
   * Returns ID of a network node
   */
Hartung, Michael's avatar
Hartung, Michael committed
  return node.drugstoneId
export function getId(gene: Node) {
  /**
   * Returns the network node id based on a given gene
   */
  return `${gene.id}`;
}

export function getWrapperFromNode(node: Node): Wrapper {
  /**
   * Constructs wrapper interface for gene
   */
  // if node does not have property group, it was custom node from user
  node.group = node.group ? node.group : 'default';
  node.label = node.label ? node.label : node.id
Julian Späth's avatar
Julian Späth committed
  return {
    id: node.id,
    data: node,
export type EdgeType = 'protein-protein' | 'protein-drug';
Julian Späth's avatar
Julian Späth committed

export interface Wrapper {
  id: string;
  data: {
    id: string;
Maiykol's avatar
Maiykol committed
    type?: string;
    symbol?: Array<string>;
    drugstoneId?: Array<string> | string;
    drugstoneType: NodeType,
    entrez?: Array<string>;
    shape?: string;
    color?: string;
    interactions?: any;
    group?: string;
Maiykol's avatar
Maiykol committed
    groupName?: string;
    proteinName?: Array<string>;
    uniprot?: Array<string>;
    expressionLevel?: number;
    gradient?: number;
    x?: number;
    y?: number;
    drugId?: string;
    disorderId?: string;
    icd10?: string[];
    status?: 'approved' | 'investigational';
    inTrial?: boolean;
    inLiterature?: boolean;
    trialLinks?: string[];
Maiykol's avatar
Maiykol committed
    detailShowLabel?: boolean;
  expression?: number;
Julian Späth's avatar
Julian Späth committed
}

export interface Drug {
  id: string;
  type: string;
Julian Späth's avatar
Julian Späth committed
  status: 'approved' | 'investigational';
Julian Späth's avatar
Julian Späth committed
  inTrial: boolean;
Julian Matschinske's avatar
Julian Matschinske committed
  inLiterature: boolean;
Julian Matschinske's avatar
Julian Matschinske committed
  trialLinks: string[];
Hartung, Michael's avatar
Hartung, Michael committed
  drugstoneId: string;
  group: string;

export interface Dataset {
  label: string;
  strains: string;
  hostTarget: string;
  method: string;
  source: Array<string> | null;
  year: number;
  datasetNames: string;
  id: string;
  data: Array<[string, string]>;
}

export type AlgorithmType =
  'trustrank'
  | 'keypathwayminer'
  | 'multisteiner'
  | 'closeness'
  | 'degree'
  | 'proximity'
  | 'betweenness';
export type QuickAlgorithmType = 'quick' | 'super' | 'connect' | 'connectSelected';

export interface Algorithm {
  slug: AlgorithmType | QuickAlgorithmType;
  name: string;
}
Hartung, Michael's avatar
Hartung, Michael committed

export interface Toast {
  message: string;
  type: 'success' | 'info' | 'warning' | 'danger'
}

export interface LiveToasts {
  [id: number]: Toast
}