From 3b73f2b421bbd940cfa53b9470ada119f5e2b649 Mon Sep 17 00:00:00 2001 From: Sherwin Price Date: Tue, 7 Nov 2023 17:33:37 -0500 Subject: [PATCH] add sample material column and rewrite inosticID column --- .../__pycache__/rowmodel.cpython-310.pyc | Bin 0 -> 3258 bytes qubittool/__pycache__/tool.cpython-310.pyc | Bin 0 -> 5657 bytes qubittool/rowmodel.py | 9 ++++- qubittool/tool.py | 34 +++++++++++++++++- 4 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 qubittool/__pycache__/rowmodel.cpython-310.pyc create mode 100644 qubittool/__pycache__/tool.cpython-310.pyc diff --git a/qubittool/__pycache__/rowmodel.cpython-310.pyc b/qubittool/__pycache__/rowmodel.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15699efb6ed81e84606a5e497e7e49b4b2856bba GIT binary patch literal 3258 zcmd1j<>g{vU|?`r@0q%dje+4Yh=Yuo85kHG7#J9eg%}tZ+!<0BQW#qpQW%?=q8L(` zf*CZKlaW<}*eoy|Zx|RDQW>HcQy8L{QW#U2QA4QaDmLTUeslQn*sMTNt9)Q+U9lyeWJwEKwXO{3!x03{jj=wSp-^Ei6%7DZ(it zEeuiIDWYJtVkzP+EKxiu5-E}`3{ku(QeaW(6qy#5D83Zg6uB0LDE<_Au&6?cVhc-@ zK#Ed|atlM0V2TP@R5eAdg(XTTMLk8Mg&|5fMH4Klm7?9k5+#zNlcL+g5G4u~)l1QD zVTlq;F-S3NVTck>F$!kTG`__Vlwa)`7I$KDa%ypLW`15~ zN-`)wLBRyVAT|>N1A{XtfV~(P7-|@67~&afm}(f}8B-W)7~+}0By$N%3S%=!jup&j z1C#7vk^@X~f=Mng$(_Ow%%I8SmkzQ5gf)4JK(-Wtth>dPTv}X`pPO2gnR1IOH?btO zC^Io9GvyX*T26jq$t~`JoW$bX#IpRH+?-ong{4WEB}JuqAhlq2VsUX|f#Fw( zvsFxJacWUPysP>}!w1H&!0^wg4g z&lEuh28Pd|KxbpD;)mM=k-NnT4&7vsG}JZ*5F3QS)`4;)Bqe}ivPhVLfng8>$N8JPC^IBCylJ9s?5y-yt%Z0?0lr zzC)-W#&=2}Q*inYVU{vT9TwjqRNP_%6(pG{#Q73bDZrvq6=XKppI`#vS&)H{l1UAu z1dC@8Dv0qc*c6p17FhMDnXH$Y`)P!34su;A{gn)Ci;mi(e5c zi1Di)$P}D@MVMs@QisK_2o<;3L3LMgNfB|r+RC305OofE0lJ zDvDAd!Q_eYDLA~a`IHA#*uYG(2H6DmC&DIV`CBZYdYL#c@*veS;P3>+uz3+GPn_p?L8h342(X911lU*Lx&+Z|aRDg-`wLOJ zgQ6Cpf*7A!flR^XGjLskFv}gJ4(vCCZJ_8wsPNO205xs$5_41I<8N`r$LHp!l;(ig zJn`{`rHMIE8Rp`Wq9Rb^qev8FrZk8E*Hqx@LlMLU7wsw_mO6;g01?_C0$dD%O9ulG z*BC^YfCz9pwgj=j>C6Vi0*4%e0EJ-@sJ#Sg#1w;yA`S*2Mh-qcW)5cjn1>mx57evz a=|^f~fK3M(e2c>d;$1tCieiuzLW}^3uB6KV literal 0 HcmV?d00001 diff --git a/qubittool/__pycache__/tool.cpython-310.pyc b/qubittool/__pycache__/tool.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0150c658692c42eaa5d7a10044dcf1cf9eae9527 GIT binary patch literal 5657 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 FYycgDexd*X literal 0 HcmV?d00001 diff --git a/qubittool/rowmodel.py b/qubittool/rowmodel.py index 7e16fe1..7309151 100644 --- a/qubittool/rowmodel.py +++ b/qubittool/rowmodel.py @@ -4,6 +4,7 @@ class RowModel: self.coordinate = coordinate self.accessionid = accessionid self.customerid = None + self.materialid = None self.plasmavolml = float(0.0) self.qubitrunid = None self.qubitassay = None @@ -39,7 +40,13 @@ class RowModel: def get_customerid(self): return self.customerid - + + def set_materialid(self, matrlid:str): + self.materialid = matrlid + + def get_materialid(self): + return self.materialid + def set_qubitassay(self, assay:str): self.qubitassay = assay diff --git a/qubittool/tool.py b/qubittool/tool.py index 905d52d..3c3d767 100644 --- a/qubittool/tool.py +++ b/qubittool/tool.py @@ -11,6 +11,9 @@ from openpyxl.styles import PatternFill, Border, Side, Alignment from rowmodel import RowModel +codex:dict = {"gDNA from cells":"BM"} +codex.update({"gDNA from Buffy Coat":"BC"}) + def read_qubit_doc_by_accession(keys:dict, path:str): # collect values_by_sample_names string ids # with open(path, 'r', newline='', encoding='utf-8') as csvfile: @@ -84,7 +87,8 @@ def write_run_doc(dm:dict, path:str): for r in dm: model:RowModel = dm[r] ix=ix+1 - ws.append([ix, "", model.get_Id(), model.get_customerid(), model.get_plasmavolml(), model.get_qubitrunid(), + fmtId = formatInosticsId( model.get_Id(), model.get_materialid() ) + ws.append([ix, "", fmtId, model.get_customerid(), model.get_plasmavolml(), model.get_qubitrunid(), model.get_sampleconc(), convert_to_GE(model.get_sampleconc())]) grayFill = PatternFill(start_color='D0CECE', end_color='D0CECE', @@ -98,6 +102,20 @@ def write_run_doc(dm:dict, path:str): wb.close() return +def formatInosticsId(id:str=None, matrl:str=None): + iid = id.split("-", 1)[0] + ncd:str = "" + try: + if codex[matrl] is None: + ncd = "" + else: + ncd = codex[matrl] + if iid: + return iid + ncd + except Exception as e: + pass + return iid + def convert_to_numeric(vlu, stndv:float=0.0): try: return float(vlu) @@ -120,6 +138,7 @@ def read_collect_run_doc_name_strids(min_col:int=1, path:str=None): InosticsID = None CustomerID = None PlasmaID = None + MaterialID = None InosticsIDKeys = {} for row in ws.iter_rows(max_row=30, min_col=min_col): for cell in row: @@ -135,6 +154,10 @@ def read_collect_run_doc_name_strids(min_col:int=1, path:str=None): PlasmaID = cell.column continue + if MaterialID==None and cell.value and isinstance(cell.value, str) and "Sample Material" in cell.value: + MaterialID = cell.column + continue + if cell.value and InosticsID == cell.column: InosticsIDKeys[cell.value] = RowModel(cell.coordinate, cell.value) rmv:RowModel = InosticsIDKeys[cell.value] @@ -159,5 +182,14 @@ def read_collect_run_doc_name_strids(min_col:int=1, path:str=None): rmv.set_plasmavolml( convert_to_numeric(cell.value) ) except: pass + + if cell.value and MaterialID == cell.column: + print(F"{cell.coordinate}:{cell.row}x{cell.column}={cell.value}") + try: + if InosticsIDKeys[row[InosticsID-1].value] != None: + rmv:RowModel = InosticsIDKeys[row[InosticsID-1].value] + rmv.set_materialid( cell.value ) + except: + pass wb.close() return InosticsIDKeys