Compare commits
No commits in common. "7e244a55c5698cc6035106c49f5cd50572061a8d" and "bcefb72a2d6539d5319da1652819216b57aa9fc2" have entirely different histories.
7e244a55c5
...
bcefb72a2d
Binary file not shown.
|
@ -1,88 +0,0 @@
|
||||||
#Cellario modules
|
|
||||||
from HRB.Cellario.Scripting import *
|
|
||||||
from HRB.Cellario.Scripting.API import *
|
|
||||||
import json
|
|
||||||
from sys import argv
|
|
||||||
from os import path, listdir
|
|
||||||
from dataclasses import dataclass
|
|
||||||
|
|
||||||
|
|
||||||
def Execute(api : PythonScriptingApi):
|
|
||||||
available_barcodes = "C:/temp/availabletubes.txt"
|
|
||||||
letter_dir = "C:/temp/letters"
|
|
||||||
input = "EH"
|
|
||||||
|
|
||||||
available_tubes = read_available(available_barcodes)
|
|
||||||
letters = []
|
|
||||||
for letter in input:
|
|
||||||
x = get_tubes_for_letter(letter,
|
|
||||||
len(letters) + 1,
|
|
||||||
available_tubes,
|
|
||||||
letter_dir)
|
|
||||||
available_tubes = available_tubes[len(x):]
|
|
||||||
letters += x
|
|
||||||
|
|
||||||
output = letter_tubes_to_obj(letters)
|
|
||||||
|
|
||||||
api.Messaging.WriteDiagnostic(ScriptLogLevel.Normal, json.dumps(output))
|
|
||||||
list(api.CurrentRun.RunOrderParameters)[0].ParameterValue = json.dumps(output)
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
|
||||||
class Tube:
|
|
||||||
barcode: str
|
|
||||||
row: int
|
|
||||||
col: int
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
|
||||||
class LetterTube:
|
|
||||||
barcode: str
|
|
||||||
index: int
|
|
||||||
group: int
|
|
||||||
|
|
||||||
|
|
||||||
def letter_tubes_to_obj(x):
|
|
||||||
output = {}
|
|
||||||
output["Items"] = [{"BarcodeValue": y.barcode} for y in x]
|
|
||||||
output["TargetPositions"] = [{"PositionIndex": y.index,
|
|
||||||
"GroupIndex": y.group}
|
|
||||||
for y in x]
|
|
||||||
|
|
||||||
return output
|
|
||||||
|
|
||||||
|
|
||||||
def get_tubes_for_letter(letter: str,
|
|
||||||
letter_index: int,
|
|
||||||
available_tubes,
|
|
||||||
letter_dir: str):
|
|
||||||
positions = get_letter_positions(letter, letter_dir)
|
|
||||||
|
|
||||||
if len(positions) > len(available_tubes):
|
|
||||||
raise Exception("Insufficient tubes to fill order")
|
|
||||||
|
|
||||||
pixels = []
|
|
||||||
for i, position in enumerate(positions):
|
|
||||||
pixel = LetterTube(available_tubes[i],
|
|
||||||
position,
|
|
||||||
letter_index)
|
|
||||||
pixels.append(pixel)
|
|
||||||
return pixels
|
|
||||||
|
|
||||||
|
|
||||||
def read_available(p: str):
|
|
||||||
with open(p, 'r') as file:
|
|
||||||
return [x.strip() for x in file.readlines()]
|
|
||||||
|
|
||||||
|
|
||||||
def validate_word(input: str, letter_dir: str) -> bool:
|
|
||||||
letters_available = [x[0] for x in listdir(letter_dir)]
|
|
||||||
has_required_letters = all([x in letters_available for x in input])
|
|
||||||
|
|
||||||
return has_required_letters
|
|
||||||
|
|
||||||
|
|
||||||
def get_letter_positions(letter: str, letter_dir: str):
|
|
||||||
filename = [f for f in listdir(letter_dir) if f[0] == letter][0]
|
|
||||||
with open(path.join(letter_dir, filename), 'r') as file:
|
|
||||||
return [int(x.strip()) for x in file.readlines()]
|
|
|
@ -1,16 +0,0 @@
|
||||||
#Cellario modules
|
|
||||||
from HRB.Cellario.Scripting import *
|
|
||||||
from HRB.Cellario.Scripting.API import *
|
|
||||||
import json
|
|
||||||
|
|
||||||
|
|
||||||
def Execute(api : PythonScriptingApi):
|
|
||||||
sampleName = api.CurrentPlate.Name
|
|
||||||
with open(f"C:/temp/{sampleName}.txt", "r") as file:
|
|
||||||
j = json.load(file)
|
|
||||||
tubes = j["tubeBarcode"]
|
|
||||||
barcodes = [tube["barcode"] for tube in tubes]
|
|
||||||
with open("C:/temp/availabletubes.txt","a") as file:
|
|
||||||
for barcode in barcodes:
|
|
||||||
file.write(f"{barcode}\n")
|
|
||||||
|
|
Loading…
Reference in New Issue