Skip to content

Instantly share code, notes, and snippets.

@harijay
Created March 17, 2025 13:56
Show Gist options
  • Save harijay/177caf12d312b22a93a540a08c03713f to your computer and use it in GitHub Desktop.
Save harijay/177caf12d312b22a93a540a08c03713f to your computer and use it in GitHub Desktop.
import random
import pandas
import string
import great_tables
from great_tables import GT
aa_list = ["A","C","D","E","F","G","H","I","K","L","M","N","P","R","S","T","V","W","Y"]
def create_random_aa_seq(size=200):
aa_seq = []
for i in range(size):
aa_seq.append(random.choice(aa_list))
return "".join(aa_seq)
def mutate_sequence_randomly(input_seq, num_pos = 10):
positions_to_mutate = list(range(len(input_seq)))
output_seq = list(input_seq)
for i in range(num_pos):
pos = random.choice(positions_to_mutate)
output_seq[pos] = random.choice(aa_list)
return "".join(output_seq)
def create_dummy_pat_ids():
random_choice = range(1,9,1)
random_num = []
for i in range(8):
random_num.append(str(random.choice(random_choice)))
suffix = "".join(random_num)
return f"US{suffix}"
def write_alignment_string_mkdown(seq_top , seq_bot):
ref_id = create_mock_id()
#outstring = f"{ref_id:>30}:\t{seq_top}\n{" "*30}:{seq_bot.lower()}\n{create_mock_id():>30}:\t{seq_bot}"
outstring = f"""
| {ref_id} | {seq_top} |
|---|---|
| {create_mock_id()} | {seq_bot} |
"""
return outstring
def create_mock_id(max_len = 10):
return ''.join(random.choices(string.ascii_uppercase + string.digits, k=max_len))
def create_dummy_dataframe_mkdown(num_elements = 100):
pat_id = []
seq_top = create_random_aa_seq(150)
seq_bot = []
ali = []
for i in range(num_elements):
pat_id.append(create_dummy_pat_ids())
seq_bottom_new = mutate_sequence_randomly(seq_top)
seq_bot.append(seq_bottom_new)
ali.append(write_alignment_string_mkdown(seq_top, seq_bottom_new))
data ={"pat_id": pat_id, "seq_bot":seq_bot , "Alignment": ali}
return pandas.DataFrame(data)
df_mkdown = create_dummy_dataframe_mkdown()
gt_mkdown = GT(df_mkdown)
gt_mkdown.cols_width(cases={"Alignment":"3000px"}).fmt_markdown(columns="Alignment")
gt_mkdown.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment