in clns-eTarget_ingest/genomicdata_json.py [0:0]
def parseShortVariant(self, alteration, measrumentgenepanelid, tar_id, updateSelection, prev_gene_panel_id):
#parse the sections with short variants and add to db
print('parseShortVariant')
allelefraction = None
cdseffect = None
depth = None
gene = None
position = None
proteineffect = None
status = None
transcript = None
classification = None
subclonal = None
if not 'gene' in alteration:
self.log.systemStatusUpdate(self.filename, 'Genomic', self.log.timestamp(), 'Error: gene field is required in short variant alterations')
self.log.logMessage(self.filename + ' gene field is required in short variant alterations')
self.errorflag=True
raise GenomicDataException("gene field is required in short variant alterations")
gene=alteration['gene']
if len(gene.strip())==0:
self.log.systemStatusUpdate(self.filename, 'Genomic', self.log.timestamp(), 'Error: gene field needs a value in short variant alterations')
self.log.logMessage(self.filename + ' gene field needs a value in short variant alterations')
self.errorflag=True
raise GenomicDataException("gene field needs a value in short variant alterations")
if not 'proteinChange' in alteration:
self.log.systemStatusUpdate(self.filename, 'Genomic', self.log.timestamp(), 'Error: proteinChange field is required in short variant alterations')
self.log.logMessage(self.filename + ' proteinChange field is required in short variant alterations')
self.errorflag=True
raise GenomicDataException("proteinChange field is required in short variant alterations")
proteineffect=alteration['proteinChange']
if len(proteineffect.strip())==0:
self.log.systemStatusUpdate(self.filename, 'Genomic', self.log.timestamp(), 'Error: proteinChange field needs a value in short variant alterations')
self.log.logMessage(self.filename + ' proteinChange field needs a value in short variant alterations')
self.errorflag=True
raise GenomicDataException("proteinChange field needs a value in short variant alterations")
if not 'cdsChange' in alteration:
self.log.systemStatusUpdate(self.filename, 'Genomic', self.log.timestamp(), 'Error: cdsChange field is required in short variant alterations')
self.log.logMessage(self.filename + ' cdsChange field is required in short variant alterations')
self.errorflag=True
raise GenomicDataException("cdsChange field is required in short variant alterations")
cdseffect=alteration['cdsChange']
if len(cdseffect.strip())==0:
self.log.systemStatusUpdate(self.filename, 'Genomic', self.log.timestamp(), 'Error: cdsChange field needs a value in short variant alterations')
self.log.logMessage(self.filename + ' cdsChange field needs a value in short variant alterations')
self.errorflag=True
raise GenomicDataException("cdsChange field needs a value in short variant alterations")
if not 'readDepth' in alteration:
self.log.systemStatusUpdate(self.filename, 'Genomic', self.log.timestamp(), 'Error: readDepth field is required in short variant alterations')
self.log.logMessage(self.filename + ' readDepth field is required in short variant alterations')
self.errorflag=True
raise GenomicDataException("readDepth field is required in short variant alterations")
depth=alteration['readDepth']
if not 'position' in alteration:
self.log.systemStatusUpdate(self.filename, 'Genomic', self.log.timestamp(), 'Error: position field is required in short variant alterations')
self.log.logMessage(self.filename + ' position field is required in short variant alterations')
self.errorflag=True
raise GenomicDataException("position field is required in short variant alterations")
position = alteration['position']
if len(position.strip())==0:
self.log.systemStatusUpdate(self.filename, 'Genomic', self.log.timestamp(), 'Error: position field needs a value in short variant alterations')
self.log.logMessage(self.filename + ' position field needs a value in short variant alterations')
self.errorflag=True
raise GenomicDataException("position field needs a value in short variant alterations")
if 'status' in alteration:
status=alteration['status']
if 'transcript' in alteration:
transcript=alteration['transcript']
if not 'variantAlleleFrequency%' in alteration:
self.log.systemStatusUpdate(self.filename, 'Genomic', self.log.timestamp(), 'Error: variantAlleleFrequency% field is required in short variant alterations')
self.log.logMessage(self.filename + ' variantAlleleFrequency% field is required in short variant alterations')
self.errorflag=True
raise GenomicDataException("variantAlleleFrequency% field is required in short variant alterations")
allelefraction=alteration['variantAlleleFrequency%']
if not 'functionalEffect' in alteration:
self.log.systemStatusUpdate(self.filename, 'Genomic', self.log.timestamp(), 'Error: functionalEffect field is required in short variant alterations')
self.log.logMessage(self.filename + ' functionalEffect field is required in short variant alterations')
self.errorflag=True
raise GenomicDataException("functionalEffect field is required in short variant alterations")
classification=alteration['functionalEffect']
if len(classification.strip())==0:
self.log.systemStatusUpdate(self.filename, 'Genomic', self.log.timestamp(), 'Error: functionalEffect field needs a value in short variant alterations')
self.log.logMessage(self.filename + ' functionalEffect field needs a value in short variant alterations')
self.errorflag=True
raise GenomicDataException("functionalEffect field needs a value in short variant alterations")
if 'subclonal' in alteration:
subclonal=alteration['subclonal']
if not isinstance(subclonal, bool):
self.log.systemStatusUpdate(self.filename, 'Genomic', self.log.timestamp(), 'Error: subclonal field needs to be boolean in short variant alterations')
self.log.logMessage(self.filename + ' subclonal field needs to be boolean in short variant alterations')
self.errorflag=True
raise GenomicDataException("subclonal field needs to be boolean in short variant alterations")
subclonal=str(subclonal)
print(gene + ' ' + position + ' ' + cdseffect)
gene_id = self.getGene(gene)
#insert into measurement_gene_variant
addShortVariant = "INSERT INTO MEASUREMENT_GENE_VARIANT (measurement_gene_panel_id, gene_concept_id, cdna_change, read_depth, variant_allele_frequency, position, amino_acid_change, transcript, status, variant_type, functional_effect, subclonal) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
cursor = self.conn.cursor()
cursor.execute(addShortVariant,(str(measrumentgenepanelid), str(gene_id), cdseffect, depth, allelefraction, position, proteineffect, transcript, status, 'short_variant', classification, subclonal))
rowid=cursor.lastrowid
if updateSelection:
#check whether was ticked before
findPreviouseSelectionQuery="select type from SELECTED_GENE_VARIANT FULL OUTER JOIN MEASUREMENT_GENE_VARIANT on \
MEASUREMENT_GENE_VARIANT.measurement_gene_variant_id=SELECTED_GENE_VARIANT.measurement_gene_variant_id \
FULL OUTER JOIN MEASUREMENT_GENE_PANEL on MEASUREMENT_GENE_PANEL.measurement_gene_panel_id=MEASUREMENT_GENE_VARIANT.measurement_gene_panel_id \
where person_id=(SELECT person_id FROM PERSON WHERE person.target_id = '"+tar_id+"') and \
MEASUREMENT_GENE_PANEL.measurement_gene_panel_id=" +str(prev_gene_panel_id)+ " and gene_concept_id=(SELECT TOP 1 gene_concept_id FROM CONCEPT_GENE \
WHERE gene_name = '"+gene+"') and amino_acid_change = '"+str(proteineffect)+"' and cdna_change ='"+str(cdseffect)+"';"
findPreviousSelectionCursor = self.conn.cursor()
findPreviousSelectionCursor.execute(findPreviouseSelectionQuery)
row=findPreviousSelectionCursor.fetchone()
findPreviousSelectionCursor.close()
if row is not None:
#was previously selected
insertSelectionQuery="insert into SELECTED_GENE_VARIANT (person_id, measurement_gene_variant_id, type) values((SELECT person_id FROM PERSON WHERE person.target_id = '"+tar_id+"'),"+str(rowid)+",'"+row[0]+"');"
insertSelectionCursor = self.conn.cursor()
insertSelectionCursor.execute(insertSelectionQuery)
insertSelectionCursor.close()
return