Use jsondiffpatch not json-diff jsondiffpatch is much faster json-diff took >30s (couldn't bother waiting anymore) what jsondiffpatch did in <1s https://github.com/benjamine/jsondiffpatch
npm install -g jsondiffpatch
Use jsondiffpatch not json-diff jsondiffpatch is much faster json-diff took >30s (couldn't bother waiting anymore) what jsondiffpatch did in <1s https://github.com/benjamine/jsondiffpatch
npm install -g jsondiffpatch
{"version":"v2","meta":{"title":"SARS-CoV-2 phylogeny","updated":"2023-03-15","build_url":"https://github.com/neherlab/nextclade_data_workflows","maintainers":[{"name":"Cornelius Roemer","url":"https://neherlab.org"},{"name":"Richard Neher","url":"https://neherlab.org"}],"display_defaults":{"color_by":"clade_membership","distance_measure":"div","map_triplicate":false,"branch_label":"clade","transmission_lines":false},"genome_annotations":{"nuc":{"end":29903,"start":1,"strand":"+","seqid":"defaults/reference_seq.gb","type":"source"},"E":{"end":26472,"seqid":"defaults/reference_seq.gb","start":26245,"strand":"+","type":"CDS"},"M":{"end":27191,"seqid":"defaults/reference_seq.gb","start":26523,"strand":"+","type":"CDS"},"N":{"end":29533,"seqid":"defaults/reference_seq.gb","start":28274,"strand":"+","type":"CDS"},"ORF1a":{"end":13468,"seqid":"defaults/reference_seq.gb","start":266,"strand":"+","type":"CDS"},"ORF1b":{"end":21555,"seqid":"defaults/reference_seq.gb","start":13468,"strand":"+","type":"CDS"},"ORF3a":{" |
>XP | |
ATTAAAGGTTTATACCTTCCCAGGTAACAAACCAACCAACTTTCGATCTCTTGTAGATCT | |
GTTCTCTAAACGAACTTTAAAATCTGTGTGGCTGTCACTCGGCTGCATGCTTAGTGCACT | |
CACGCAGTATAATTAATAACTAATTACTGTCGTTGACAGGACACGAGTAACTCGTCTATC | |
TTCTGCAGGCTGCTTACGGTTTCGTCCGTGTTGCAGCCGATCATCAGCACATCTAGGTTT | |
TGTCCGGGTGTGACCGAAAGGTAAGATGGAGAGCCTTGTCCCTGGTTTCAACGAGAAAAC | |
ACACGTCCAACTCAGTTTGCCTGTTTTACAGGTTCGCGACGTGCTCGTACGTGGCTTTGG | |
AGACTCCGTGGAGGAGGTCTTATCAGAGGCACGTCAACATCTTAAAGATGGCACTTGTGG | |
CTTAGTAGAAGTTGAAAAAGGCGTTTTGCCTCAACTTGAACAGCCCTATGTGTTCATCAA | |
ACGTTCGGATGCTCGAACTGCACCTCATGGTCATGTTATGGTTGAGCTGGTAGCAGAACT |
{"version":"v2","meta":{"title":"SARS-CoV-2 phylogeny","updated":"2023-03-08","build_url":"https://github.com/neherlab/nextclade_data_workflows","maintainers":[{"name":"Cornelius Roemer","url":"https://neherlab.org"},{"name":"Richard Neher","url":"https://neherlab.org"}],"display_defaults":{"color_by":"clade_membership","distance_measure":"div","map_triplicate":false,"branch_label":"clade","transmission_lines":false},"genome_annotations":{"nuc":{"end":29903,"start":1,"strand":"+","seqid":"defaults/reference_seq.gb","type":"source"},"E":{"end":26472,"seqid":"defaults/reference_seq.gb","start":26245,"strand":"+","type":"CDS"},"M":{"end":27191,"seqid":"defaults/reference_seq.gb","start":26523,"strand":"+","type":"CDS"},"N":{"end":29533,"seqid":"defaults/reference_seq.gb","start":28274,"strand":"+","type":"CDS"},"ORF1a":{"end":13468,"seqid":"defaults/reference_seq.gb","start":266,"strand":"+","type":"CDS"},"ORF1b":{"end":21555,"seqid":"defaults/reference_seq.gb","start":13468,"strand":"+","type":"CDS"},"ORF3a":{" |
{"version":"v2","meta":{"title":"SARS-CoV-2 phylogeny","updated":"2023-03-08","build_url":"https://github.com/neherlab/nextclade_data_workflows","maintainers":[{"name":"Cornelius Roemer","url":"https://neherlab.org"},{"name":"Richard Neher","url":"https://neherlab.org"}],"display_defaults":{"color_by":"clade_membership","distance_measure":"div","map_triplicate":false,"branch_label":"clade","transmission_lines":false},"genome_annotations":{"nuc":{"end":29903,"start":1,"strand":"+","seqid":"defaults/reference_seq.gb","type":"source"},"E":{"end":26472,"seqid":"defaults/reference_seq.gb","start":26245,"strand":"+","type":"CDS"},"M":{"end":27191,"seqid":"defaults/reference_seq.gb","start":26523,"strand":"+","type":"CDS"},"N":{"end":29533,"seqid":"defaults/reference_seq.gb","start":28274,"strand":"+","type":"CDS"},"ORF1a":{"end":13468,"seqid":"defaults/reference_seq.gb","start":266,"strand":"+","type":"CDS"},"ORF1b":{"end":21555,"seqid":"defaults/reference_seq.gb","start":13468,"strand":"+","type":"CDS"},"ORF3a":{" |
import argparse | |
import json | |
def extract_attribute(node_data, attribute: str) -> dict[str, str]: | |
data = {} | |
for name, node in node_data["nodes"].items(): | |
if attribute in node: | |
data[name] = node[attribute] | |
return data |
[tool.poetry] | |
name = "nwkfmt" | |
version = "0.1.0" | |
description = "Simple Newick tree validator and formatter" | |
authors = ["Cornelius Roemer <cornelius.roemer@gmail.com>"] | |
readme = "README.md" | |
[tool.poetry.scripts] | |
greet = "nwkfmt.cli:main" |
>MN908947 (Wuhan-Hu-1/2019) | |
TTELLFLVMFLLTTKRTMFVFLVLLPLVSSQCVNLTTRTQLPPAYTNSFTRGVYYPDKVFRSSVLHSTQDLFLPFFSNVTWFHAIHVSGTNGTKRFDNPVLPFNDGVYFASTEKSNIIRGWIFGTTLDSKTQSLLIVNNATNVVIKVCEFQFCNDPFLGVYYHKNNKSWMESEFRVYSSANNCTFEYVSQPFLMDLEGKQGNFKNLREFVFKNIDGYFKIYSKHTPINLVRDLPQGFSALEPLVDLPIGINITRFQTLLALHRSYLTPGDSSSGWTAGAAAYYVGYLQPRTFLLKYNENGTITDAVDCALDPLSETKCTLKSFTVEKGIYQTSNFRVQPTESIVRFPNITNLCPFGEVFNATRFASVYAWNRKRISNCVADYSVLYNSASFSTFKCYGVSPTKLNDLCFTNVYADSFVIRGDEVRQIAPGQTGKIADYNYKLPDDFTGCVIAWNSNNLDSKVGGNYNYLYRLFRKSNLKPFERDISTEIYQAGSTPCNGVEGFNCYFPLQSYGFQPTNGVGYQPYRVVVLSFELLHAPATVCGPKKSTNLVKNKCVNFNFNGLTGTGVLTESNKKFLPFQQFGRDIADTTDAVRDPQTLEILDITPCSFGGVSVITPGTNTSNQVAVLYQDVNCTEVPVAIHADQLTPTWRVYSTGSNVFQTRAGCLIGAEHVNNSYECDIPIGAGICASYQTQTNSPRRARSVASQSIIAYTMSLGAENSVAYSNNSIAIPTNFTISVTTEILPVSMTKTSVDCTMYICGDSTECSNLLLQYGSFCTQLNRALTGIAVEQDKNTQEVFAQVKQIYKTPPIKDFGGFNFSQILPDPSKPSKRSFIEDLLFNKVTLADAGFIKQYGDCLGDIAARDLICAQKFNGLTVLPPLLTDEMIAQYTSALLAGTITSGWTFGAGAALQIPFAMQMAYRFNGIGVTQNVLYENQKLIANQFNSAIGKIQDSLSSTASALGKLQDVVNQNAQALNTLVKQLSSNFGAISSVLND |
{ | |
"nucMutLabelMap": { | |
"A10195G": [ | |
"20I (Alpha, V1)" | |
], | |
"A10317G": [ | |
"21J (Delta)" | |
], | |
"A10323G": [ | |
"21J (Delta)", |