이 MCP로 할 수 있는 일
Provides computational molecular biology tools for DNA, RNA, and protein analysis, cloning, PCR, CRISPR, oligonucleotide design, sequencing QC, and laboratory automation.
도구
입력 스키마
{'type': 'object', 'required': ['accession'], 'properties': {'accession': {'type': 'string', 'description': 'UniProt accession, e.g. "P04637".'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['forwardPrimer', 'reversePrimer', 'polymerase'], 'properties': {'ampliconBp': {'type': 'integer', 'description': 'Expected product length (bp), used for the extension time. Omit to get the per-kb rate without a time.'}, 'polymerase': {'type': 'string', 'description': 'Polymerase or master mix. One of: q5, phusion, neb_taq, onetaq, vent, deepvent, longamp, primestar_max, kod_one, taq, pfu. Common product spellings are accepted (e.g. "Q5 Hot Start", "KOD One", "PrimeSTAR Max").'}, 'forwardPrimer': {'type': 'string', 'residues': 'nt', 'description': "Forward primer, 5'→3'."}, 'reversePrimer': {'type': 'string', 'residues': 'nt', 'description': "Reverse primer, 5'→3'."}, 'highComplexityTemplate': {'type': 'boolean', 'default': False, 'description': 'Genomic or otherwise complex template. Where the vendor publishes a second, slower extension rate for one, it is used.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['target'], 'properties': {'wing': {'type': 'integer', 'default': 5, 'minimum': 0, 'description': 'Modified-wing length on each side (nt); the central gap = length − 2×wing, so 2×wing must be less than length.'}, 'length': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 8, 'description': 'Total gapmer length (nt). A real RNase H1 gapmer is 12-25.'}, 'target': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['fragments'], 'properties': {'names': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional labels for the parts, in the same order ("backbone", "promoter", "CDS"). Used in every outcome label.'}, 'enzyme': {'type': 'string', 'default': 'BsaI', 'description': 'Golden Gate only — the Type IIS enzyme, which fixes the overhang length (BsaI, BbsI, Esp3I (BsmBI)).'}, 'method': {'enum': ['goldengate', 'gibson'], 'type': 'string', 'default': 'goldengate', 'description': 'How the parts are joined. Golden Gate junctions are the Type IIS fusion overhangs; Gibson junctions are the homology arms.'}, 'dataset': {'enum': ['generic-t4-37c-1h', 'bsai-hfv2'], 'type': 'string', 'default': 'generic-t4-37c-1h', 'description': 'Which ligation dataset to read overhang cross-talk from (Golden Gate only).'}, 'circular': {'type': 'boolean', 'default': True, 'description': "Circular product. Only circular assemblies are covered — a linear product's leading end is a free terminus, not a junction."}, 'fragments': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The parts in assembly order, raw or FASTA — the same list cloning_simulate takes. 2-8 parts.'}, 'overlapLen': {'type': 'number', 'default': 20, 'description': 'Gibson only — homology arm length, which must match what the assembly was designed with.'}, 'maxAlternatives': {'type': 'number', 'default': 12, 'description': 'Cap on returned alternatives, most accessible first. The pre-cap count is always reported as alternativesEnumerated.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['template', 'forwardPrimer', 'reversePrimer', 'observedSize'], 'properties': {'circular': {'type': 'boolean', 'default': False, 'description': 'Template is circular (a plasmid).'}, 'template': {'type': 'string', 'residues': 'nt', 'description': 'The template you amplified, raw or FASTA. Max 200,000 bp.'}, 'toleranceBp': {'type': 'number', 'description': 'Override the tolerance with a fixed window in bp.'}, 'observedSize': {'type': 'number', 'description': 'The band size you measured off the gel, in bp.'}, 'forwardPrimer': {'type': 'string', 'residues': 'nt', 'description': "Forward primer, 5'→3'."}, 'maxCandidates': {'type': 'number', 'default': 40, 'description': 'Cap on returned candidates, best-anchored first.'}, 'maxMismatches': {'type': 'number', 'default': 3, 'description': 'Mismatches tolerated per primer while looking for sites (max 6). Higher finds more explanations and more coincidences.'}, 'reversePrimer': {'type': 'string', 'residues': 'nt', 'description': "Reverse primer, 5'→3'."}, 'tolerancePercent': {'type': 'number', 'default': 10, 'description': 'How far off the size read may be, as a percentage. A percentage rather than a fixed number of bases because ±10% of 200 bp is not the same reading precision as ±10% of 5 kb.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['barcodes'], 'properties': {'metric': {'enum': ['levenshtein', 'hamming'], 'type': 'string', 'default': 'levenshtein', 'description': "'levenshtein' counts substitutions, insertions and deletions — the right choice for nanopore or PacBio, and the safe default. 'hamming' counts substitutions only, which is faster and adequate when the platform's errors are substitutions (Illumina), but gives NO protection against an indel shifting one barcode into another."}, 'barcodes': {'type': 'string', 'description': 'The barcodes, as FASTA, one per line, or comma-separated. Max 1,000, because every pair is compared.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': [], 'properties': {'seed': {'type': 'integer', 'default': 1, 'description': 'Seeds the search. Change it for a different set from the same constraints; keep it to reproduce one.'}, 'count': {'type': 'integer', 'default': 96, 'maximum': 1000, 'minimum': 1, 'description': 'How many barcodes to design (max 1000). A plate is 96 or 384.'}, 'gcMax': {'type': 'number', 'default': 75, 'maximum': 100, 'minimum': 0, 'description': 'Highest GC% a barcode may have.'}, 'gcMin': {'type': 'number', 'default': 25, 'maximum': 100, 'minimum': 0, 'description': 'Lowest GC% a barcode may have.'}, 'length': {'type': 'integer', 'default': 12, 'maximum': 40, 'minimum': 4, 'description': 'Barcode length in bases (default 12). Longer barcodes make a given distance far easier to reach.'}, 'metric': {'enum': ['levenshtein', 'hamming'], 'type': 'string', 'default': 'levenshtein', 'description': "'levenshtein' counts substitutions, insertions and deletions — the right choice for nanopore or PacBio, and the safe default. 'hamming' counts substitutions only, which is faster and adequate when the platform's errors are substitutions (Illumina), but gives NO protection against an indel shifting one barcode into another."}, 'exclude': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Motifs no barcode may contain, checked on both strands — the restriction sites you clone with. Literal ACGT only.'}, 'existing': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Barcodes you already use. They are held fixed and the new ones are kept distant from them, so a second plate does not collide with the first.'}, 'minDistance': {'type': 'integer', 'default': 3, 'minimum': 1, 'description': "Minimum edit distance between any two barcodes (default 3). Distance 3 corrects one read error and detects two; distance 5 corrects two. Distance 1 only means 'not identical' and corrects nothing."}, 'maxHomopolymer': {'type': 'integer', 'default': 3, 'minimum': 1, 'description': 'Longest run of one base allowed (default 3). Homopolymers miscall on every platform and are the one composition rule worth keeping tight.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['target'], 'properties': {'editor': {'enum': ['be3', 'be4max', 'abe7.10', 'abe8e'], 'type': 'string', 'default': 'be4max', 'description': 'Base editor: be3/be4max (CBE, C→T) or abe7.10/abe8e (ABE, A→G).'}, 'target': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}, 'frameStart': {'type': 'integer', 'description': "Optional 1-based CDS reading-frame start, to classify each edit's amino-acid consequence."}, 'targetPosition': {'type': 'integer', 'description': 'Optional 1-based forward-strand position of the base you intend to edit; only guides whose window covers it are returned.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['controlBases', 'controlChannels', 'editedBases', 'editedChannels'], 'properties': {'to': {'type': 'string', 'residues': 'nt', 'description': 'Explicit-window mode: the base it converts to, as READ on the control strand.'}, 'from': {'type': 'string', 'residues': 'nt', 'description': 'Explicit-window mode: the base the editor converts, as READ on the control strand (C for a CBE read forward, G for one read reverse).'}, 'editor': {'enum': ['be3', 'be4max', 'abe7.10', 'abe8e'], 'type': 'string', 'description': 'Base editor id (be3, be4max, abe7.10, abe8e) — fixes the converted bases and the activity window in protospacer coordinates. Requires "protospacer". Mutually exclusive with the explicit window arguments.'}, 'offset': {'type': 'number', 'description': 'Override the alignment offset between the reads (edited position p matches control position p + offset). Whole numbers only. By default it is found from the base calls outside the window; either way the identity reported back is the identity AT THE OFFSET USED, so overriding it does not hide a bad alignment behind the best-scoring one.'}, 'windowEnd': {'type': 'number', 'description': 'Explicit window end, 1-based inclusive, in CONTROL coordinates. Window length is capped at 40.'}, 'zThreshold': {'type': 'number', 'default': 3, 'maximum': 10, 'minimum': 1, 'description': "Significance threshold in standard deviations of the sample's own background. Must be between 1 and 10 — a value outside that range is REJECTED, not clamped, because a run silently retested at a threshold the caller did not choose looks exactly like one that was. Raising it raises the reported noise floor with it."}, 'editedBases': {'type': 'string', 'residues': 'nt', 'description': "Base calls of the edited pool's read."}, 'protospacer': {'type': 'string', 'residues': 'nt', 'description': "The 20-nt spacer, located in the CONTROL read. Found on either strand; a reverse-complement match numbers the protospacer right-to-left along the read and complements the converted bases (a CBE's C→T reads as G→A), which is handled. Must match exactly once."}, 'windowStart': {'type': 'number', 'description': 'Explicit window start, 1-based in CONTROL read coordinates. Requires windowEnd, from and to.'}, 'controlBases': {'type': 'string', 'residues': 'nt', 'description': 'Base calls of the UNEDITED control read.'}, 'editedChannels': {'type': 'array', 'items': {'type': 'array', 'items': {'type': 'number'}}, 'description': 'Per-base [A, C, G, T] intensities of the edited read, same convention.'}, 'targetPosition': {'type': 'number', 'description': '1-based CONTROL position of the intended edit. Give it when you know it: without it the most-edited significant position is labeled the target and the rest become bystanders, which relabels a bystander-dominant result as a clean one.'}, 'controlChannels': {'type': 'array', 'items': {'type': 'array', 'items': {'type': 'number'}}, 'description': "Per-base [A, C, G, T] intensities of the control read, one row per called base, read at that base's peak location (trace arrays are indexed by scan, not by base)."}, 'targetProtospacerPosition': {'type': 'number', 'description': '1-based protospacer position of the intended edit (PAM-distal = 1). Editor mode only.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['tool', 'input'], 'properties': {'args': {'type': 'object', 'description': 'Shared arguments applied to every record.', 'additionalProperties': True}, 'tool': {'type': 'string', 'description': 'Batchable tool name (for example gc_content or translate).'}, 'input': {'type': 'string', 'description': 'Multi-FASTA or one sequence/identifier per line.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['rid'], 'properties': {'rid': {'type': 'string', 'description': 'The request id returned by blast_submit.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'evalue': {'type': 'number', 'description': "Report only hits at or below this expect value. NCBI's default is 10."}, 'program': {'enum': ['blastn', 'blastp', 'blastx', 'tblastn'], 'type': 'string', 'description': 'BLAST program. Omit to infer from the sequence: blastn for nucleotide, blastp for protein. blastx translates a nucleotide query and searches proteins; tblastn searches translated nucleotide databases with a protein query.'}, 'database': {'type': 'string', 'description': "Database to search. Omit for the program's default. blastn: nt, refseq_rna (default nt); blastx: nr (default nr); blastp: nr, swissprot (default nr); tblastn: nt (default nt)."}, 'sequence': {'type': 'string', 'description': 'DNA or protein to search, raw or FASTA. Up to 20,000 residues.'}, 'megablast': {'type': 'boolean', 'default': True, 'description': "blastn only. Megablast (the default) finds near-identical sequences and is what identifies a clone; set false for a slower search that also finds diverged ones. Left unset, a query shorter than megablast's 28-base seed runs as plain blastn, since megablast cannot seed it at all."}, 'hitlistSize': {'type': 'integer', 'default': 20, 'description': 'Most database sequences to report (1-100).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['radiusCm'], 'properties': {'rcf': {'type': 'number', 'description': 'Relative centrifugal force in ×g. Give this OR rpm.'}, 'rpm': {'type': 'number', 'description': 'Speed in revolutions per minute. Give this OR rcf.'}, 'radiusCm': {'type': 'number', 'description': 'Rotor radius in cm — the maximum radius, from the rotor manual. Required: there is no typical rotor to assume.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'maxOrfs': {'type': 'integer', 'default': 8, 'description': 'Maximum number of ORFs to return, longest first.'}, 'minOrfAa': {'type': 'integer', 'default': 40, 'description': 'Minimum ORF length in amino acids (nucleotide input only).'}, 'sequence': {'type': 'string', 'residues': 'any', 'description': 'Nucleotide or protein sequence (raw or FASTA; IUPAC accepted). The alphabet is detected.'}, 'endPrimerLength': {'type': 'integer', 'default': 20, 'description': 'Length of the naive end primers taken from each end.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['symptom', 'method'], 'properties': {'parts': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 8, 'description': 'Parts in assembly order (Golden Gate / Gibson), or [vector, insert] for a restriction ligation. Raw or FASTA. Up to 8; 300,000 bp total across parts and template.'}, 'method': {'enum': ['goldengate', 'gibson', 'restriction_ligation', 'pcr'], 'type': 'string', 'description': 'How the construct was made. Decides which cause set applies and which design checks can run.'}, 'enzymes': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 4, 'description': 'The Type IIS enzyme for Golden Gate (BsaI, BbsI, Esp3I (BsmBI)), or the one or two restriction enzymes the insert and vector were cut with. An unrecognized name is rejected rather than skipped: every methylation and site-geometry verdict here reads "no site found" when the enzyme is missing, so a typo would come back as a clean bill of health.'}, 'symptom': {'enum': ['no_colonies', 'wrong_clones', 'no_pcr_band'], 'type': 'string', 'description': 'The complaint. "no_colonies" = the plate is blank; "wrong_clones" = colonies grew but the clones are empty vector / rearranged / the original template; "no_pcr_band" = the gel lane is empty or the band is the wrong size.'}, 'colonies': {'type': 'number', 'description': 'Colonies on the experimental plate. Omitting this is different from giving 0.'}, 'screened': {'type': 'object', 'required': ['total', 'correct'], 'properties': {'total': {'type': 'number', 'description': 'Clones screened.'}, 'correct': {'type': 'number', 'description': 'Clones that were the intended construct.'}, 'rearranged': {'type': 'number', 'description': 'Clones that were a real plasmid but not the intended arrangement of parts.'}, 'emptyVector': {'type': 'number', 'description': 'Clones carrying no insert.'}, 'originalTemplate': {'type': 'number', 'description': 'Clones that turned out to be the plasmid the insert was amplified from.'}}, 'description': 'Screening tally, up to 100,000 clones. The buckets must not add up to more than total — an inconsistent tally is rejected rather than reasoned over, because every verdict drawn from the screen compares a count against that total.'}, 'template': {'type': 'string', 'residues': 'nt', 'description': 'PCR template, raw or FASTA.'}, 'ladderRan': {'type': 'boolean', 'description': 'Was the ladder itself visible in the same gel? A true here eliminates the whole stain-and-imaging branch in one observation.'}, 'partNames': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels for the parts, in the same order ("backbone", "promoter", "CDS"). Used in every fact that names a part.'}, 'overlapLen': {'type': 'number', 'default': 20, 'description': 'Gibson only — the homology arm length the assembly was designed with.'}, 'insertSource': {'enum': ['plasmid_pcr', 'genomic_pcr', 'synthesis', 'digest', 'unknown'], 'type': 'string', 'description': 'Where the insert came from. Only "plasmid_pcr" changes a verdict: a plasmid template replicates and selects on its own, so it can give colonies with no ligation at all.'}, 'vectorMarker': {'enum': ['amp', 'ampicillin', 'bla', 'cam', 'carb', 'carbenicillin', 'chlor', 'chloramphenicol', 'gent', 'gentamicin', 'hyg', 'hygromycin', 'kan', 'kanamycin', 'neo', 'spec', 'spectinomycin', 'strep', 'tet', 'tetracycline', 'zeo', 'zeocin'], 'type': 'string', 'description': "Selection marker on the vector. Compared against the plate's antibiotic by identity, not by guessing at free text."}, 'primerForward': {'type': 'string', 'residues': 'nt', 'description': 'Forward primer, up to 200 nt.'}, 'primerReverse': {'type': 'string', 'residues': 'nt', 'description': 'Reverse primer, up to 200 nt.'}, 'agarosePercent': {'type': 'number', 'default': 1, 'description': 'Agarose percentage of the gel. Snapped to the nearest tabulated value; decides the resolving window a band is placed against.'}, 'annealingTempC': {'type': 'number', 'description': "Annealing temperature actually used, °C. Compared against each primer's own nearest-neighbor Tm."}, 'hostMethylation': {'enum': ['dam_dcm_plus', 'dam_dcm_minus', 'unknown'], 'type': 'string', 'default': 'unknown', 'description': 'Dam/Dcm state of the DNA that was CUT — a property of the strain the plasmid was prepared from, not the one it was transformed into. Standard cloning strains are dam+/dcm+. "dam_dcm_minus" eliminates every methylation-blocking cause; "unknown" leaves the sequence overlap stated as a fact and the methylation as an open question.'}, 'plateAntibiotic': {'enum': ['amp', 'ampicillin', 'bla', 'cam', 'carb', 'carbenicillin', 'chlor', 'chloramphenicol', 'gent', 'gentamicin', 'hyg', 'hygromycin', 'kan', 'kanamycin', 'neo', 'spec', 'spectinomycin', 'strep', 'tet', 'tetracycline', 'zeo', 'zeocin'], 'type': 'string', 'description': 'Antibiotic on the plate. amp and carbenicillin count as the same selection (both select bla).'}, 'templateCircular': {'type': 'boolean', 'default': False, 'description': 'Treat the template as a plasmid, so a product across the origin is found.'}, 'gelBandsObservedBp': {'type': 'array', 'items': {'type': 'number'}, 'maxItems': 30, 'description': 'Band sizes read off the lane, bp. An empty array ("I looked and there was nothing") is not the same as omitting the field.'}, 'phosphataseTreated': {'type': 'boolean', 'description': 'Was the cut vector dephosphorylated (rSAP/CIP) before ligation?'}, 'noDnaControlColonies': {'type': 'number', 'description': 'Colonies from the same cells and plate with NO DNA added. Non-zero means the plate is not selecting.'}, 'noInsertControlColonies': {'type': 'number', 'description': 'Colonies from the identical reaction with the insert (or one part) left out.'}, 'positiveControlColonies': {'type': 'number', 'description': 'Colonies from an intact, uncut plasmid into the same cell aliquot. Non-zero eliminates "the cells never took up DNA".'}, 'positiveControlSameMarker': {'type': 'boolean', 'description': 'Did that control plasmid carry the SAME selection marker? If not, it eliminates the cells but says nothing about the plate — the tool reports the difference.'}, 'uncutVectorControlColonies': {'type': 'number', 'description': 'Colonies from the digested but UNLIGATED vector. Measures intact vector that survived the digest, with no help from the ligase.'}, 'transformationEfficiencyCfuPerUg': {'type': 'number', 'description': 'cfu/µg from a control transformation, where it was measured.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['symptom', 'method'], 'properties': {'parts': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 8, 'description': 'Parts in assembly order (Golden Gate / Gibson), or [vector, insert] for a restriction ligation. Raw or FASTA. Up to 8; 300,000 bp total across parts and template.'}, 'method': {'enum': ['goldengate', 'gibson', 'restriction_ligation', 'pcr'], 'type': 'string', 'description': 'How the construct was made. Decides which cause set applies and which design checks can run.'}, 'enzymes': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 4, 'description': 'The Type IIS enzyme for Golden Gate (BsaI, BbsI, Esp3I (BsmBI)), or the one or two restriction enzymes the insert and vector were cut with. An unrecognized name is rejected rather than skipped: every methylation and site-geometry verdict here reads "no site found" when the enzyme is missing, so a typo would come back as a clean bill of health.'}, 'symptom': {'enum': ['no_colonies', 'wrong_clones', 'no_pcr_band'], 'type': 'string', 'description': 'The complaint. "no_colonies" = the plate is blank; "wrong_clones" = colonies grew but the clones are empty vector / rearranged / the original template; "no_pcr_band" = the gel lane is empty or the band is the wrong size.'}, 'colonies': {'type': 'number', 'description': 'Colonies on the experimental plate. Omitting this is different from giving 0.'}, 'screened': {'type': 'object', 'required': ['total', 'correct'], 'properties': {'total': {'type': 'number', 'description': 'Clones screened.'}, 'correct': {'type': 'number', 'description': 'Clones that were the intended construct.'}, 'rearranged': {'type': 'number', 'description': 'Clones that were a real plasmid but not the intended arrangement of parts.'}, 'emptyVector': {'type': 'number', 'description': 'Clones carrying no insert.'}, 'originalTemplate': {'type': 'number', 'description': 'Clones that turned out to be the plasmid the insert was amplified from.'}}, 'description': 'Screening tally, up to 100,000 clones. The buckets must not add up to more than total — an inconsistent tally is rejected rather than reasoned over, because every verdict drawn from the screen compares a count against that total.'}, 'template': {'type': 'string', 'residues': 'nt', 'description': 'PCR template, raw or FASTA.'}, 'ladderRan': {'type': 'boolean', 'description': 'Was the ladder itself visible in the same gel? A true here eliminates the whole stain-and-imaging branch in one observation.'}, 'partNames': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels for the parts, in the same order ("backbone", "promoter", "CDS"). Used in every fact that names a part.'}, 'overlapLen': {'type': 'number', 'default': 20, 'description': 'Gibson only — the homology arm length the assembly was designed with.'}, 'insertSource': {'enum': ['plasmid_pcr', 'genomic_pcr', 'synthesis', 'digest', 'unknown'], 'type': 'string', 'description': 'Where the insert came from. Only "plasmid_pcr" changes a verdict: a plasmid template replicates and selects on its own, so it can give colonies with no ligation at all.'}, 'vectorMarker': {'enum': ['amp', 'ampicillin', 'bla', 'cam', 'carb', 'carbenicillin', 'chlor', 'chloramphenicol', 'gent', 'gentamicin', 'hyg', 'hygromycin', 'kan', 'kanamycin', 'neo', 'spec', 'spectinomycin', 'strep', 'tet', 'tetracycline', 'zeo', 'zeocin'], 'type': 'string', 'description': "Selection marker on the vector. Compared against the plate's antibiotic by identity, not by guessing at free text."}, 'primerForward': {'type': 'string', 'residues': 'nt', 'description': 'Forward primer, up to 200 nt.'}, 'primerReverse': {'type': 'string', 'residues': 'nt', 'description': 'Reverse primer, up to 200 nt.'}, 'agarosePercent': {'type': 'number', 'default': 1, 'description': 'Agarose percentage of the gel. Snapped to the nearest tabulated value; decides the resolving window a band is placed against.'}, 'annealingTempC': {'type': 'number', 'description': "Annealing temperature actually used, °C. Compared against each primer's own nearest-neighbor Tm."}, 'hostMethylation': {'enum': ['dam_dcm_plus', 'dam_dcm_minus', 'unknown'], 'type': 'string', 'default': 'unknown', 'description': 'Dam/Dcm state of the DNA that was CUT — a property of the strain the plasmid was prepared from, not the one it was transformed into. Standard cloning strains are dam+/dcm+. "dam_dcm_minus" eliminates every methylation-blocking cause; "unknown" leaves the sequence overlap stated as a fact and the methylation as an open question.'}, 'plateAntibiotic': {'enum': ['amp', 'ampicillin', 'bla', 'cam', 'carb', 'carbenicillin', 'chlor', 'chloramphenicol', 'gent', 'gentamicin', 'hyg', 'hygromycin', 'kan', 'kanamycin', 'neo', 'spec', 'spectinomycin', 'strep', 'tet', 'tetracycline', 'zeo', 'zeocin'], 'type': 'string', 'description': 'Antibiotic on the plate. amp and carbenicillin count as the same selection (both select bla).'}, 'templateCircular': {'type': 'boolean', 'default': False, 'description': 'Treat the template as a plasmid, so a product across the origin is found.'}, 'gelBandsObservedBp': {'type': 'array', 'items': {'type': 'number'}, 'maxItems': 30, 'description': 'Band sizes read off the lane, bp. An empty array ("I looked and there was nothing") is not the same as omitting the field.'}, 'phosphataseTreated': {'type': 'boolean', 'description': 'Was the cut vector dephosphorylated (rSAP/CIP) before ligation?'}, 'noDnaControlColonies': {'type': 'number', 'description': 'Colonies from the same cells and plate with NO DNA added. Non-zero means the plate is not selecting.'}, 'noInsertControlColonies': {'type': 'number', 'description': 'Colonies from the identical reaction with the insert (or one part) left out.'}, 'positiveControlColonies': {'type': 'number', 'description': 'Colonies from an intact, uncut plasmid into the same cell aliquot. Non-zero eliminates "the cells never took up DNA".'}, 'positiveControlSameMarker': {'type': 'boolean', 'description': 'Did that control plasmid carry the SAME selection marker? If not, it eliminates the cells but says nothing about the plate — the tool reports the difference.'}, 'uncutVectorControlColonies': {'type': 'number', 'description': 'Colonies from the digested but UNLIGATED vector. Measures intact vector that survived the digest, with no help from the ligase.'}, 'transformationEfficiencyCfuPerUg': {'type': 'number', 'description': 'cfu/µg from a control transformation, where it was measured.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['method'], 'properties': {'names': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional labels for each fragment.'}, 'enzyme': {'type': 'string', 'default': 'BsaI', 'description': 'Type IIS enzyme for Golden Gate — one of BsaI, BbsI, Esp3I (BsmBI); "BsmBI" also resolves to Esp3I. Any other name is rejected rather than substituted.'}, 'insert': {'type': 'string', 'residues': 'nt', 'description': 'Insert sequence (restriction, topo and lic methods).'}, 'method': {'enum': ['gibson', 'goldengate', 'restriction', 'topo', 'lic', 'slic', 'infusion'], 'type': 'string', 'default': 'gibson', 'description': 'Assembly method. gibson/goldengate design the junction primers for bare fragments; restriction and topo build a product from a vector and an insert; lic and slic model T4-polymerase chew-back (sequence-defined and time-stopped respectively); infusion is In-Fusion/CPEC, 15 bp terminal homology with no exonuclease, and works out the fragment ORDER for itself.'}, 'vector': {'type': 'string', 'residues': 'nt', 'description': 'Vector sequence (restriction, topo and lic methods; for lic, the LINEARIZED vector).'}, 'enzyme3': {'type': 'string', 'default': 'BamHI', 'description': 'Insert 3′ enzyme (restriction method).'}, 'enzyme5': {'type': 'string', 'default': 'EcoRI', 'description': 'Insert 5′ enzyme (restriction method).'}, 'circular': {'type': 'boolean', 'default': True, 'description': 'Produce a circular product.'}, 'topoMode': {'enum': ['ta', 'blunt', 'directional'], 'type': 'string', 'default': 'ta', 'description': 'TOPO chemistry (topo method): TA (Taq 3′-A), blunt, or directional (pENTR/D-TOPO, needs 5′-CACC on the insert).'}, 'fragments': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 24, 'description': 'Fragments (5′→3′). Used by gibson/goldengate/slic/infusion. gibson and goldengate assemble them head-to-tail in the order given and add the junctions by primer; slic needs the homology already ON the fragments and keeps the order given; infusion needs it on the fragments too but derives the order from the homologies, so the order listed here is ignored. slic and infusion take at most 24.'}, 'overlapLen': {'type': 'integer', 'default': 20, 'description': 'Gibson homology-arm length (bp).'}, 'armTmTarget': {'type': 'number', 'default': 60, 'description': 'Target annealing Tm (°C) for primer arms.'}, 'chewBackLen': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': "slic method: nucleotides removed from each 3′ end. A SLIC chew-back has no dNTP to arrest it and is stopped by time, so this is an input rather than a property of the sequence. 0 (default) models the intended reaction — chewed to the full homology and no further; any positive value is checked against each junction's own homology, and both overrunning it and falling short of meeting the chew-back coming the other way are reported."}, 'homologyLen': {'type': 'integer', 'default': 15, 'minimum': 15, 'description': 'infusion method: terminal homology required at every junction, in bp. At least 15 — the junction is annealed and extended by a polymerase with no exonuclease to widen it and no ligase to seal it, so a shorter overlap is a different chemistry rather than a weaker version of this one.'}, 'vectorEnzyme3': {'type': 'string', 'description': 'Vector 3′ enzyme (restriction method); defaults to enzyme3.'}, 'vectorEnzyme5': {'type': 'string', 'description': 'Vector 5′ enzyme (restriction method); defaults to enzyme5. Set a different, compatible enzyme (e.g. BglII for a BamHI insert) to model heterologous-overhang cloning.'}, 'insertNucleotide': {'enum': ['A', 'C', 'G', 'T'], 'type': 'string', 'description': "lic method: the single dNTP the INSERT's chew-back was run with. Normally the COMPLEMENT of vectorNucleotide (the classic pair is dTTP on the vector, dATP on the insert) — with the same base for both, each junction's shared block would have to avoid that base and its complement at once."}, 'vectorNucleotide': {'enum': ['A', 'C', 'G', 'T'], 'type': 'string', 'description': "lic method: the single dNTP the VECTOR's chew-back was run with (T for dTTP…). Required — T4 pol's exonuclease stops at the first occurrence of this base reading inward from each 3′ end, so there is no answer without it."}, 'mergePreAddedArms': {'type': 'boolean', 'default': True, 'description': 'Gibson only. When two fragments already share terminal sequence, count that share ONCE (the default — it is a homology arm the fragments already carry) or set false to concatenate it twice. The second reading is the right one when the shared block is a genuine tandem repeat, e.g. a 2x tag or enhancer split between its copies: nothing in the two fragments can tell the two apart, so the choice belongs to the caller. Either way the share is reported in preAddedArms and both readings are returned in `readings`.'}, 'dephosphorylateVector': {'type': 'boolean', 'default': False, 'description': 'CIP/rSAP-dephosphorylate the vector to suppress self-ligation background (restriction method).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'organism': {'enum': ['ecoli', 'human', 'yeast', 'cho', 'pichia', 'insect', 'arabidopsis', 'zebrafish'], 'type': 'string', 'default': 'ecoli'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Coding sequence (DNA/RNA; should start in-frame at ATG).'}, 'frameStart': {'type': 'integer', 'default': 1, 'description': '1-based position to start reading codons.'}, 'minRareRun': {'type': 'integer', 'default': 3, 'description': 'Shortest stretch of CONSECUTIVE rare codons to report as a run. A CAI is a geometric mean, so fifteen rare codons scattered singly and the same fifteen in three runs of five score alike and carry the same rareCount; only the runs say where they are clustered.'}, 'rareThreshold': {'type': 'number', 'default': 0.1, 'description': 'Relative adaptiveness (w) below this flags a codon as rare.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['protein'], 'properties': {'protein': {'type': 'string', 'residues': 'any', 'description': 'Protein sequence (one-letter codes). Coding DNA/RNA is accepted and translated in frame +1 up to the first stop codon (residues after an in-frame stop are NOT optimized).'}, 'organism': {'enum': ['ecoli', 'human', 'yeast', 'cho', 'pichia', 'insect', 'arabidopsis', 'zebrafish'], 'type': 'string', 'default': 'ecoli'}, 'inputType': {'enum': ['auto', 'protein', 'dna'], 'type': 'string', 'default': 'auto', 'description': "How to read `protein`. 'auto' guesses from the alphabet (>90% ACGTUN reads as DNA), which mis-files genuine Ala/Cys/Gly/Thr/Asn-only peptides — set 'protein' or 'dna' to force it."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'gcLow': {'type': 'number', 'default': 30}, 'gcHigh': {'type': 'number', 'default': 70}, 'gcWindow': {'type': 'integer', 'default': 50}, 'organism': {'enum': ['ecoli', 'human', 'yeast', 'cho', 'pichia', 'insect', 'arabidopsis', 'zebrafish'], 'type': 'string', 'default': 'ecoli', 'description': 'Codon-usage table to prefer among synonymous options.'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}, 'maxPasses': {'type': 'integer', 'default': 3, 'maximum': 10, 'minimum': 1, 'description': 'Repeat full passes until clean or no further progress.'}, 'frameStart': {'type': 'integer', 'default': 1, 'description': '1-based nucleotide where the reading frame begins.'}, 'avoidEnzymes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Enzyme names whose internal sites should be removed (e.g. ["BsaI","BsmBI"] for Golden Gate domestication).'}, 'homopolymerMin': {'type': 'integer', 'default': 8}, 'crypticOrfMinAa': {'type': 'integer', 'default': 20, 'description': 'Minimum peptide length (aa) for a hidden alternate-frame ORF to be flagged.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'gcLow': {'type': 'number', 'default': 30, 'description': 'GC% below this flags an AT-rich window.'}, 'gcHigh': {'type': 'number', 'default': 70, 'description': 'GC% above this flags a GC-rich window.'}, 'gcWindow': {'type': 'integer', 'default': 50, 'description': 'Sliding-window size (nt) for GC-extreme scanning.'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}, 'frameStart': {'type': 'integer', 'default': 1, 'description': '1-based nucleotide where the reading frame begins.'}, 'avoidEnzymes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Enzyme names whose internal sites should be flagged as errors. Matched against the curated common-enzyme set plus the Golden Gate Type IIS enzymes (BsaI, BbsI, Esp3I/BsmBI); an unrecognized name is rejected, never skipped.'}, 'homopolymerMin': {'type': 'integer', 'default': 8, 'description': 'Minimum run length to flag a homopolymer.'}, 'crypticOrfMinAa': {'type': 'integer', 'default': 20, 'description': 'Minimum peptide length (aa) for a hidden alternate-frame ORF to be flagged.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'preset': {'enum': ['gardiner-garden', 'takai-jones'], 'type': 'string', 'default': 'gardiner-garden', 'description': 'Which published criteria to apply. "gardiner-garden": Gardiner-Garden & Frommer 1987 (GC > 50%, obs/exp > 0.6, >= 200 bp; thresholds strict, as the paper states them) "takai-jones": Takai & Jones 2002 (GC >= 55%, obs/exp >= 0.65, >= 500 bp; excludes most Alu)'}, 'mergeGap': {'type': 'integer', 'default': 100, 'description': 'Join passing regions closer than this, when the joined region still passes. Takai & Jones use 100.'}, 'minGcPct': {'type': 'number', 'description': "Override the preset's GC threshold, 0-100."}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'DNA to scan (raw or FASTA). Max 5,000,000 bases.'}, 'minLength': {'type': 'integer', 'description': "Override the preset's minimum island length, bp."}, 'minObsExp': {'type': 'number', 'description': "Override the preset's observed/expected CpG threshold."}, 'windowSize': {'type': 'integer', 'default': 200, 'description': "Scanning window in bp. 200 is Takai & Jones' window, and it is used for both presets so the two differ only in their thresholds (Gardiner-Garden & Frommer's 1987 paper scanned 100 bp windows)."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'minScore': {'type': 'number', 'default': 0, 'description': 'Only return guides with a heuristic score at least this high (0–100).'}, 'nuclease': {'enum': ['spcas9', 'spcas9ng', 'sacas9', 'cas12a'], 'type': 'string', 'default': 'spcas9', 'description': 'Nuclease id. Omit to just list the available nucleases (no scan is performed).'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}, 'searchReverseStrand': {'type': 'boolean', 'default': True, 'description': 'Also scan the reverse strand for guides.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['targetSequence', 'replacement'], 'properties': {'editEnd': {'type': 'integer', 'description': "1-based inclusive end of the region being replaced; editEnd = editStart-1 denotes a pure insertion with nothing removed. Omit to derive from the guide's cut site."}, 'blockPam': {'type': 'boolean', 'default': True, 'description': "When a SpCas9-family guide is supplied and the edit does not already disrupt its PAM, fold a PAM-blocking mutation (silent when a CDS frame is given) into the donor so the edited allele can't be re-cut."}, 'guideEnd': {'type': 'integer', 'description': "1-based forward-strand end of the guide's protospacer."}, 'nuclease': {'enum': ['spcas9', 'spcas9ng', 'sacas9', 'cas12a'], 'type': 'string', 'default': 'spcas9', 'description': 'Needed only when deriving the cut site from guideStart/guideEnd/guideStrand.'}, 'armLength': {'type': 'integer', 'default': 500, 'description': 'Homology arm length (bp) on each side. Use ~30–60 for an ssODN donor, ~500–1000 for a dsDNA donor plasmid.'}, 'editStart': {'type': 'integer', 'description': '1-based start of the region being replaced. Omit to derive from guideStart/guideEnd/guideStrand instead.'}, 'frameStart': {'type': 'integer', 'description': 'Optional 1-based CDS reading-frame start; makes the PAM-blocking mutation synonymous where possible.'}, 'guideStart': {'type': 'integer', 'description': "1-based forward-strand start of the guide's protospacer (alternative to editStart/editEnd, for an insertion exactly at the cut site)."}, 'guideStrand': {'enum': ['+', '-'], 'type': 'string', 'description': "Strand the guide's protospacer is on."}, 'replacement': {'type': 'string', 'default': '', 'description': 'Sequence to insert/substitute ("" for a pure deletion).'}, 'targetSequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}, 'designGenotypingPrimers': {'type': 'boolean', 'default': True, 'description': 'Also design a primer pair (on the original targetSequence) whose product spans the edit site.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['protospacer'], 'properties': {'nuclease': {'enum': ['spcas9', 'spcas9ng', 'sacas9', 'cas12a'], 'type': 'string', 'default': 'spcas9', 'description': 'Nuclease id — determines the PAM pattern/side required at each candidate site.'}, 'protospacer': {'type': 'string', 'residues': 'nt', 'maxLength': 32, 'description': "The guide's protospacer sequence, 5'→3' (no PAM). Max 32 nt — every supported nuclease uses a 20–23 nt guide."}, 'maxMismatches': {'type': 'integer', 'default': 2, 'maximum': 4, 'minimum': 0, 'description': 'Mismatches tolerated between the protospacer and a candidate genomic site. Max 4 — a complete search seeds on maxMismatches+1 non-overlapping blocks, and past that the blocks are too short to be selective against a multi-Mb genome (a site that mismatched more would not be cut anyway).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'properties': {'tracr': {'enum': ['Hsu2013', 'Chen2013'], 'type': 'string', 'default': 'Hsu2013', 'description': 'Which tracrRNA the guides will be paired with. Hsu2013 is the one in lentiCRISPRv2 and most published libraries; Chen2013 is the sgRNA(F+E) scaffold used by the Sanger/Yusa libraries. If you use the DeWeirdt (2020) tracrRNA, the paper reports Chen2013 as the better proxy — there is no DeWeirdt option in the model itself.'}, 'contexts': {'type': 'array', 'items': {'type': 'string'}, 'description': '30-mer contexts to score directly: 4 nt upstream + 20 nt spacer + PAM + 3 nt downstream. Give this OR `sequence`.'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Target DNA to find NGG guides in. Give this OR `contexts`.'}, 'searchReverseStrand': {'type': 'boolean', 'default': True, 'description': "Also scan the reverse strand for guides. Applies to `sequence` only; a 30-mer in `contexts` is already written on its own guide's strand."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequenceA', 'sequenceB'], 'properties': {'sequenceA': {'type': 'string', 'residues': 'nt', 'description': "First oligo (5'→3')."}, 'sequenceB': {'type': 'string', 'residues': 'nt', 'description': "Second oligo (5'→3')."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['intended', 'alternatives'], 'properties': {'enzymes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Restrict the search to these enzymes (e.g. the ones on your bench). Default is the whole curated set of 49. An unrecognized name is rejected rather than skipped, so "does not discriminate" always means it was actually tried.'}, 'circular': {'type': 'boolean', 'default': True, 'description': 'Treat every candidate as a circular plasmid.'}, 'intended': {'type': 'string', 'residues': 'nt', 'description': 'The construct you designed, raw or FASTA.'}, 'alternatives': {'type': 'array', 'items': {'type': 'object', 'required': ['sequence'], 'properties': {'label': {'type': 'string', 'description': 'What this wrong construct is ("empty vector", "insert reversed").'}, 'sequence': {'type': 'string', 'description': 'Its full sequence, raw or FASTA.'}}}, 'description': 'The wrong constructs to screen against, 1-12. assembly_outcomes emits these ready-made as `forDiagnosticDigest`.'}, 'includePairs': {'enum': ['auto', 'always', 'never'], 'type': 'string', 'default': 'auto', 'description': 'Whether to search double digests. "auto" adds them only when no single enzyme separates everything.'}, 'agarosePercent': {'type': 'number', 'default': 1, 'description': 'Agarose percentage of the screening gel. Snapped to the nearest tabulated value (0.5, 0.7, 1, 1.2, 1.5, 2) and the one used is reported back, since the resolving window is what decides which bands separate.'}, 'maxSuggestions': {'type': 'number', 'default': 5, 'description': 'How many ranked options to return.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': [], 'properties': {'type': {'enum': ['dsDNA', 'ssDNA', 'ssRNA'], 'type': 'string', 'default': 'dsDNA', 'description': 'Molecule type.'}, 'length': {'type': 'integer', 'default': 1000, 'description': 'Length in bp (dsDNA) or nt (ssDNA/ssRNA). Ignored when a sequence is given.'}, 'massNg': {'type': 'number', 'default': 100, 'description': 'Mass in nanograms.'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Optional sequence — overrides length and gives an exact molar mass from base composition.'}, 'volumeUl': {'type': 'number', 'default': 0, 'description': 'Volume in microlitres (0 = unknown; needed for concentration).'}, 'targetUnit': {'enum': ['nM', 'uM', 'ngPerUl'], 'type': 'string', 'default': 'nM', 'description': 'Unit for targetConcentration.'}, 'targetVolumeUl': {'type': 'number', 'default': 20, 'description': 'Final volume of the diluted sample, in µL.'}, 'targetConcentration': {'type': 'number', 'description': 'Optional: the concentration you need. Supplying it (with volumeUl, so there is a stock concentration to dilute FROM) returns a `dilution` plan — µL of stock and µL of diluent — instead of leaving C1V1 = C2V2 to be done by hand. The stock and the target may be quoted in different units; the molar mass converts between them.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['a', 'b'], 'properties': {'a': {'type': 'string', 'residues': 'nt', 'description': 'First sequence (raw or FASTA). Max 200,000 nt.'}, 'b': {'type': 'string', 'residues': 'nt', 'description': 'Second sequence. Pass the same sequence as "a" to find its internal repeats. Max 200,000 nt.'}, 'maxRuns': {'type': 'integer', 'default': 2000, 'description': 'Most runs to return, longest first.'}, 'wordSize': {'type': 'integer', 'maximum': 64, 'minimum': 4, 'description': 'Exact-match word length. Omit to pick one from the sequence lengths.'}, 'bothStrands': {'type': 'boolean', 'default': True, 'description': 'Also search the reverse complement, which is what reveals inversions.'}, 'minRunLength': {'type': 'integer', 'default': 0, 'description': 'Drop runs shorter than this before returning. 0 = keep every run at least wordSize long.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['enzymeA', 'enzymeB'], 'properties': {'enzymeA': {'type': 'string', 'description': 'First enzyme name (e.g. EcoRI).'}, 'enzymeB': {'type': 'string', 'description': 'Second enzyme name (e.g. BamHI).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['mode', 'controlBases', 'controlChannels', 'samples'], 'properties': {'to': {'type': 'string', 'residues': 'nt', 'description': 'base mode: the base it converts to, as READ on the control strand.'}, 'from': {'type': 'string', 'residues': 'nt', 'description': 'base mode: the base the editor converts, as READ on the control strand.'}, 'mode': {'enum': ['indel', 'base', 'knockin'], 'type': 'string', 'description': 'Which quantifier to run on every well. "indel" = sanger_indel_spectrum (NHEJ efficiency and the indel spectrum; needs cutPosition; blind to substitutions). "base" = base_edit_quant (CBE/ABE conversion; needs an editor id + protospacer, or an explicit window with from/to; blind to indels). "knockin" = sanger_knockin_quant (a specific intended edit against its byproducts; needs editKind + editPosition). Arguments belonging to another mode are rejected, not ignored.'}, 'guard': {'type': 'number', 'default': 3, 'description': 'indel mode: bases skipped immediately after the cut, where the trace is least reliable. A whole number >= 0; a negative value is rejected, not clamped to 0.'}, 'editor': {'enum': ['be3', 'be4max', 'abe7.10', 'abe8e'], 'type': 'string', 'description': 'base mode: base editor id (be3, be4max, abe7.10, abe8e) — fixes the converted bases and the activity window in protospacer coordinates. Requires "protospacer". Mutually exclusive with windowStart/windowEnd/from/to.'}, 'samples': {'type': 'array', 'items': {'type': 'object', 'required': ['bases', 'channels'], 'properties': {'id': {'type': 'string', 'description': 'Well or sample name — this keys the row. A number is tolerated and read as its digits. Duplicates are suffixed ("A01#2", stepping past any name already in use), never merged; an empty or absent id becomes sample_<n>.'}, 'bases': {'type': 'string', 'description': "Base calls of this well's read (raw or FASTA)."}, 'channels': {'type': 'array', 'items': {'type': 'array', 'items': {'type': 'number', 'minimum': 0}}, 'description': 'Per-base [A, C, G, T] intensities for this well, same convention as the control, and non-negative for the same reason.'}}, 'additionalProperties': False}, 'maxItems': 384, 'description': "The plate's edited wells, in the order you want them tabulated. Up to 384 samples (96 is the natural plate) and 400,000 trace positions across the whole call, control included — that is already an 8-10 MB request body, so split a plate of untrimmed reads rather than sending one call."}, 'editKind': {'enum': ['substitution', 'insertion', 'deletion', 'replacement'], 'type': 'string', 'description': 'knockin mode (required): shape of the intended edit. "substitution" replaces bases one for one; "insertion" adds novel bases and replaces none; "deletion" removes bases and adds none; "replacement" is the general case where the lengths differ.'}, 'maxIndel': {'type': 'number', 'default': 10, 'description': 'indel and knockin modes: largest indel to fit, in bp — a whole number, 1-20. Out of range is rejected, not clamped.'}, 'altAllele': {'type': 'string', 'residues': 'nt', 'description': 'knockin mode: the bases installed in their place.'}, 'refAllele': {'type': 'string', 'residues': 'nt', 'description': 'knockin mode: the control bases the edit replaces (substitution and replacement). Checked against the control read once, before any well is fitted.'}, 'windowEnd': {'type': 'number', 'description': 'base mode: explicit window end, 1-based inclusive. Window length is capped at 40.'}, 'zThreshold': {'type': 'number', 'default': 3, 'description': "base mode: significance threshold in standard deviations of each well's own background (1-10; out of range is rejected, not clamped). Raising it raises the reported noise floor with it."}, 'cutPosition': {'type': 'number', 'description': 'indel mode (required): 1-based position of the expected cut, in CONTROL read coordinates. knockin mode (optional): 1-based CONTROL position where UNINTENDED indels start — the nuclease cut or the PE nick; defaults to the edit start.'}, 'insertedSeq': {'type': 'string', 'residues': 'nt', 'description': 'knockin mode: the novel bases inserted (insertion only).'}, 'protospacer': {'type': 'string', 'residues': 'nt', 'description': 'base mode: the 20-nt spacer, located in the CONTROL read (either strand; must match exactly once).'}, 'windowStart': {'type': 'number', 'description': 'base mode: explicit window start, 1-based in CONTROL coordinates. Requires windowEnd, from and to.'}, 'controlBases': {'type': 'string', 'residues': 'nt', 'description': 'Base calls of the ONE untreated control read (raw or FASTA).'}, 'editPosition': {'type': 'number', 'description': 'knockin mode (required): 1-based CONTROL position of the first base the edit replaces. An insertion replaces nothing, so there it is the base the insert lands immediately BEFORE — one MORE than the VCF/HGVS anchor.'}, 'windowLength': {'type': 'number', 'default': 70, 'description': 'indel and knockin modes: bases downstream used for the decomposition — a whole number, 20-300. Out of range is rejected, not clamped.'}, 'deletedLength': {'type': 'number', 'description': 'knockin mode: how many bases are deleted (deletion only).'}, 'targetPosition': {'type': 'number', 'description': "base mode: 1-based CONTROL position of the intended edit. Give it for a plate. Without it each well's headline is its OWN most-edited significant position, so two rows can be reporting two different bases and the column is not one measurement."}, 'controlChannels': {'type': 'array', 'items': {'type': 'array', 'items': {'type': 'number', 'minimum': 0}}, 'maxItems': 3000, 'description': "Per-base [A, C, G, T] intensities of the control read, one row per called base, read at that base's peak location (trace arrays are indexed by scan, not by base). Raw peak heights: every intensity must be >= 0, because negatives are clamped to zero during normalization and a baseline-subtracted trace would silently lose its minor peaks and read as unedited."}, 'targetProtospacerPosition': {'type': 'number', 'description': 'base mode: 1-based protospacer position of the intended edit (PAM-distal = 1). Editor mode only.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': [], 'properties': {'lmax': {'type': 'integer', 'maximum': 40, 'minimum': 8, 'description': 'Report a single threshold. Omit to get the whole curve from 8 to 24.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['guides'], 'properties': {'lmax': {'type': 'integer', 'default': 12, 'maximum': 40, 'minimum': 8, 'description': 'Longest stretch any two parts in the array may share, in bp (default 12). Lower is more stable and leaves fewer parts to choose from: the handle pool offers 12 at lmax 12, 18 at 15 and 24 at 20. Run elsa_capacity first.'}, 'name': {'type': 'string', 'description': 'LOCUS name for the GenBank output.'}, 'guides': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The 20 nt protospacers, in array order, WITHOUT their PAM. Strings, or {name, sequence} objects to label each unit. Max 27 — the size of the handle collection.'}, 'insulate': {'type': 'boolean', 'default': True, 'description': 'Place a neutral spacer between transcription units. Turning it off frees the spacer pool from the selection, which can let a longer array fit at a low lmax.'}, 'includeGenbank': {'type': 'boolean', 'default': True, 'description': 'Return the annotated GenBank file.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['reactions'], 'properties': {'reactions': {'type': 'array', 'items': {'type': 'object', 'required': ['forward', 'reverse'], 'properties': {'name': {'type': 'string', 'description': 'Reaction/construct name.'}, 'forward': {'type': 'string', 'description': "Forward primer sequence, 5'->3' (IUPAC accepted)."}, 'reverse': {'type': 'string', 'description': "Reverse primer sequence, 5'->3' (IUPAC accepted)."}, 'template': {'type': 'string', 'description': 'Optional template name/id — a short label (e.g. a plasmid or sample name), not a sequence.'}}}, 'description': 'One entry per PCR reaction, up to 96 (a single 96-well plate).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['reactions'], 'properties': {'reactions': {'type': 'array', 'items': {'type': 'object', 'required': ['forward', 'reverse'], 'properties': {'name': {'type': 'string', 'description': 'Reaction/construct name.'}, 'forward': {'type': 'string', 'description': "Forward primer sequence, 5'->3' (IUPAC accepted)."}, 'reverse': {'type': 'string', 'description': "Reverse primer sequence, 5'->3' (IUPAC accepted)."}, 'template': {'type': 'string', 'description': 'Optional template name/id — a short label (e.g. a plasmid or sample name), not a sequence.'}}}, 'description': 'One entry per PCR reaction, up to 96 (a single 96-well plate).'}, 'protocolName': {'type': 'string', 'description': "Optional protocol name (used in the script's metadata)."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['reactions'], 'properties': {'reactions': {'type': 'array', 'items': {'type': 'object', 'required': ['forward', 'reverse'], 'properties': {'name': {'type': 'string', 'description': 'Reaction/construct name.'}, 'forward': {'type': 'string', 'description': "Forward primer sequence, 5'->3' (IUPAC accepted)."}, 'reverse': {'type': 'string', 'description': "Reverse primer sequence, 5'->3' (IUPAC accepted)."}, 'template': {'type': 'string', 'description': 'Optional template name/id — a short label (e.g. a plasmid or sample name), not a sequence.'}}}, 'description': 'One entry per PCR reaction, up to 96 (a single 96-well plate).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['genes', 'samples', 'values'], 'properties': {'genes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Row (gene) labels.'}, 'values': {'type': 'array', 'items': {'type': 'array', 'items': {'type': 'number'}}, 'description': 'genes x samples numeric matrix — one row per gene, in the same order as `genes`.'}, 'linkage': {'enum': ['average', 'complete', 'single'], 'type': 'string', 'default': 'average', 'description': 'average = UPGMA (standard default), complete = farthest-neighbor, single = nearest-neighbor.'}, 'samples': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Column (sample) labels.'}, 'zScoreRows': {'type': 'boolean', 'default': True, 'description': 'Row-wise z-score each gene\'s values before clustering and returning (the conventional \'relative expression\' heatmap normalization — the dendrograms are computed on the same scaled matrix the heatmap shows, as in seaborn\'s clustermap(z_score=0) / pheatmap\'s scale="row").'}, 'clusterCols': {'type': 'boolean', 'default': True, 'description': 'Cluster (reorder) samples.'}, 'clusterRows': {'type': 'boolean', 'default': True, 'description': 'Cluster (reorder) genes.'}, 'distanceMetric': {'enum': ['euclidean', 'correlation'], 'type': 'string', 'default': 'correlation', 'description': 'correlation = 1 - Pearson r (the standard expression-heatmap default); euclidean = straight-line distance.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': "FASTQ text: records of an '@id' header, sequence, '+' separator and quality line (four lines each)."}, 'qualityOffset': {'enum': [33, 64], 'type': 'integer', 'default': 33, 'description': 'ASCII offset of the FASTQ quality string. 33 for anything modern, 64 for pre-1.8 Illumina.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': "FASTQ text: records of an '@id' header, sequence, '+' separator and quality line (four lines each)."}, 'minLength': {'type': 'integer', 'default': 20, 'description': 'Reads shorter than this after trimming are dropped.'}, 'qualityOffset': {'enum': [33, 64], 'type': 'integer', 'default': 33, 'description': 'ASCII offset of the FASTQ quality string. 33 for anything modern, 64 for pre-1.8 Illumina.'}, 'qualityThreshold': {'type': 'integer', 'default': 20, 'description': "3' quality-trim threshold (Phred score)."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'limit': {'type': 'integer', 'default': 100, 'maximum': 5000, 'minimum': 1, 'description': 'How many ORFs to return, longest first. `count` always reports every ORF found and `truncated` says whether the list was cut.'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}, 'minAaLength': {'type': 'integer', 'default': 30, 'description': 'Minimum protein length (aa) to report.'}, 'requireStop': {'type': 'boolean', 'default': False, 'description': 'Only report ORFs terminated by a stop codon.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'width': {'type': 'integer', 'default': 60, 'description': 'Line-wrap width; 0 = single line.'}, 'convert': {'enum': ['none', 'toRna', 'toDna'], 'type': 'string', 'default': 'none', 'description': 'DNA→RNA (T→U) or RNA→DNA (U→T).'}, 'reverse': {'type': 'boolean', 'default': False, 'description': 'Reverse the sequence (no complement).'}, 'caseMode': {'enum': ['keep', 'upper', 'lower'], 'type': 'string', 'default': 'keep'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}, 'stripNonLetters': {'type': 'boolean', 'default': True, 'description': 'Remove digits, spaces and gaps (keep letters only).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['genes'], 'properties': {'genes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Query gene symbols (human, e.g. "TP53"). Case-insensitive. Capped at 5000.'}, 'background': {'type': 'array', 'items': {'type': 'string'}, 'description': "Custom background/universe gene symbols. If omitted, defaults to every gene present in the bundled GO+Reactome dataset (the 'only annotated genes' convention, as used by g:Profiler) rather than the whole genome."}, 'collections': {'type': 'array', 'items': {'enum': ['GO:BP', 'GO:MF', 'GO:CC', 'Reactome'], 'type': 'string'}, 'default': ['GO:BP', 'GO:MF', 'GO:CC', 'Reactome'], 'description': 'Which term collections to test. Defaults to all four.'}, 'maxTermSize': {'type': 'integer', 'default': 500, 'description': "Skip terms/pathways with more than this many background genes (matches clusterProfiler's default)."}, 'minTermSize': {'type': 'integer', 'default': 3, 'description': 'Skip terms/pathways with fewer than this many background genes.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['ladder', 'ladderDistances'], 'properties': {'ladder': {'type': 'string', 'description': 'Which ladder is in the marked lane. One of: 1 kb, GeneRuler 1 kb, 1 kb Plus, 100 bp.'}, 'bandDistances': {'type': 'array', 'items': {'type': 'number'}, 'description': 'How far each band you want a size for ran, in the same unit from the same reference line. May be empty: the fit and its per-rung residuals are an answer on their own, and are how you find out the ladder was marked correctly before reading anything off it.'}, 'ladderDistances': {'type': 'array', 'items': {'type': 'number'}, 'description': "How far each visible ladder band ran, in any consistent unit, measured from the same reference line (the well) as the query bands. Order does not matter — they are sorted and matched to the ladder's sizes largest-first, since a larger fragment runs less far. At least 3: two points fit a line exactly, so they cannot show whether the ladder was marked correctly."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['gene'], 'properties': {'gene': {'type': 'string', 'description': 'A human gene symbol ("TP53") or Ensembl gene ID ("ENSG00000141510").'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['gene'], 'properties': {'gene': {'type': 'string', 'description': 'A human gene symbol ("TP53") or Ensembl gene ID ("ENSG00000141510").'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['gene'], 'properties': {'gene': {'type': 'string', 'description': 'A human gene symbol ("TP53") or Ensembl gene ID ("ENSG00000141510").'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['count'], 'properties': {'count': {'type': 'integer', 'maximum': 40, 'minimum': 2, 'description': 'How many junctions the assembly has, INCLUDING any given in `fixed`.'}, 'fixed': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Overhangs that must appear — typically the ones the destination vector already commits you to. Scored like any other member; simply not swappable.'}, 'dataset': {'enum': ['generic-t4-37c-1h', 'bsai-hfv2'], 'type': 'string', 'default': 'generic-t4-37c-1h', 'description': 'Which real ligation dataset to optimize against.'}, 'forbidden': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Overhangs the design may not use, whatever they score.'}, 'junctions': {'type': 'array', 'items': {'type': 'object'}, 'description': 'One entry per junction still to be chosen, as {sequence, position, slide}: the construct sequence, the 1-based first base of the preferred overhang, and how many bases either side the junction may move. Use this instead of a free design when the junctions are real places in real DNA — the candidates then come from bases that actually exist. Length must equal count minus fixed.'}, 'minCorrectSignal': {'type': 'number', 'description': "Reject any overhang whose own correct-join signal is below this. Defaults to the chosen dataset's MEDIAN diagonal (2,694 for generic T4, 520 for BsaI-HFv2 — they differ five-fold, which is why this is derived rather than fixed). Set 0 to allow every overhang."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['overhangs'], 'properties': {'dataset': {'enum': ['generic-t4-37c-1h', 'bsai-hfv2'], 'type': 'string', 'default': 'generic-t4-37c-1h', 'description': 'Which real ligation dataset to score against — generic T4 ligase, or an enzyme-specific one-pot dataset if that matches your actual digestion enzyme.'}, 'overhangs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The candidate 4-base overhangs for one assembly (e.g. ["GGAG","TACT","AATG"]). At least 2, no duplicates.'}, 'riskThreshold': {'type': 'number', 'default': 0.05, 'description': "Flag a pair as risky when the cross-reaction is at least this fraction of that pair's own total signal."}, 'compareToNamedSet': {'enum': ['pryor-2020-plant-11', 'pryor-2020-20set', 'cidar-moclo'], 'type': 'string', 'description': 'Also score this published reference set (see namedSetsAvailable in the output) alongside your candidate set, for comparison.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['parts'], 'properties': {'parts': {'type': 'array', 'items': {'type': 'object'}, 'maxItems': 24, 'minItems': 2, 'description': 'The part plasmids: [{ name, sequence, circular }]. Each needs two Type IIS sites facing INWARDS at the part. `circular` defaults to true, which is what a level-0 part plasmid is. 2-24 parts, each at most 30,000 bp and 200,000 bp in total.'}, 'enzyme': {'enum': ['BsaI', 'BsmBI', 'BbsI', 'SapI'], 'type': 'string', 'default': 'BsaI', 'description': "Type IIS enzyme (BsaI, BsmBI, BbsI, SapI). NEB's variant names (BsaI-HFv2, BbsI-HF, BsmBI) fold to the parent enzyme; any other name is rejected rather than substituted, since site, spacer and overhang length are all enzyme-specific."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['variant'], 'properties': {'variant': {'type': 'string', 'description': 'A full HGVS description: a "c." on a gene symbol or transcript ("NM_000546.6:c.215C>G", "TP53:c.215C>G"), a "g." position on a chromosome or RefSeqGene ("NC_000017.11:g.7676154G>C", "NG_017013.2:g.16397C>G"), or a "c." with its transcript in parentheses ("NC_000017.11(NM_000546.6):c.215C>G"). Substitution (">"), deletion ("del"), duplication ("dup"), insertion ("ins"), delins, and inversion ("inv") are supported.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequences'], 'properties': {'sequences': {'type': 'string', 'description': 'Aligned FASTA (gaps as "-"), or an array of {id, sequence}. All rows must be the same length. Max 200 sequences.'}, 'caseSensitive': {'type': 'boolean', 'default': False, 'description': 'Treat upper and lower case as different residues. Off by default — soft-masking is not a mismatch.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['ids', 'from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Target id type. Supported single hops: Gene_Name/Ensembl/GeneID/RefSeq_Protein -> "UniProtKB-Swiss-Prot" (the only direct target for these), or "UniProtKB_AC-ID" -> Ensembl/GeneID/RefSeq_Protein/Gene_Name. Any other pair is rejected — chain two of these hops instead.'}, 'ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The ids to map, up to 100000 (e.g. gene symbols, UniProt accessions, Ensembl gene IDs, Entrez GeneIDs, or RefSeq protein accessions, depending on "from").'}, 'from': {'type': 'string', 'description': 'Source id type: "Gene_Name", "Ensembl", "GeneID", "RefSeq_Protein", or "UniProtKB_AC-ID". UniProt\'s mapping graph is hub-and-spoke — see the "to" note.'}, 'taxId': {'type': 'string', 'description': 'NCBI taxonomy id to disambiguate a gene symbol (only used when from="Gene_Name"). Defaults to human (9606) if omitted.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['template'], 'properties': {'circular': {'type': 'boolean', 'default': False, 'description': 'Treat the template as circular (plasmid).'}, 'template': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}, 'forwardPrimer': {'type': 'string', 'residues': 'nt', 'description': "Primer 1, 5'→3'."}, 'maxMismatches': {'type': 'integer', 'default': 0, 'maximum': 10, 'minimum': 0, 'description': 'Mismatches tolerated per primer (0–10).'}, 'reversePrimer': {'type': 'string', 'residues': 'nt', 'description': "Primer 2, 5'→3' (order does not matter). Optional: one primer alone is accepted and reports the products it makes on its own — none, unless the template carries inverted sites it can prime from both ends."}, 'maxProductLength': {'type': 'integer', 'default': 50000, 'maximum': 500000, 'minimum': 1, 'description': 'Ignore predicted products longer than this (bp). A SEARCH WINDOW, not a claim about what amplifies: whole-plasmid inverse PCR — the reaction a q5-style site_directed_mutagenesis design is run as — makes one product the size of the plasmid, so raise this for a construct over 50 kb. `suppressedByLength` in the response counts what the window discarded.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['target', 'snpPosition', 'alleleA', 'alleleB'], 'properties': {'target': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}, 'alleleA': {'type': 'string', 'residues': 'nt', 'description': 'First allele (single base) — gets the FAM tail.'}, 'alleleB': {'type': 'string', 'residues': 'nt', 'description': 'Second allele (single base) — gets the HEX tail.'}, 'maxAmplicon': {'type': 'integer', 'default': 150, 'description': 'Maximum amplicon length for the common reverse primer.'}, 'minAmplicon': {'type': 'integer', 'default': 60, 'description': 'Minimum amplicon length for the common reverse primer.'}, 'snpPosition': {'type': 'integer', 'minimum': 18, 'description': '1-based position of the SNP on the forward strand. Must be 18 or greater: the allele-specific primers end on the SNP, so they need at least 17 bp of upstream template to build a core from.'}, 'targetCoreTm': {'type': 'number', 'default': 56, 'description': 'Target Tm (°C) for the allele-specific primer core (before the universal tail).'}, 'addSecondaryMismatch': {'type': 'boolean', 'default': True, 'description': "Engineer the internal ARMS destabilizing mismatch near the 3' end."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['vectorLengthBp', 'vectorNgPerUl'], 'properties': {'inserts': {'type': 'array', 'items': {'type': 'object', 'required': ['lengthBp', 'ngPerUl'], 'properties': {'label': {'type': 'string'}, 'ngPerUl': {'type': 'number'}, 'lengthBp': {'type': 'integer'}, 'equivalents': {'type': 'number', 'default': 1}}}, 'description': 'Multi-fragment assembly: one entry per insert, each with its own length, stock and molar equivalents. Overrides insertLengthBp/insertNgPerUl/molarRatio when present.'}, 'vectorNg': {'type': 'number', 'default': 50, 'description': 'How much backbone to put in the reaction, ng. This is the quantity you fix; every insert mass follows from the ratio.'}, 'molarRatio': {'type': 'number', 'default': 3, 'description': 'Molar equivalents of insert per vector. 3 is the usual starting point for a sticky-end ligation; 1-2 is common for Gibson and Golden Gate.'}, 'insertNgPerUl': {'type': 'number', 'description': 'Insert stock concentration, ng/µL.'}, 'vectorNgPerUl': {'type': 'number', 'description': 'Backbone stock concentration, ng/µL.'}, 'insertLengthBp': {'type': 'integer', 'description': 'Insert length in bp. Use `inserts` instead for a multi-fragment assembly.'}, 'vectorLengthBp': {'type': 'integer', 'description': 'Backbone length in bp.'}, 'vectorSequence': {'type': 'string', 'residues': 'nt', 'description': 'Optional backbone sequence — gives an exact molar mass from base composition instead of the 650 g/mol/bp average.'}, 'reactionVolumeUl': {'type': 'number', 'default': 20, 'description': 'Total reaction volume, µL.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'mgMM': {'type': 'number', 'default': 1.5, 'description': 'Divalent cation [Mg2+] (mM).'}, 'naMM': {'type': 'number', 'default': 50, 'description': 'Monovalent cation [Na+]/[K+] (mM).'}, 'dntpMM': {'type': 'number', 'default': 0.2, 'description': 'Total [dNTP] (mM), chelates Mg2+.'}, 'oligoNM': {'type': 'number', 'default': 250, 'description': 'Total strand concentration (nM).'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}, 'targetTm': {'type': 'number', 'description': 'Optional target Tm (°C). When given, the response includes a pass/fail gate.'}, 'tmTolerance': {'type': 'number', 'default': 2, 'description': 'Allowed +/- window (°C) around targetTm for the gate.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence', 'motif'], 'properties': {'limit': {'type': 'integer', 'default': 500, 'maximum': 20000, 'minimum': 1, 'description': 'How many matches to return. `count` always reports every hit found and `truncated` says whether the list was cut.'}, 'motif': {'type': 'string', 'residues': 'nt', 'description': 'Query motif; IUPAC ambiguity codes (R Y S W K M B D H V N) allowed.'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}, 'maxMismatches': {'type': 'integer', 'default': 0, 'description': 'Maximum allowed mismatches per match.'}, 'searchReverseStrand': {'type': 'boolean', 'default': True, 'description': 'Also search the reverse strand.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'residues': 'any', 'description': 'Two or more sequences in multi-FASTA format (>name / sequence), nucleotide or protein. Up to 25 are aligned.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['targets'], 'properties': {'targets': {'type': 'array', 'items': {'type': 'object', 'required': ['template'], 'properties': {'label': {'type': 'string', 'description': 'Name for this target, used throughout the result.'}, 'template': {'type': 'string', 'description': 'Template sequence, raw or FASTA.'}, 'targetEnd': {'type': 'number', 'description': '1-based inclusive end of that region.'}, 'ampliconMax': {'type': 'number', 'description': 'Largest product for this target.'}, 'ampliconMin': {'type': 'number', 'description': 'Smallest product for THIS target. Giving each target its own size band is how a panel is made readable — leaving them all on one range makes comigration the dominant conflict.'}, 'targetStart': {'type': 'number', 'description': '1-based start of the region the product must span.'}}}, 'description': '2-8 targets to amplify in one reaction.'}, 'ampliconMax': {'type': 'number', 'description': 'Panel-wide default product size ceiling.'}, 'ampliconMin': {'type': 'number', 'description': 'Panel-wide default product size floor, for targets that set none.'}, 'maxTmSpread': {'type': 'number', 'default': 3, 'description': 'Widest Tm difference tolerated across every primer in the panel, in °C — one annealing temperature has to serve all of them.'}, 'agarosePercent': {'type': 'number', 'description': 'Gel the panel will be read on. Omit and the percentage whose resolving window contains the amplicons is chosen and reported — a panel of small products judged on a 1% gel reads as all-comigrating, which is about the gel rather than the primers.'}, 'dimerThresholdDG': {'type': 'number', 'default': -6, 'description': "ΔG (kcal/mol) at or below which a cross-dimer involving a primer's 3' END is a conflict. That end is where extension starts, so it matters at a weaker ΔG than an internal pairing."}, 'candidatesPerTarget': {'type': 'number', 'default': 4, 'description': 'Candidate pairs considered per target (max 6). More finds a panel where fewer cannot, at the cost of a larger search.'}, 'internalDimerThresholdDG': {'type': 'number', 'default': -9, 'description': 'The looser bar for a cross-dimer that pairs internally and only sequesters primer.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['constraint'], 'properties': {'lmax': {'type': 'integer', 'default': 15, 'maximum': 40, 'minimum': 8, 'description': 'Longest stretch any two parts may share, in bp (default 15).'}, 'seed': {'type': 'integer', 'default': 1, 'description': 'Seeds the search. Change it for a different toolbox from the same constraints; keep it to reproduce one.'}, 'count': {'type': 'integer', 'default': 20, 'maximum': 500, 'minimum': 1, 'description': 'How many parts to build (max 500).'}, 'gcMax': {'type': 'number', 'default': 100, 'maximum': 100, 'minimum': 0, 'description': 'Highest GC% a part may have.'}, 'gcMin': {'type': 'number', 'default': 0, 'maximum': 100, 'minimum': 0, 'description': 'Lowest GC% a part may have.'}, 'exclude': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Motifs no part may contain, checked on both strands: restriction sites you clone with, a terminator you do not want. Literal ACGT only — an IUPAC code is refused rather than silently half-matched.'}, 'background': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Sequences the new parts must also avoid sharing with — the host genome region, the vector, or a toolbox you already own.'}, 'constraint': {'type': 'string', 'description': 'The IUPAC template every part must match, e.g. "NNNNNNTTGACANNNNNNNNNNNNNNNNNTATAATNNNNNN" for a sigma-70 promoter library. N is any base; fixed letters are held. Max 1,000 nt.'}, 'bothStrands': {'type': 'boolean', 'default': True, 'description': 'Treat a stretch and its reverse complement as the same stretch.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['parts'], 'properties': {'lmax': {'type': 'integer', 'default': 15, 'maximum': 40, 'minimum': 8, 'description': 'Longest stretch two parts may share, in bp (default 15). Two parts conflict when they share MORE than this. Below 8 bp every pair of sequences matches by chance.'}, 'parts': {'type': 'string', 'description': "The toolbox as (multi-)FASTA — each record's header becomes the part's name. Max 4,000 parts, 5,000 bp each."}, 'strategy': {'enum': ['2apx', 'greedy'], 'type': 'string', 'default': '2apx', 'description': "Which approximation picks the subset. Maximum independent set is NP-hard, so neither is guaranteed largest: '2apx' is the standard 2-approximation, 'greedy' repeatedly drops the most-conflicting part. Try both — they disagree on real toolboxes."}, 'bothStrands': {'type': 'boolean', 'default': True, 'description': 'Count a shared stretch even when one part carries it reverse-complemented. Recombination and synthesis both see both strands, so leaving this on is almost always right.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['od600'], 'properties': {'od600': {'type': 'number', 'default': 0.5, 'description': 'The reading off the spectrophotometer.'}, 'organism': {'enum': ['ecoli', 'scerevisiae', 'ppastoris'], 'type': 'string', 'default': 'ecoli', 'description': 'Supplies the cells-per-OD factor. Ignored when factorPerOd is given.'}, 'targetOd': {'type': 'number', 'default': 0, 'description': 'Optional: plan a back-dilution to this OD. 0 = skip.'}, 'volumeMl': {'type': 'number', 'default': 0, 'description': 'Culture volume, for a total cell count. 0 = not given.'}, 'factorPerOd': {'type': 'number', 'description': 'Your own calibration: cells/mL at OD600 = 1.0 in a 1 cm path. Overrides organism.'}, 'pathLengthCm': {'type': 'number', 'default': 1, 'description': 'Optical path of the reading. A cuvette is 1 cm; 200 µL in a 96-well flat plate is about 0.58 cm.'}, 'dilutionFactor': {'type': 'number', 'default': 1, 'description': 'Dilution done before reading (2 means the sample was diluted 1:2).'}, 'targetVolumeMl': {'type': 'number', 'default': 50, 'description': 'Final volume for the back-dilution plan.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'mgMM': {'type': 'number', 'default': 1.5, 'description': 'Divalent cation [Mg2+] (mM).'}, 'naMM': {'type': 'number', 'default': 50, 'description': 'Monovalent cation [Na+]/[K+] (mM).'}, 'dntpMM': {'type': 'number', 'default': 0.2, 'description': 'Total [dNTP] (mM), chelates Mg2+.'}, 'oligoNM': {'type': 'number', 'default': 250, 'description': 'Total strand concentration (nM).'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['a'], 'properties': {'a': {'type': 'string', 'maxLength': 800, 'description': "First oligo, 5'→3'. Max 200 nt."}, 'b': {'type': 'string', 'maxLength': 800, 'description': "Second oligo. Omit to analyze hairpin structure in 'a' alone; pass the same sequence as 'a' for a homodimer."}, 'alphabet': {'enum': ['dna', 'rna'], 'type': 'string', 'default': 'dna', 'description': 'Which measured parameter set to use. This is not cosmetic — the same 20-mer can differ by several kcal/mol between them.'}, 'partition': {'type': 'boolean', 'default': False, 'description': 'Also compute the ensemble free energy over all structures, not just the MFE one. Costs a second pass.'}, 'temperature': {'type': 'number', 'default': 37, 'maximum': 120, 'minimum': -20, 'description': '°C. Primer dimers matter at the annealing temperature, not at 37 °C.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': [], 'properties': {'mgMM': {'type': 'number', 'default': 1.5, 'description': 'Divalent cation [Mg2+] (mM).'}, 'naMM': {'type': 'number', 'default': 50, 'description': 'Monovalent cation [Na+]/[K+] (mM).'}, 'fasta': {'type': 'string', 'residues': 'nt', 'description': 'The pool as a FASTA paste (headers become the names), or as one sequence per line — which is what comes out of a spreadsheet column. An alternative to `oligos`.'}, 'dntpMM': {'type': 'number', 'default': 0.2, 'description': 'Total [dNTP] (mM), chelates Mg2+.'}, 'oligos': {'type': 'array', 'items': {'type': 'object', 'required': ['sequence'], 'properties': {'name': {'type': 'string', 'description': 'Label used throughout the result. Defaults to oligo_1, oligo_2, …'}, 'sequence': {'type': 'string', 'description': "The oligo, 5'→3'."}}}, 'description': 'The pool, as objects with a name and a sequence. Up to 384. Use this or `fasta`, not both.'}, 'oligoNM': {'type': 'number', 'default': 250, 'description': 'Total strand concentration (nM).'}, 'maxConflicts': {'type': 'integer', 'default': 200, 'description': 'Conflict rows returned, most stable first. The COUNTS are always complete.'}, 'internalThresholdDG': {'type': 'number', 'default': -9, 'description': "The looser bar for a pairing that only sequesters primer internally, away from either 3' end."}, 'threePrimeThresholdDG': {'type': 'number', 'default': -6, 'description': "ΔG (kcal/mol) at or below which a pairing that involves a 3' END counts as a conflict."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['genes'], 'properties': {'name': {'type': 'string', 'description': 'LOCUS name for the GenBank output.'}, 'genes': {'type': 'array', 'items': {'type': 'object', 'required': ['cds'], 'properties': {'cds': {'type': 'string', 'description': 'The coding sequence, as DNA.'}, 'rbs': {'type': 'string', 'description': 'Ribosome binding site placed in front of this gene. Omit for a consensus default, or pass "" for none.'}, 'name': {'type': 'string', 'description': 'Label for the CDS feature.'}}}, 'description': 'The genes, in order (max 12).'}, 'spacer': {'type': 'string', 'description': "Sequence inserted between one CDS and the next gene's RBS."}, 'promoter': {'type': 'string', 'description': "Promoter placed at the 5' end."}, 'terminator': {'type': 'string', 'description': "Terminator placed at the 3' end."}, 'optimiseFor': {'enum': ['ecoli', 'human', 'yeast', 'cho', 'pichia', 'insect', 'arabidopsis', 'zebrafish'], 'type': 'string', 'description': "Recode every CDS with this host's most-frequent codons. The rewrite is checked to translate back to the same protein, and skipped for that gene if it does not. This is a determinate recoding, NOT a yield prediction — published codon-optimisation algorithms are close to a coin flip on whether they raise or lower real expression."}, 'includeGenbank': {'type': 'boolean', 'default': True, 'description': 'Return the annotated GenBank file.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'cdsEnd': {'type': 'integer', 'description': '1-based end of that coding sequence.'}, 'cdsStart': {'type': 'integer', 'description': "1-based start of a coding sequence. Given with cdsEnd, out-of-frame start codons inside it are reported — without them that check is skipped, because 'out of frame' has no meaning until a frame is declared."}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'The construct, raw, FASTA or GenBank. Max 100,000 bp.'}, 'maxPromoterMismatches': {'type': 'integer', 'default': 1, 'maximum': 4, 'minimum': 0, 'description': 'Total mismatches allowed across both consensus boxes (default 1). 0 finds only perfect consensus, which real promoters rarely are; above 2 the hit rate on random DNA climbs fast.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['symbols', 'targetSpecies'], 'properties': {'type': {'enum': ['orthologues', 'paralogues', 'all'], 'type': 'string', 'default': 'orthologues', 'description': 'Homology type to return. Defaults to orthologues.'}, 'symbols': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Gene symbols to look up, up to 50 (e.g. ["TP53", "BRCA1"]).'}, 'sourceSpecies': {'type': 'string', 'default': 'human', 'description': 'Species the symbols belong to: a common name (human, mouse, rat, zebrafish, fruit_fly, worm, yeast, cow, pig, dog, frog, macaque, chimp) or a scientific name such as "rattus_norvegicus". Defaults to "human".'}, 'targetSpecies': {'type': 'string', 'description': 'Species to find homologs in: a common name (mouse, rat, zebrafish, fruit_fly, worm, yeast, …) or a scientific name such as "danio_rerio".'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['readBases', 'readChannels', 'candidates'], 'properties': {'readBases': {'type': 'string', 'residues': 'nt', 'description': 'Base calls of the read, e.g. from parse_sanger_trace.'}, 'candidates': {'type': 'array', 'items': {'type': 'object'}, 'description': "The molecules this reaction could have produced, as { id, label, sequence, circular? }. Between 2 and 24; assembly_outcomes' intended plus alternatives is the intended source."}, 'readChannels': {'type': 'array', 'items': {'type': 'array', 'items': {'type': 'number'}}, 'description': "Per-base [A, C, G, T] intensities, one row per called base, read at that base's peak location."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['seqA', 'seqB'], 'properties': {'gap': {'type': 'number', 'default': -2, 'description': 'Affine gap EXTEND penalty, charged per gap position (including the first).'}, 'mode': {'enum': ['global', 'local', 'semiglobal'], 'type': 'string', 'default': 'global', 'description': '"global" penalizes end gaps in both sequences; "local" returns the best-scoring subalignment; "semiglobal" is a fitting alignment — seqB is consumed end to end while seqA\'s terminal overhangs are free and are not emitted, so a partial read placed on a longer reference is not smeared across it.'}, 'seqA': {'type': 'string', 'residues': 'any', 'description': 'First sequence (raw or FASTA; nucleotide or protein).'}, 'seqB': {'type': 'string', 'residues': 'any', 'description': 'Second sequence (raw or FASTA; nucleotide or protein).'}, 'match': {'type': 'number', 'default': 1, 'description': 'Match score.'}, 'gapOpen': {'type': 'number', 'description': "Extra one-off penalty charged on top of gap for a gap's first position. Defaults to 1.5 * gap, so a k-base gap costs gap * (k + 1.5) and one contiguous k-base indel is cheaper than k scattered 1-base gaps. Pass 0 for a purely linear penalty."}, 'mismatch': {'type': 'number', 'default': -1, 'description': 'Mismatch penalty.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'A GenBank flat file (LOCUS … FEATURES … ORIGIN … //).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'GFF3 text. Up to 200,000 feature lines.'}, 'limit': {'type': 'integer', 'default': 500, 'description': 'Most features to return in the table (1-5000).'}, 'seqid': {'type': 'string', 'description': "Which sequence's features to return, when the file covers several. Defaults to the first."}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'The DNA these annotations describe, when the file has no ##FASTA section. Enables the GenBank output.'}, 'asGenbank': {'type': 'boolean', 'default': True, 'description': 'Also return the record as a GenBank flat file, when a sequence is available.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['fileBase64'], 'properties': {'fileName': {'type': 'string', 'description': 'Optional original file name (echoed back).'}, 'fileBase64': {'type': 'string', 'description': 'The binary ABIF (.ab1 / .abi) trace file, base64-encoded.'}, 'includeTraces': {'type': 'boolean', 'default': False, 'description': "Include the four raw dye-channel arrays and peakLocations. They are 93% of the response — a 900-base read is 122 kB with them and 8 kB without (measured) — and they are only useful for DRAWING the chromatogram. Everything you would reason about (base calls, quality, the run's labels) is returned either way, so leave this off unless you are rendering."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['fileBase64'], 'properties': {'fileName': {'type': 'string', 'description': 'Optional original file name (echoed back).'}, 'fileBase64': {'type': 'string', 'maxLength': 43000000, 'description': 'The binary SnapGene .dna file, base64-encoded. A `data:...;base64,` prefix is accepted.'}, 'featureLimit': {'type': 'integer', 'default': 2000, 'maximum': 2000, 'minimum': 1, 'description': 'Cap on features returned (max 2000). featureCount always reports the true total and `truncated` says whether the list was cut.'}, 'includeSequence': {'type': 'boolean', 'default': True, 'description': 'Include the full sequence. Turn it off to ask what is IN a construct without moving the bases: a 250 kb BAC is 244 kB of the response and length/topology/features answer most questions without it.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'properties': {'kinds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Restrict to these part kinds (promoter, terminator, origin, RBS, polyA, selection marker, affinity tag, reporter, linker/MCS, …). An unknown kind is an error.'}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum hits to return. Capped at 100; asking for more is an error, not a silent truncation.'}, 'query': {'type': 'string', 'description': 'Substring of the part name (min 2 characters), e.g. "T7", "AmpR", "SV40 polyA".'}, 'maxLength': {'type': 'integer', 'minimum': 0, 'description': 'Largest part length in bp.'}, 'minLength': {'type': 'integer', 'minimum': 0, 'description': 'Smallest part length in bp.'}, 'includeSequence': {'type': 'boolean', 'default': True, 'description': "Include each part's bases (5'→3' on the part's own strand)."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'circular': {'type': 'boolean', 'default': True, 'description': 'Treat the sequence as a circular plasmid (vs. linear).'}, 'sequence': {'type': 'string', 'description': "Nucleotide sequence (raw or FASTA). A, C, G, T, N only — other IUPAC codes are rejected rather than silently dropped, because pLannotate's search engines discard them and every coordinate after would shift. Max 150,000 bp."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'circular': {'type': 'boolean', 'default': True, 'description': 'Treat the query as a circular molecule (most plasmids are).'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}, 'minRepeatLength': {'type': 'integer', 'default': 30, 'description': 'Shortest direct repeat (bp) to raise as a recombination hazard. Below ~20 bp chance matches multiply and recombination has little to work with.'}, 'goldenGateEnzymes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Type IIS enzymes you intend to assemble with (e.g. ["BsaI"]). Internal sites are ALWAYS reported in typeIISSites — random sequence carries them and so does nearly every real plasmid — but they only become a hazard for an enzyme named here, so the hazard list stays worth reading.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'topN': {'type': 'integer', 'default': 5, 'description': 'How many top-ranked backbone candidates to report.'}, 'circular': {'type': 'boolean', 'default': True, 'description': 'Treat the query as a circular molecule (most plasmids are).'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'topN': {'type': 'integer', 'default': 5, 'description': 'How many top-ranked backbone candidates to report.'}, 'circular': {'type': 'boolean', 'default': True, 'description': 'Treat the query as a circular molecule (most plasmids are).'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['target', 'editStart', 'editEnd'], 'properties': {'target': {'type': 'string', 'residues': 'nt', 'description': 'Forward-strand target DNA (raw or FASTA), with flanking sequence around the intended edit.'}, 'editEnd': {'type': 'integer', 'description': '1-based inclusive end of the region being changed. For a pure insertion, set editEnd = editStart - 1.'}, 'editStart': {'type': 'integer', 'description': '1-based inclusive start of the region being changed.'}, 'pbsLength': {'type': 'integer', 'description': 'Optional preferred PBS length to highlight; a full 8-17 nt sweep is always returned.'}, 'frameStart': {'type': 'integer', 'description': 'Optional 1-based CDS reading-frame start, used only to annotate whether a PAM-blocking mutation would be silent.'}, 'insertedSeq': {'type': 'string', 'default': '', 'residues': 'nt', 'description': 'Replacement bases (forward strand). Empty string means a deletion.'}, 'rttHomology': {'type': 'integer', 'default': 13, 'description': "Homology length (nt) 3' of the edit that the RTT should include (typically 10-16)."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'topN': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'How many top-ranked pegRNAs to return, out of the hundreds enumerated. Max 50.'}, 'cellType': {'enum': ['HEK', 'K562'], 'type': 'string', 'default': 'HEK', 'description': 'Which trained context to RANK by. Both scores are always returned; this decides the ordering. There is no generic-mammalian option because the model has no such training data.'}, 'sequence': {'type': 'string', 'description': 'Target with the edit in brackets: context, then (original/edited), then context. Roughly 100+ bp each side — the model reads that context. Keep unchanged flanking bases OUTSIDE the brackets: T(a/g)C, not (TAC/TGC). Insertions and deletions leave one side empty, e.g. (/AGG) or (AGG/).'}, 'use5Folds': {'type': 'boolean', 'default': False, 'description': 'Average all five trained folds instead of the first. Modestly steadier scores for five times the compute, and it is charged five times as much.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['target', 'replaceStart', 'replaceEnd', 'newSequence'], 'properties': {'target': {'type': 'string', 'residues': 'nt', 'description': 'Forward-strand target DNA (raw or FASTA), with flanking sequence on both sides of the replacement window.'}, 'pbsLength': {'type': 'integer', 'description': 'Optional preferred PBS length to highlight; a full 8-17 nt sweep is always returned.'}, 'replaceEnd': {'type': 'integer', 'description': '1-based inclusive end of the region being replaced/deleted. For a pure insertion, set replaceEnd = replaceStart - 1.'}, 'newSequence': {'type': 'string', 'residues': 'nt', 'description': 'New sequence (forward strand) to install in place of [replaceStart, replaceEnd]. Needs >= 2 bp.'}, 'replaceStart': {'type': 'integer', 'description': '1-based inclusive start of the region being replaced/deleted.'}, 'overlapLength': {'type': 'integer', 'default': 15, 'description': "Length (bp) of the shared overlap built into both pegRNAs' 3' flaps where they meet and anneal."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['template'], 'properties': {'mgMM': {'type': 'number', 'default': 1.5, 'description': 'Divalent cation [Mg2+] (mM).'}, 'naMM': {'type': 'number', 'default': 50, 'description': 'Monovalent cation [Na+]/[K+] (mM).'}, 'gcMax': {'type': 'number', 'default': 60}, 'gcMin': {'type': 'number', 'default': 40}, 'tmMax': {'type': 'number', 'default': 63}, 'tmMin': {'type': 'number', 'default': 57}, 'tmOpt': {'type': 'number', 'default': 60}, 'dntpMM': {'type': 'number', 'default': 0.2, 'description': 'Total [dNTP] (mM), chelates Mg2+.'}, 'lenMax': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1}, 'lenMin': {'type': 'integer', 'default': 18}, 'lenOpt': {'type': 'integer', 'default': 20}, 'gcClamp': {'type': 'integer', 'description': "Consecutive G/C required at the very 3' end (Primer3's PRIMER_GC_CLAMP). Omitted or 0 means no requirement."}, 'oligoNM': {'type': 'number', 'default': 250, 'description': 'Total strand concentration (nM).'}, 'maxPolyX': {'type': 'integer', 'description': "Longest run of one base a primer may contain (Primer3's PRIMER_MAX_POLY_X). Omitted or 0 means no limit."}, 'template': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}, 'maxReturn': {'type': 'integer', 'default': 5, 'description': 'Number of best pairs to return.'}, 'targetEnd': {'type': 'integer', 'description': '1-based inclusive end of the target region (optional).'}, 'tmMaxDiff': {'type': 'number', 'default': 3, 'description': 'Max Tm difference within a pair (°C).'}, 'ampliconMax': {'type': 'integer', 'default': 1000}, 'ampliconMin': {'type': 'integer', 'default': 100}, 'targetStart': {'type': 'integer', 'description': '1-based inclusive start of a region the product must span (optional).'}, 'excludedRegions': {'type': 'array', 'items': {'type': 'object', 'required': ['start', 'end'], 'properties': {'end': {'type': 'integer'}, 'start': {'type': 'integer'}}}, 'description': 'Regions no primer may overlap, 1-based inclusive, as {start,end}. start > end is a region crossing the origin of a circular template.'}, 'minThreePrimeDG': {'type': 'number', 'description': "Floor on the NN ΔG37 (kcal/mol) of the five 3'-most bases; a more stable end than this is rejected. Deliberately not Primer3's max_end_stability, which is a different scale this model has not been calibrated against."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['template', 'primer'], 'properties': {'primer': {'type': 'string', 'description': "The primer, 5'->3'."}, 'circular': {'type': 'boolean', 'default': False, 'description': 'Wrap the window across the origin instead of clipping it.'}, 'template': {'type': 'string', 'description': 'The template the primer has to bind — the region of interest, a plasmid, or an amplicon.'}, 'windowNt': {'type': 'number', 'default': 120, 'maximum': 200, 'minimum': 40, 'description': 'Template to fold around each site, centred on the footprint. 40-200 nt.'}, 'annealingTemp': {'type': 'number', 'default': 60, 'maximum': 95, 'minimum': 20, 'description': 'The annealing temperature in Celsius. This is the whole reason the tool exists — structure at 37 C is not structure at 60 C, and the number changes the answer.'}, 'maxMismatches': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': "Mismatches allowed when locating the primer. Defaults to the binding scanner's own rate."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['forwardPrimer', 'reversePrimer'], 'properties': {'forwardPrimer': {'type': 'string', 'residues': 'nt', 'description': "Forward primer, 5'→3'."}, 'maxMismatches': {'type': 'integer', 'default': 1, 'maximum': 4, 'minimum': 0, 'description': 'Mismatches tolerated per primer against a reference genome. Capped at 4 — past that a primer would not extend anyway. No primer length is refused for raising this: the pigeonhole seed just gets shorter and less selective, so more candidate sites are verified and the call takes longer (an 18-mer over the bundled genomes runs in ~0.1 s at 0 and ~1.5 s at 4). A short primer at a high setting can still exceed the binding-site pairing limit and come back "unsupported" — a 13-mer at 4 binds too many places to pair up, where an 18-mer screens fine — and either primer under 13 nt is not screened at all (ambiguousSeed: true, no amplicons).'}, 'reversePrimer': {'type': 'string', 'residues': 'nt', 'description': "Reverse primer, 5'→3'."}, 'intendedTemplate': {'type': 'string', 'residues': 'nt', 'description': "The template these primers are meant to amplify. Only their annealing footprints are read from it, so an amplicon, a plasmid or a cassette is always enough (at most 1,000,000 bp). Passing it is what makes closestCompetitorMargin true for a primer carrying a 5' tail: a tail is non-templated by definition, so nothing about the oligo says where it ends, and without a template the screen has to assume the whole oligo anneals — which credits the intended reaction with a duplex the tail cannot form ANYWHERE and inflates every margin by that tail's own free energy. Searched on both strands as given; a primer that cannot be found on it is an error rather than a silent fall back to the whole oligo."}, 'maxProductLength': {'type': 'integer', 'default': 5000, 'minimum': 1, 'description': 'Ignore candidate off-target products longer than this (bp) — a search-window cap, not a biological claim.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['librarySize'], 'properties': {'lmax': {'type': 'integer', 'default': 12, 'maximum': 40, 'minimum': 8, 'description': 'Longest stretch any two promoters in the library may share, in bp (default 12). This is the property that stops the library recombining with itself.'}, 'seed': {'type': 'integer', 'default': 1, 'description': 'Seeds variant construction; same seed, same variants.'}, 'gcMax': {'type': 'number', 'default': 100, 'maximum': 100, 'minimum': 0, 'description': 'Highest GC% a variant may have.'}, 'gcMin': {'type': 'number', 'default': 0, 'maximum': 100, 'minimum': 0, 'description': 'Lowest GC% a variant may have.'}, 'exclude': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Motifs no variant may contain, both strands — the restriction sites you clone with. Literal ACGT only.'}, 'template': {'type': 'string', 'description': 'IUPAC template every variant must match. Defaults to a sigma-70 layout holding TTGACA and TATAAT with a 17 nt spacer and randomised flanks. Change it to target a different architecture — but a template that randomises the boxes will produce members that are not promoters.'}, 'targetMax': {'type': 'number', 'description': "Strongest rung, same units. Omit with targetMin to use the variants' own range."}, 'targetMin': {'type': 'number', 'description': "Weakest rung, in the model's arbitrary transcription-rate units. OMIT THIS and the range is taken from what the built variants actually score, which is usually right: the units have no absolute meaning, so a default would describe nothing. Set it only to match a promoter you measured yourself."}, 'librarySize': {'type': 'integer', 'maximum': 24, 'minimum': 2, 'description': 'How many promoters the ladder should have (2 to 24). Required: every other argument has a defensible default, so this is the one statement of intent, and without it an empty call would build and score a library nobody asked for.'}, 'candidatePool': {'type': 'integer', 'default': 24, 'maximum': 48, 'minimum': 4, 'description': 'How many variants to build and score before selecting the ladder. A larger pool fills more rungs and costs one longer scan, not more round trips.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'limit': {'type': 'number', 'default': 10, 'maximum': 100, 'minimum': 1, 'description': 'How many of the strongest promoters to return.'}, 'sequence': {'type': 'string', 'description': "DNA to scan, 80-10000 nt. A promoter region, a 5' UTR with its upstream context, or a whole cassette."}, 'bothStrands': {'type': 'boolean', 'default': True, 'description': 'Scan the reverse strand too. Leave on unless you know the orientation — cryptic antisense promoters are a common and easily missed cause of trouble.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'maxMass': {'type': 'number', 'description': 'Optional upper bound on neutral monoisotopic mass (Da).'}, 'minMass': {'type': 'number', 'description': 'Optional lower bound on neutral monoisotopic mass (Da).'}, 'protease': {'enum': ['trypsin', 'lysc', 'argc', 'chymotrypsin', 'gluc', 'aspn', 'cnbr'], 'type': 'string', 'default': 'trypsin', 'description': 'Protease or chemical cleavage agent.'}, 'sequence': {'type': 'string', 'residues': 'aa', 'description': 'Protein sequence (one-letter amino-acid codes; non-AA characters ignored).'}, 'maxPeptides': {'type': 'integer', 'default': 2000, 'description': 'Cap on the number of returned peptides.'}, 'missedCleavages': {'enum': [0, 1, 2], 'type': 'integer', 'default': 0, 'description': 'Allowed missed internal cleavages (0–2).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'appl': {'type': 'string', 'description': 'Restrict to one member database (e.g. "PfamA"); omit to run EBI\'s defaults across all of them.'}, 'goterms': {'type': 'boolean', 'default': True, 'description': 'Include GO-term cross-references.'}, 'sequence': {'type': 'string', 'description': 'Protein sequence, one-letter code (FASTA header, if any, is stripped).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'scale': {'enum': ['Kyte-Doolittle', 'Hopp-Woods', 'Eisenberg'], 'type': 'string', 'default': 'Kyte-Doolittle', 'description': 'Amino-acid scale. Kyte-Doolittle and Eisenberg are hydrophobicity; Hopp-Woods is hydrophilicity.'}, 'window': {'type': 'integer', 'default': 9, 'description': 'Sliding-window size (clamped to an odd number ≥ 1).'}, 'sequence': {'type': 'string', 'residues': 'aa', 'description': 'Protein sequence (one-letter amino-acid codes; non-AA characters ignored).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'sequence': {'type': 'string', 'residues': 'aa', 'description': 'Protein sequence (one-letter amino-acid codes; non-AA characters ignored).'}, 'chargeStep': {'type': 'number', 'default': 0.25, 'maximum': 14, 'minimum': 0.001, 'description': 'pH step along the net-charge titration curve, which always spans pH 0-14. Between 0.001 and 14.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sampleTarget', 'sampleReference', 'controlTarget', 'controlReference'], 'properties': {'sampleTarget': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Ct values for the gene of interest in the treated/test sample. Replicates as a list.'}, 'controlTarget': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Ct values for the gene of interest in the calibrator/control sample.'}, 'sampleReference': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Ct values for the reference (housekeeping) gene in the same sample.'}, 'controlReference': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Ct values for the reference gene in the control sample.'}, 'targetEfficiency': {'type': 'number', 'default': 2, 'description': 'Per-cycle amplification fold for the target amplicon. 2.0 = 100%. From a standard curve, E = 10^(-1/slope).'}, 'referenceEfficiency': {'type': 'number', 'default': 2, 'description': 'Per-cycle amplification fold for the reference amplicon. 2.0 = 100%.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['length'], 'properties': {'kind': {'enum': ['dna', 'rna', 'protein'], 'type': 'string', 'default': 'dna'}, 'length': {'type': 'integer', 'default': 100, 'description': 'Number of residues to generate.'}, 'gcContent': {'type': 'number', 'description': 'Target GC percentage 0..100 (dna/rna only); omit for uniform.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['cds'], 'properties': {'cds': {'type': 'string', 'description': "Coding sequence, raw or FASTA, starting at its start codon. Only the 5' end affects the prediction, so the first ~90 nt is enough. A, C, G, T/U only. Max 10,000 nt."}, 'limit': {'type': 'number', 'default': 10, 'description': 'How many ranked candidates to return. 1-60.'}, 'leader': {'type': 'string', 'description': "Optional 5' context upstream of the designed RBS — the transcribed leader from your promoter. Affects the standby-site term. Defaults to a 20 nt unstructured poly-A leader."}, 'currentUtr': {'type': 'string', 'description': "Optional: your existing 5' UTR (everything upstream of the start codon). Scored as a baseline so each candidate gets a fold-change against it."}, 'targetExpression': {'type': 'number', 'description': "Optional target rate on OSTIR's arbitrary scale. Candidates are then ranked by closeness to it (log-ratio) rather than by maximum strength. Only meaningful against a number produced by this same tool."}, 'antiShineDalgarno': {'type': 'string', 'description': "Optional anti-Shine-Dalgarno sequence (the 16S rRNA 3' end) to model a non-E. coli host. Omit to use OSTIR's own E. coli default."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['cds'], 'properties': {'cds': {'type': 'string', 'residues': 'nt', 'description': "The coding sequence, raw or FASTA, starting at its start codon. Only the 5' end affects the prediction, so the first ~90 nt is enough. Max 10,000 nt."}, 'leader': {'type': 'string', 'description': "Sequence upstream of the RBS (the 5' end of the transcript). OSTIR needs some 5' context for its standby-site term; a 20 nt A-rich leader is assumed when none is given, which is an assumption and not a measurement."}, 'targetMax': {'type': 'number', 'description': "Strongest rung, in the same arbitrary units. Omit with targetMin to use the candidates' own range."}, 'targetMin': {'type': 'number', 'description': "Weakest rung, in OSTIR's arbitrary units. OMIT THIS and the range is taken from what the candidates actually reach in your CDS context, which is usually what you want: the units have no absolute meaning, so a number carried over from a paper or a default describes nothing. Set it only when you are matching a value you measured yourself in the same context."}, 'librarySize': {'type': 'integer', 'default': 8, 'maximum': 24, 'minimum': 2, 'description': 'How many variants the ladder should have (default 8).'}, 'antiShineDalgarno': {'type': 'string', 'description': "Override the host's anti-Shine-Dalgarno sequence. Defaults to the E. coli one OSTIR is parameterised on."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'maxLoop': {'type': 'integer', 'default': 100, 'minimum': 3, 'description': 'Largest number of unpaired bases allowed between an arm and its target (default 100).'}, 'minStem': {'type': 'integer', 'default': 6, 'maximum': 40, 'minimum': 4, 'description': 'Shortest duplex to report, in bp (default 6). Below 4 bp every sequence pairs with everything; a stem that actually holds a site shut is usually 8 bp or more.'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': "The transcript: the 5' UTR plus at least the start of the CDS. DNA or RNA. Max 20,000 nt."}, 'startCodonAt': {'type': 'integer', 'description': "1-based position of the start codon to anchor the footprint on. Omit to use the first ATG/GTG/TTG — pass it when the transcript has several, which is the usual case for a real 5' UTR."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'end': {'type': 'number', 'description': 'Optional 1-based position; only consider start codons beginning at or before it.'}, 'start': {'type': 'number', 'description': 'Optional 1-based position; only consider start codons beginning at or after it.'}, 'sequence': {'type': 'string', 'description': "mRNA sequence, raw or FASTA — the 5' UTR plus at least the start of the CDS. DNA (T) and RNA (U) are both accepted and scored identically. A, C, G, T/U only. Max 10,000 nt."}, 'antiShineDalgarno': {'type': 'string', 'description': "Optional anti-Shine-Dalgarno sequence (the 16S rRNA 3' end) to model a non-E. coli host. Omit to use OSTIR's own E. coli default."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['candidates', 'primers'], 'properties': {'primers': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Sequencing primers to choose between, as { id, label, sequence }. Up to 32.'}, 'candidates': {'type': 'array', 'items': {'type': 'object'}, 'description': "The molecules this reaction could produce, as { id, label, sequence, circular? }. Between 2 and 24; assembly_outcomes' intended plus alternatives is the intended source."}, 'usableFrom': {'type': 'number', 'default': 30, 'description': "Bases after the primer's 3' end before the trace becomes readable (0-500). A difference inside this dead zone is not counted as a separation, because the trace cannot show it."}, 'usableLength': {'type': 'number', 'default': 700, 'description': 'Readable bases per reaction, counted from usableFrom (50-5000).'}, 'maxMismatches': {'type': 'number', 'description': "Mismatch budget passed to the priming scan. Defaults to primer-binding's own (~10% of the primer's length)."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'circular': {'type': 'boolean', 'default': True, 'description': 'Treat as a plasmid. A circular construct is searched across its own arbitrary start, so a repeat straddling position 1 is not missed, and each pair reports BOTH circles the recombination makes.'}, 'maxPairs': {'type': 'number', 'default': 60, 'description': 'Cap on reported pairs, most recombinogenic first. The pre-cap count is always reported as pairsFound.'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'The construct, raw or FASTA. Max 500,000 bp.'}, 'minRepeatLength': {'type': 'number', 'default': 20, 'description': 'Shortest repeat to report, in bp (default 20). Below about 20 bp homologous recombination has little to work with and chance matches multiply.'}, 'includeSequences': {'type': 'boolean', 'default': True, 'description': 'Return the full product sequences. Turn off for a coordinates-only summary over a large construct.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'enzymes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Enzyme names to scan; omit to scan the curated common-enzyme set. A name is resolved against the curated set, the Type IIS cutters and the generated REBASE table, case-, punctuation- and HF/v2-variant-insensitively, so "ecori", "EcoRI-HF", "BsaI" and "BsmFI" all resolve. A name that resolves to nothing is REJECTED rather than dropped — an unscanned enzyme reported as having no sites is indistinguishable from one that genuinely does not cut.'}, 'circular': {'type': 'boolean', 'default': False, 'description': 'Treat the sequence as circular (plasmid) so sites spanning the origin are found.'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'type': {'enum': ['dna', 'rna'], 'type': 'string', 'default': 'dna'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['protein'], 'properties': {'mode': {'enum': ['frequent', 'degenerate'], 'type': 'string', 'default': 'frequent'}, 'protein': {'type': 'string', 'residues': 'aa', 'description': 'Protein sequence (one-letter codes; * for stop).'}, 'organism': {'enum': ['ecoli', 'human', 'yeast', 'cho', 'pichia', 'insect', 'arabidopsis', 'zebrafish'], 'type': 'string', 'default': 'ecoli', 'description': 'Codon-usage host (ignored in degenerate mode).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'siteEnd': {'type': 'integer', 'description': '1-based end of that region.'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'The transcript: aptamer, expression platform, and at least the start of the CDS. DNA or RNA. Max 1,000 nt, because it is folded twice.'}, 'siteStart': {'type': 'integer', 'description': '1-based start of the region whose accessibility is the answer. Omit both ends and the ribosome footprint is located automatically from the first start codon and its Shine-Dalgarno.'}, 'aptamerEnd': {'type': 'integer', 'description': '1-based end of the aptamer.'}, 'temperature': {'type': 'number', 'default': 37, 'maximum': 120, 'minimum': -20, 'description': 'Folding temperature in °C. A switch characterised at 37 °C is not a switch at 30 °C.'}, 'aptamerStart': {'type': 'integer', 'description': "1-based start of the aptamer — the region the ligand occupies. Omit both ends to fold freely and only report the site's accessibility."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'properties': {'fasta': {'type': 'string', 'residues': 'nt', 'description': 'Alternative to `reads`: a multi-record FASTA of the reads. No quality, so no end trimming.'}, 'reads': {'type': 'array', 'items': {'type': 'object'}, 'description': 'The reads, as [{name, sequence, quality?}]. `quality` is a per-base Phred array the same length as `sequence`; without it the read still assembles but its ends are NOT trimmed, which the result says.'}, 'noTrim': {'type': 'boolean', 'default': False, 'description': 'Assemble the reads exactly as given, with no quality trimming.'}, 'minOverlap': {'type': 'integer', 'default': 30, 'description': 'Shortest overlap that may join two reads.'}, 'minIdentity': {'type': 'number', 'default': 85, 'description': 'Lowest percent identity an overlap may have.'}, 'trimThreshold': {'type': 'number', 'description': 'Phred threshold for end-trimming. Ignored for reads with no quality array.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['controlBases', 'controlChannels', 'editedBases', 'editedChannels', 'cutPosition'], 'properties': {'guard': {'type': 'number', 'default': 3, 'description': 'Bases skipped immediately after the cut, where the trace is least reliable.'}, 'offset': {'type': 'number', 'description': 'Override the alignment offset between the reads. By default it is found from the base calls upstream of the cut, which is reported back along with the identity achieved.'}, 'maxIndel': {'type': 'number', 'default': 10, 'description': 'Largest indel to include in the basis, in bp (max 20). Every shift from −maxIndel to +maxIndel is fitted.'}, 'cutPosition': {'type': 'number', 'description': '1-based position of the expected cut, in CONTROL read coordinates.'}, 'editedBases': {'type': 'string', 'residues': 'nt', 'description': "Base calls of the edited pool's read."}, 'controlBases': {'type': 'string', 'residues': 'nt', 'description': 'Base calls of the UNEDITED control read.'}, 'windowLength': {'type': 'number', 'default': 70, 'description': 'Bases downstream of the cut used for the decomposition (20-300). Longer is better conditioned but needs more clean read.'}, 'editedChannels': {'type': 'array', 'items': {'type': 'array', 'items': {'type': 'number'}}, 'description': 'Per-base [A, C, G, T] intensities of the edited read, same convention.'}, 'controlChannels': {'type': 'array', 'items': {'type': 'array', 'items': {'type': 'number'}}, 'description': "Per-base [A, C, G, T] intensities of the control read, one row per called base, read at that base's peak location (trace arrays are indexed by scan, not by base)."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['controlBases', 'controlChannels', 'editedBases', 'editedChannels', 'editKind', 'editPosition'], 'properties': {'offset': {'type': 'number', 'description': "Override the alignment offset between the reads (whole number, −40 to 40). By default it is found from the base calls upstream of the edit. upstreamIdentity is always measured AT the offset used, so an override that is wrong shows up as a failed same-amplicon check rather than borrowing the auto-detected offset's score."}, 'editKind': {'enum': ['substitution', 'insertion', 'deletion', 'replacement'], 'type': 'string', 'description': 'Shape of the intended edit, spelled as prime_editing_design spells it. "substitution" replaces bases one for one; "insertion" adds novel bases and replaces none; "deletion" removes bases and adds none; "replacement" is the general case where the two lengths differ.'}, 'maxIndel': {'type': 'number', 'default': 10, 'description': "Largest unintended indel to fit, in bp (1-20; out of range is rejected, not clamped). Every shift from −maxIndel to +maxIndel is included except 0, which is wild-type. The intended edit's OWN net shift is included too whenever its column is measurably different from the intended-edit column — it is dropped only when the two are the same vector, which happens for a pure deletion whose cut is at the edit. See sameShiftByproduct in the result for which of the two happened."}, 'altAllele': {'type': 'string', 'residues': 'nt', 'description': 'The bases the edit installs in their place (substitution and replacement).'}, 'refAllele': {'type': 'string', 'residues': 'nt', 'description': 'The control bases the edit replaces (substitution and replacement). Checked against the control read: a mismatch is rejected, because building the intended-edit column at the wrong position yields a confident, meaningless number.'}, 'cutPosition': {'type': 'number', 'description': '1-based CONTROL position where UNINTENDED indels start — the nuclease cut or the PE nick. Defaults to the edit start. Separate from editPosition because a byproduct allele is wild-type up to the cut and shifted after it, so a wrong cut position makes those columns wrong over the first part of the window.'}, 'editedBases': {'type': 'string', 'residues': 'nt', 'description': "Base calls of the edited pool's read."}, 'insertedSeq': {'type': 'string', 'residues': 'nt', 'description': 'The novel bases inserted (insertion only).'}, 'controlBases': {'type': 'string', 'residues': 'nt', 'description': 'Base calls of the UNEDITED control read.'}, 'editPosition': {'type': 'number', 'description': '1-based position of the edit in CONTROL read coordinates: the first base the edit replaces. An insertion replaces nothing, so there it is the base the insert lands immediately BEFORE — one MORE than the VCF/HGVS anchor, which names the base before an insertion. The rule is uniform across all four kinds on purpose; a spec transcribed from VCF needs +1 on an insertion.'}, 'windowLength': {'type': 'number', 'default': 70, 'description': 'Bases from the edit site downstream used for the decomposition (20-300; out of range is rejected, not clamped). Unlike sanger_indel_spectrum there is no guard region: the edited positions themselves are the only signal separating a substitution from wild-type.'}, 'deletedLength': {'type': 'number', 'description': 'How many bases are deleted (deletion only).'}, 'editedChannels': {'type': 'array', 'items': {'type': 'array', 'items': {'type': 'number'}}, 'description': 'Per-base [A, C, G, T] intensities of the edited read, same convention.'}, 'controlChannels': {'type': 'array', 'items': {'type': 'array', 'items': {'type': 'number'}}, 'description': "Per-base [A, C, G, T] intensities of the control read, one row per called base, read at that base's peak location (trace arrays are indexed by scan, not by base)."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['reference', 'reads'], 'properties': {'reads': {'type': 'string', 'maxLength': 2000000, 'description': "All the plate's reads as FASTA or FASTQ (auto-detected). The record name is what the clone grouping is read from. Up to 384 reads / 400,000 total bases, and (reference length x total read bases) must stay under 200,000,000 — split a 96-clone plate across calls."}, 'circular': {'type': 'boolean', 'default': False, 'description': 'Treat the construct as a plasmid, so a read crossing its arbitrary linear start is aligned through the join instead of having its tail discarded.'}, 'grouping': {'enum': ['auto', 'one-clone', 'per-read'], 'type': 'string', 'default': 'auto', 'description': 'How reads become clones. "auto" parses the record names; "one-clone" treats every read as being of one clone (use when the names carry nothing); "per-read" judges each read on its own.'}, 'insertEnd': {'type': 'integer', 'minimum': 1, 'description': '1-based last base of that stretch.'}, 'reference': {'type': 'string', 'residues': 'nt', 'description': 'The intended construct (raw or FASTA). Up to 20,000 bp.'}, 'insertLabel': {'type': 'string', 'description': 'What to call it in the verdicts. Default "the insert".'}, 'insertStart': {'type': 'integer', 'minimum': 1, 'description': '1-based first base of the stretch that has to be right (the insert). With insertEnd, every clone is judged over this span alone — the only honest framing when one 900 bp read cannot cover a 6 kb plasmid — and VECTOR_ONLY/WRONG_INSERT become reachable. May be greater than insertEnd on a circular construct, meaning the span crosses the origin.'}, 'qualityOffset': {'enum': [33, 64], 'type': 'integer', 'default': 33, 'description': 'ASCII offset of the FASTQ quality string. 33 for anything modern, 64 for pre-1.8 Illumina.'}, 'trimThreshold': {'type': 'integer', 'default': 20, 'maximum': 60, 'minimum': 0, 'description': "Phred threshold for trimming both ends of a read (BWA's rule). Only applies to FASTQ input, which is the only input that carries quality."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['reference'], 'properties': {'read': {'type': 'string', 'residues': 'nt', 'description': 'Sanger read as FASTA or raw text (alternative to uploading an ABIF trace). Also the per-record field for plate-batch runs via /api/v1/batch.'}, 'fileName': {'type': 'string', 'description': 'Optional original file name (echoed back).'}, 'reference': {'type': 'string', 'residues': 'nt', 'description': 'Expected reference sequence (FASTA or raw).'}, 'fileBase64': {'type': 'string', 'description': 'The binary ABIF (.ab1 / .abi) trace file, base64-encoded.'}, 'minCoverage': {'type': 'number', 'default': 0.9, 'description': "Fraction of the reference the read must span before a PASS is meaningful; below this the verdict is 'ambiguous_low_coverage' regardless of identity. Lower it when the reference is intentionally just the region/junction being checked."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['tool', 'args'], 'properties': {'args': {'type': 'object', 'description': 'Arguments for that tool, exactly as you would pass to it directly.'}, 'tool': {'type': 'string', 'description': 'Name of the registered tool to run and save (e.g. "verify_construct").'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'FASTA or FASTQ text (raw sequence is treated as single-record FASTA).'}, 'qualityOffset': {'enum': [33, 64], 'type': 'integer', 'default': 33, 'description': 'ASCII offset of the FASTQ quality string. 33 for anything modern, 64 for pre-1.8 Illumina.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['accession'], 'properties': {'db': {'enum': ['auto', 'nucleotide', 'protein', 'uniprot', 'ensembl'], 'type': 'string', 'default': 'auto', 'description': 'Database to query; auto-detects from the accession format.'}, 'format': {'enum': ['fasta', 'genbank'], 'type': 'string', 'default': 'fasta', 'description': 'Output format (GenBank is only available for NCBI accessions — UniProt and Ensembl are FASTA-only).'}, 'accession': {'type': 'string', 'description': 'GenBank/RefSeq accession (e.g. NM_000546), UniProtKB accession (e.g. P04637), or Ensembl stable ID (e.g. ENSG00000141510, ENST00000335137).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['input'], 'properties': {'to': {'enum': ['fasta', 'fasta-cds', 'fasta-protein', 'genbank', 'tsv', 'snapgene'], 'type': 'string', 'default': 'fasta', 'description': "Output format. fasta-cds / fasta-protein extract CDS features (GenBank input only). GenBank in and 'genbank' out rewrites the record with its features, qualifiers and topology intact — it is a rewrite, not a re-annotation. 'snapgene' writes a binary SnapGene .dna file, returned base64 in `fileBase64` rather than in `output`; it takes ONE record, because a .dna holds one molecule."}, 'from': {'enum': ['auto', 'fasta', 'genbank'], 'type': 'string', 'default': 'auto', 'description': "Input format; 'auto' sniffs it from the first meaningful line."}, 'input': {'type': 'string', 'description': 'A FASTA or GenBank record to convert.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'maxOrfs': {'type': 'integer', 'default': 10, 'description': 'Maximum number of ORFs to return, longest first.'}, 'minOrfAa': {'type': 'integer', 'default': 50, 'description': 'Minimum ORF length in amino acids.'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}, 'endPrimerLength': {'type': 'integer', 'default': 20, 'description': 'Length of the naive end primers taken from each end.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': [], 'properties': {'db': {'enum': ['nucleotide', 'protein'], 'type': 'string', 'default': 'nucleotide'}, 'gene': {'type': 'string', 'description': 'Gene symbol/name, e.g. "BRCA1". Combined with organism (if given) into a search term.'}, 'term': {'type': 'string', 'description': 'Raw NCBI search term (advanced) — overrides gene/organism when given, e.g. "BRCA1[gene] AND Homo sapiens[orgn]".'}, 'organism': {'type': 'string', 'description': 'Organism name, e.g. "Homo sapiens". Optional; narrows the gene search.'}, 'maxResults': {'type': 'integer', 'default': 5, 'maximum': 20, 'minimum': 1, 'description': 'Up to 20.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['reference', 'reads'], 'properties': {'reads': {'type': 'string', 'description': 'Raw reads in FASTA or FASTQ format (auto-detected). Up to 2000 reads / 5,000,000 total bp per call.'}, 'circular': {'type': 'boolean', 'default': False, 'description': 'Treat the reference as a circular molecule (plasmid). Reads that straddle its arbitrary linear start are then aligned right through the join instead of being cut short there, so variants in the part that would otherwise be clipped away are actually called. Turn this on for whole-plasmid data — the reads begin wherever the molecule was cut, so most of them cross the join. Reads longer than the reference still get clipped. It also governs structural-variant calling: on a circle an origin-crossing read is contiguous, and only this flag lets it be told apart from a whole-reference duplication.'}, 'platform': {'enum': ['auto', 'nanopore', 'pacbio', 'illumina', 'sanger'], 'type': 'string', 'default': 'auto', 'description': 'Read type, which selects minimap2\'s alignment preset. "auto" (the default) passes no preset and uses minimap2\'s own defaults — whose parameters happen to be map-ont\'s, so nanopore data is already handled; setting "nanopore" makes that explicit and pins it. "pacbio" uses map-hifi and "illumina" uses sr, both of which materially change the result: under the ONT defaults gaps are cheap, so on accurate reads a cluster of mismatches can be reported as a spurious indel. "sanger" uses map-hifi with the minimum alignment score returned to 80, because map-hifi\'s own floor of 200 was chosen for 10-25 kb reads and would leave a short or partly-failed Sanger read unmapped. The preset actually used is reported back as minimap2Preset/alignerArgs so a run can be reproduced. Names are matched ignoring case and punctuation, and the obvious aliases resolve ("ONT" and "map-ont" to nanopore, "HiFi" to pacbio, "sr" to illumina); anything unrecognized is rejected rather than silently treated as "auto".'}, 'reference': {'type': 'string', 'residues': 'nt', 'description': 'The claimed/expected reference — bare bases, FASTA, or a whole GenBank record. Pass the GenBank record (your own map) to get consequences: every consensus edit is then placed against the features, so the answer reads "silent in AmpR" or "premature STOP at codon 41 of your CDS" instead of only a position and a base. Bare bases still work and simply return no consequences.'}, 'minSvLength': {'type': 'integer', 'default': 50, 'description': 'Smallest structural variant to report, in bp (default 50). Below this the per-base variant caller already reports the event from inside a single alignment, and on nanopore data the range is mostly the error profile.'}, 'minSvSupport': {'type': 'integer', 'default': 3, 'description': 'Distinct reads that must agree on the same breakpoint before a structural variant (large deletion, duplication, inversion, insertion) is reported. Default 3 — stricter than minSupportingReads on purpose: a single split read is a library-prep chimera or a mapping artifact far more often than it is biology, and chimeras are common enough that two agreeing by chance is likelier than two matching base errors.'}, 'minSupportingReads': {'type': 'integer', 'default': 2, 'description': 'Minimum number of reads agreeing on a variant position for it to count as a consensus (candidate real) variant rather than single-read noise.'}, 'breakpointTolerance': {'type': 'integer', 'default': 50, 'description': "How far apart two reads' breakpoints may sit and still count as the same event, in bp (default 50). Long-read breakpoints are fuzzy, and microhomology at a real junction moves the split legitimately."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': [], 'properties': {'entries': {'type': 'object', 'description': 'Initial named entries, e.g. {"vector": "...", "insert": "..."}. Optional — you can also add entries later with session_set.', 'additionalProperties': {'type': 'string'}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sessionId'], 'properties': {'names': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only return these entries; omit to return all of them.'}, 'sessionId': {'type': 'string'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sessionId', 'tool'], 'properties': {'args': {'type': 'object', 'description': 'Additional literal arguments, merged with the ones resolved from the session.', 'additionalProperties': True}, 'tool': {'type': 'string', 'description': 'Name of any non-meta SeqBench tool (not batch, workflow, or another session_* tool).'}, 'sessionId': {'type': 'string'}, 'writeBack': {'type': 'object', 'description': 'Map of { resultFieldName: sessionEntryName } — stores selected fields of the result back into the session under these names.', 'additionalProperties': {'type': 'string'}}, 'fromSession': {'type': 'object', 'description': 'Map of { toolArgName: sessionEntryName } — resolves each named tool argument from the session before running.', 'additionalProperties': {'type': 'string'}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sessionId', 'entries'], 'properties': {'entries': {'type': 'object', 'description': 'Named entries to add/overwrite, e.g. {"insert": "..."}.', 'additionalProperties': {'type': 'string'}}, 'sessionId': {'type': 'string'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['target'], 'properties': {'target': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}, 'shRnaLoop': {'type': 'string', 'default': 'TTCAAGAGA', 'residues': 'nt', 'description': 'Loop sequence used when assembling the shRNA cassette.'}, 'minReynolds': {'type': 'integer', 'default': 6, 'description': 'Minimum Reynolds score (0–8) to keep; falls back to best-ranked if none qualify.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['template'], 'properties': {'mgMM': {'type': 'number', 'default': 1.5, 'description': 'Divalent cation [Mg2+] (mM).'}, 'naMM': {'type': 'number', 'default': 50, 'description': 'Monovalent cation [Na+]/[K+] (mM).'}, 'style': {'enum': ['quikchange', 'q5'], 'type': 'string', 'default': 'quikchange', 'description': 'Mutagenic primer style.'}, 'dntpMM': {'type': 'number', 'default': 0.2, 'description': 'Total [dNTP] (mM), chelates Mg2+.'}, 'insert': {'type': 'string', 'residues': 'nt', 'description': 'Bases to put in place of the deleted span (delins edit). Omit for a pure deletion. NOTE the convention when deleteLength is 0: the insert lands immediately BEFORE `position`, so position 101 + insert "GGA" is the same edit as mutation: "c.100_101insGGA" — HGVS names the two flanking bases, this names the base the insert sits in front of. `interpretedAs` states which bases the insert ended up between.'}, 'newBase': {'enum': ['A', 'C', 'G', 'T'], 'type': 'string', 'description': 'Replacement base (nt edit).'}, 'oligoNM': {'type': 'number', 'default': 250, 'description': 'Total strand concentration (nM).'}, 'residue': {'type': 'integer', 'description': '1-based residue number to change (aa edit).'}, 'editKind': {'enum': ['nt', 'aa', 'delins'], 'type': 'string', 'description': 'Edit level. Normally omitted — it is inferred from the fields you send (newBase means nt, targetAa means aa, insert/deleteLength means delins).'}, 'mutation': {'type': 'string', 'description': 'The edit by name — "E52K", "p.Glu52Lys", "Q100*", "c.155A>G", "A155G", "c.76_78del", "c.76_77insGGA", "c.76_78dup", "c.76delinsAA". Replaces the field-by-field forms below. An unprefixed "A123G" is a legal reading at BOTH levels; it is resolved by which one matches the template, and refused if both do.'}, 'organism': {'enum': ['ecoli', 'human', 'yeast', 'cho', 'pichia', 'insect', 'arabidopsis', 'zebrafish'], 'type': 'string', 'default': 'ecoli', 'description': 'Codon-usage table for choosing the new codon (aa edit). Latin names and common strain/cell-line names are accepted.'}, 'position': {'type': 'integer', 'description': '1-based position to substitute (nt), or the first base of the span to replace (delins). Required for those forms — it is never assumed. For a pure insertion (deleteLength 0) it is the base the insert goes in FRONT of.'}, 'targetAa': {'type': 'string', 'description': "Target amino acid, one-letter code incl '*' (aa edit)."}, 'template': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}, 'frameStart': {'type': 'integer', 'default': 1, 'description': '1-based position of the first base of codon 1. Needed whenever the coding sequence does not start at base 1 of the template — a residue number means nothing without it.'}, 'armTmTarget': {'type': 'number', 'default': 60, 'description': 'Target Tm (°C) for each template-binding arm.'}, 'deleteLength': {'type': 'integer', 'description': 'Template bases to remove, starting at `position` (delins edit). 0 with `insert` set is a pure insertion, placed immediately before `position`.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['concentration', 'volume'], 'properties': {'volume': {'type': 'number', 'default': 100, 'description': 'Volume to make.'}, 'reagent': {'type': 'string', 'description': 'Reagent name as printed on the bottle, hydration state included (27 known). Ignored when molarMass is given.'}, 'molarMass': {'type': 'number', 'description': 'Formula weight in g/mol. Overrides reagent.'}, 'volumeUnit': {'enum': ['L', 'mL', 'uL'], 'type': 'string', 'default': 'mL', 'description': 'Unit for volume.'}, 'concentration': {'type': 'number', 'default': 1, 'description': 'Target concentration.'}, 'concentrationUnit': {'enum': ['M', 'mM', 'uM', 'nM'], 'type': 'string', 'default': 'M', 'description': 'Unit for concentration.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'window': {'type': 'integer', 'default': 50, 'maximum': 500, 'minimum': 20, 'description': 'Window for the GC profile, in bp (default 50). Vendors screen local GC, not just the average, so this is what the flags are computed over.'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'The fragment as it would be ordered, raw, FASTA or GenBank. Max 100,000 bp.'}, 'repeatMin': {'type': 'integer', 'default': 20, 'minimum': 8, 'description': 'Shortest repeated stretch to report, in bp (default 20, which is where vendor repeat filters sit).'}, 'includeProfile': {'type': 'boolean', 'default': False, 'description': 'Return the full per-window GC profile. Off by default — it is one row per window and most callers want the flags.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['fileBase64'], 'properties': {'fileName': {'type': 'string', 'description': 'Optional original file name (echoed back, and used to explain a refusal).'}, 'fileBase64': {'type': 'string', 'description': 'The binary trace file (.ab1 / .abi / .scf), base64-encoded.'}, 'mixedRatio': {'type': 'number', 'default': 0.35, 'maximum': 0.9, 'minimum': 0.1, 'description': 'A second peak at or above this fraction of the called peak counts as a mixed position. Lower it to catch a minor species, raise it if ordinary crosstalk on your instrument is firing it.'}, 'qualityCutoff': {'type': 'number', 'default': 20, 'maximum': 60, 'minimum': 5, 'description': 'Phred score the usable window is measured at. 20 is the conventional 1-in-100 line.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['baseCalls', 'peakLocations', 'channelA', 'channelC', 'channelG', 'channelT'], 'properties': {'quality': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Optional per-base Phred scores; echoed beside each mixed position.'}, 'channelA': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Full A channel, indexed by SCAN (not by base).'}, 'channelC': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Full C channel, indexed by scan.'}, 'channelG': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Full G channel, indexed by scan.'}, 'channelT': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Full T channel, indexed by scan.'}, 'baseCalls': {'type': 'string', 'description': 'Base calls, e.g. from parse_sanger_trace.'}, 'mixedRatio': {'type': 'number', 'default': 0.25, 'description': 'Secondary/primary intensity ratio at which a position is reported as mixed (0-1 exclusive). A convention, not a measurement.'}, 'skipLeading': {'type': 'number', 'default': 40, 'description': "Bases at the read's start excluded from the mixed scan (0-1000). The dye blob lives here and lifts every channel; without this every read reports a wall of false heterozygotes at its start."}, 'maxExtension': {'type': 'number', 'default': 400, 'description': 'Most extra bases to call past the last called base (0-400). The cap is part of the method: peak positions are extrapolated and the extrapolation drifts.'}, 'peakLocations': {'type': 'array', 'items': {'type': 'number'}, 'description': "Scan index of each called base's peak — one per base call."}, 'tailSignalToNoise': {'type': 'number', 'default': 3, 'description': 'How far above the measured noise floor a channel must sit before the tail extension calls it (1-100).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'frame': {'enum': [1, 2, 3], 'type': 'integer', 'default': 1}, 'toStop': {'type': 'boolean', 'default': False, 'description': 'Stop at the first stop codon.'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['variant'], 'properties': {'variant': {'type': 'string', 'description': 'An rsID ("rs1042522"), chrom:pos:ref:alt with either separator ("17:7676154:G:C" or "17-7676154-G-C", single-base substitutions only), genomic HGVS ("chr17:g.7676154G>C" or "17:g.7676154G>C"), or transcript HGVS c. ("NM_000546.6:c.215C>G" or "TP53:c.215C>G").'}, 'assembly': {'enum': ['hg19', 'hg38'], 'type': 'string', 'default': 'hg19', 'description': 'Genome build for rsID/chrom-pos-ref-alt/genomic-HGVS lookups (MyVariant.info\'s native default is hg19). Ignored for transcript "c." input, which is always bridged via GRCh38/hg38 (hgvs_convert\'s own coordinate space).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['reference', 'query'], 'properties': {'query': {'type': 'string', 'residues': 'nt', 'description': 'Query / variant sequence (raw or FASTA).'}, 'coding': {'type': 'boolean', 'default': False, 'description': 'Treat as a coding sequence and report amino-acid effects.'}, 'reference': {'type': 'string', 'residues': 'nt', 'description': 'Reference / wild-type sequence (raw or FASTA).'}, 'frameStart': {'type': 'integer', 'default': 1, 'description': '1-based reading-frame start (used when coding is true).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': [], 'properties': {'flank': {'type': 'integer', 'default': 300, 'description': 'NETWORK MODE. Bases of genomic context fetched either side of the variant (60-1000). Needs to cover the allele-specific core upstream and the genotyping amplicon downstream.'}, 'label': {'type': 'string', 'description': 'Name stem for the ordered oligos. Defaults to the HGVS string (network mode) or a positional label like "A100G" (offline).'}, 'style': {'enum': ['quikchange', 'q5'], 'type': 'string', 'default': 'quikchange', 'description': 'Mutagenic primer style: overlapping (QuikChange) or back-to-back (Q5/KLD).'}, 'variant': {'type': 'string', 'description': 'NETWORK MODE. A full HGVS "c." description, e.g. "NM_000546.6:c.215C>G" or "TP53:c.215C>G". Resolved through the bundled MANE crosswalk and a live Ensembl exon map, then a genomic window is fetched around it. Mutually exclusive with "sequence".'}, 'position': {'type': 'integer', 'minimum': 1, 'description': 'OFFLINE MODE. 1-based position of the first base of refAllele on `sequence`. For a pure insertion (empty refAllele) the alternate bases are inserted immediately BEFORE this position.'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'OFFLINE MODE. The reference/construct sequence the variant is described against (raw or FASTA). Mutually exclusive with "variant".'}, 'altAllele': {'type': 'string', 'description': 'OFFLINE MODE. Bases installed. Use "-" or "" for a pure deletion.'}, 'refAllele': {'type': 'string', 'description': 'OFFLINE MODE. Bases replaced, as they appear on `sequence` — checked against it and refused if they differ. Use "-" or "" for a pure insertion. A VCF-style anchored pair (both alleles carrying a shared flanking base, e.g. refAllele "T" / altAllele "TGGATCC", or "TG" / "AG") is accepted and trimmed to its minimal form before anything is designed; the trimmed coordinates are reported as `minimal`.'}, 'armTmTarget': {'type': 'number', 'default': 60, 'maximum': 80, 'minimum': 45, 'description': "Target Tm (°C) for each mutagenic primer's template-binding arm (45-80; the arm is grown between 10 and 30 nt, so a target outside that range is refused rather than clamped to the shortest or longest arm)."}, 'maxAmplicon': {'type': 'integer', 'default': 150, 'maximum': 10000, 'minimum': 36, 'description': 'Maximum genotyping amplicon length. Refused below 36 bp, the shortest KASP product that can exist (an 18 nt core plus an 18 nt reverse primer), and refused below minAmplicon — both are unsatisfiable for every reference, and left unchecked they came back as "no common reverse primer could be placed; provide more 3\' flanking sequence".'}, 'minAmplicon': {'type': 'integer', 'default': 60, 'maximum': 10000, 'minimum': 1, 'description': "Minimum genotyping amplicon length, measured from the allele-specific primer's 5' end (which sits one core-length upstream of the variant) to the reverse primer's 5' end. Must not exceed maxAmplicon."}, 'targetCoreTm': {'type': 'number', 'default': 56, 'maximum': 80, 'minimum': 45, 'description': 'Target Tm (°C) for the allele-specific genotyping core, before the universal tail (45-80; the core is chosen between 18 and 27 nt, so a target outside that range is refused rather than clamped).'}, 'addSecondaryMismatch': {'type': 'boolean', 'default': True, 'description': "Engineer the ARMS destabilizing mismatch 3 nt from the allele-specific primer's 3' end."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Library id (e.g. "pbr322"), vector name ("pBR322"), or accession ("J01749" / "J01749.1").'}, 'includeSequence': {'type': 'boolean', 'default': True, 'description': 'Set false for the annotation only — useful for a large BAC where the bases are not the point.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum hits to return. Capped at 100; asking for more is an error, not a silent truncation.'}, 'query': {'type': 'string', 'description': 'Substring of the vector name or its GenBank definition (case- and punctuation-insensitive, min 2 characters).'}, 'feature': {'type': 'string', 'description': 'Substring of an annotated feature\'s label, type or note (min 2 characters), e.g. "T7 promoter", "kanR", "rep_origin".'}, 'category': {'type': 'string', 'description': 'Restrict to one category. An unknown category is an error, not an empty result.'}, 'maxLength': {'type': 'integer', 'minimum': 0, 'description': 'Largest vector length in bp.'}, 'minLength': {'type': 'integer', 'minimum': 0, 'description': 'Smallest vector length in bp.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['method', 'claimedConstruct'], 'properties': {'names': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional labels for each fragment.'}, 'coding': {'type': 'boolean', 'default': False, 'description': 'Report amino-acid effects of any mismatch, assuming claimedConstruct is (or contains) a coding sequence.'}, 'enzyme': {'type': 'string', 'default': 'BsaI', 'description': 'Type IIS enzyme for Golden Gate — one of BsaI, BbsI, Esp3I (BsmBI); "BsmBI" also resolves to Esp3I, and NEB\'s variant names (BsaI-HFv2, BbsI-HF, BsmBI-v2) fold to the parent enzyme. Any other name fails the verification outright rather than being substituted.'}, 'insert': {'type': 'string', 'residues': 'nt', 'description': 'Insert sequence (restriction and lic methods). Omit if insertPcr is given.'}, 'method': {'enum': ['restriction', 'gibson', 'goldengate', 'lic', 'slic', 'infusion'], 'type': 'string', 'description': 'Assembly method used. restriction/gibson/goldengate are the primer-and-enzyme methods; lic and slic re-run the T4-polymerase chew-back (sequence-defined and time-stopped respectively) and infusion is In-Fusion/CPEC. Anything else is refused rather than substituted — see the note on "topo".'}, 'vector': {'type': 'string', 'residues': 'nt', 'description': 'Vector sequence (restriction and lic methods; for lic, the LINEARIZED vector). Omit if vectorPcr is given.'}, 'enzyme3': {'type': 'string', 'default': 'BamHI', 'description': 'Insert 3′ enzyme (restriction method).'}, 'enzyme5': {'type': 'string', 'default': 'EcoRI', 'description': 'Insert 5′ enzyme (restriction method).'}, 'circular': {'type': 'boolean', 'default': True, 'description': 'Treat the product/claimed construct as circular (most plasmids are).'}, 'fragments': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 24, 'description': 'Fragments (5′→3′), assembled head-to-tail (gibson/goldengate/slic/infusion). BARE parts only — for gibson do NOT include the homology arms, which are added by the assembly primers and merged (so the product is fragment1+…+fragmentN). The convention is the OPPOSITE for slic and infusion: there the homology must already BE on the fragments (it arrived on the PCR primer tails), and infusion derives the ORDER from those homologies, so the order listed here is ignored. Use "" as a placeholder for any fragment supplied instead via the matching fragmentPcrs[i].'}, 'insertPcr': {'type': 'object', 'description': 'Derive the insert by PCR instead: {template, forwardPrimer, reversePrimer, maxMismatches? (0-10), circular?}.'}, 'vectorPcr': {'type': 'object', 'description': 'Derive the vector by PCR instead: {template, forwardPrimer, reversePrimer, maxMismatches? (0-10), circular?}.'}, 'frameStart': {'type': 'integer', 'default': 1, 'description': '1-based reading-frame start on claimedConstruct, used when coding is true.'}, 'overlapLen': {'type': 'integer', 'default': 20, 'description': 'Gibson homology-arm length (bp) that the assembly PRIMERS add at each junction. Since the fragments themselves must not carry their arms, this describes the junction/primer design only — it does not change the predicted product length or the verdict.'}, 'armTmTarget': {'type': 'number', 'default': 60, 'description': 'Target annealing Tm (°C) for primer arms.'}, 'chewBackLen': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'slic method: nucleotides removed from each 3′ end. A SLIC chew-back has no dNTP to arrest it and is stopped by time, so this is an input rather than a property of the sequence. 0 (default) models the intended reaction — chewed to the full homology and no further.'}, 'homologyLen': {'type': 'integer', 'default': 15, 'minimum': 15, 'description': 'infusion method: terminal homology required at every junction, in bp. At least 15 — the junction is annealed and extended by a polymerase with no exonuclease to widen it and no ligase to seal it, so a shorter overlap is a different chemistry rather than a weaker version of this one.'}, 'fragmentPcrs': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Parallel to fragments, same length: null (or omit) to use fragments[i] directly, or a PCR spec {template, forwardPrimer, reversePrimer, maxMismatches? (0-10), circular?} to derive that fragment instead.'}, 'vectorEnzyme3': {'type': 'string', 'description': 'Vector 3′ enzyme (restriction method); defaults to enzyme3.'}, 'vectorEnzyme5': {'type': 'string', 'description': 'Vector 5′ enzyme (restriction method); defaults to enzyme5. Set a different, compatible enzyme (e.g. BglII for a BamHI insert) to verify heterologous-overhang cloning.'}, 'claimedConstruct': {'type': 'string', 'residues': 'nt', 'description': 'The sequence you claim you ended up with.'}, 'insertNucleotide': {'enum': ['A', 'C', 'G', 'T'], 'type': 'string', 'description': "lic method: the single dNTP the INSERT's chew-back was run with. Normally the COMPLEMENT of vectorNucleotide (the classic pair is dTTP on the vector, dATP on the insert)."}, 'vectorNucleotide': {'enum': ['A', 'C', 'G', 'T'], 'type': 'string', 'description': "lic method: the single dNTP the VECTOR's chew-back was run with (T for dTTP…). Required — T4 pol's exonuclease stops at the first occurrence of this base reading inward from each 3′ end, so there is no product to check against without it."}, 'mergePreAddedArms': {'type': 'boolean', 'default': True, 'description': 'Gibson only. When two fragments already share terminal sequence, count that share ONCE (the default — the fragments already carry their arm) or set false to concatenate it twice, which is the right reading when the shared block is a genuine tandem repeat. You should rarely need this: the check tries BOTH readings and reports which one matched in `matchedCandidate`. Setting it restricts the check to one.'}, 'dephosphorylateVector': {'type': 'boolean', 'default': False, 'description': 'The linearized vector was CIP/rSAP-dephosphorylated (restriction method). Affects the self-ligation background warnings, not the product.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['claimedConstruct', 'insertTemplate', 'insertForwardPrimer', 'insertReversePrimer'], 'properties': {'insertTemplate': {'type': 'string', 'residues': 'nt', 'description': 'PCR template the insert was amplified from.'}, 'claimedConstruct': {'type': 'string', 'residues': 'nt', 'description': 'The final sequence claimed to have been built.'}, 'templateCircular': {'type': 'boolean', 'default': False, 'description': 'Treat insertTemplate as circular (e.g. amplifying from a plasmid).'}, 'constructCircular': {'type': 'boolean', 'default': False, 'description': 'Treat claimedConstruct as a circular plasmid, so an insert that spans its arbitrary numbering origin is found whole. Without it the insert is looked for linearly and a wrapped one covers only its longer half.'}, 'expectedFrameStart': {'type': 'integer', 'description': '1-based position in claimedConstruct where the intended reading frame begins. If given, flags a premature stop before the end of the aligned insert region.'}, 'insertForwardPrimer': {'type': 'string', 'residues': 'nt', 'description': "Forward primer used to amplify the insert, 5'→3'."}, 'insertReversePrimer': {'type': 'string', 'residues': 'nt', 'description': "Reverse primer used to amplify the insert, 5'→3'."}, 'maxPrimerMismatches': {'type': 'integer', 'default': 0, 'maximum': 10, 'minimum': 0, 'description': 'Mismatches tolerated per primer during PCR prediction (0–10).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sequence'], 'properties': {'ladder': {'enum': ['1 kb', 'GeneRuler 1 kb', '1 kb Plus', '100 bp'], 'type': 'string', 'default': '1 kb', 'description': 'DNA ladder to plot alongside the sample lane.'}, 'enzymes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Enzyme names to digest with, from the curated common-enzyme set (see restriction_sites for the full list). An unrecognized name is rejected rather than skipped, so an empty band pattern always means "no sites".'}, 'circular': {'type': 'boolean', 'default': False, 'description': 'Treat the sequence as circular (plasmid).'}, 'sequence': {'type': 'string', 'residues': 'nt', 'description': 'Nucleotide sequence (raw or FASTA; IUPAC accepted).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['rows'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['gene', 'log2fc', 'pvalue'], 'properties': {'gene': {'type': 'string', 'description': 'Gene name/id.'}, 'log2fc': {'type': 'number', 'description': 'log2 fold-change.'}, 'pvalue': {'type': 'number', 'description': 'p-value, or an adjusted/FDR value — whichever column you want thresholded on. Must be in (0, 1].'}}}, 'description': 'Differential expression rows, one per gene.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': 'The search query.'}, 'max_results': {'type': 'number', 'description': 'Maximum number of results to return (default 5, max 10).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['design', 'consensus'], 'properties': {'design': {'type': 'string', 'description': 'What you meant to build: raw bases, FASTA, or your annotated GenBank record. An annotated record is what turns a position into a consequence.'}, 'circular': {'type': 'boolean', 'default': True, 'description': "Treat both as circular (the default, and right for a plasmid). The consensus is then rotated and, if needed, reverse-complemented into the design's frame before anything is compared. Turn it off only for a linear product, where the ends are meaningful."}, 'consensus': {'type': 'string', 'residues': 'nt', 'description': 'The assembled consensus from the sequencing service, raw or FASTA. One record.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['steps', 'input'], 'properties': {'input': {'type': 'string', 'description': 'Multi-FASTA or one sequence/identifier per line.'}, 'steps': {'type': 'array', 'items': {'type': 'object', 'required': ['tool'], 'properties': {'args': {'type': 'object', 'additionalProperties': True}, 'from': {'description': 'Sequence source: "initial" or an earlier step index (0-based).'}, 'tool': {'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 8, 'minItems': 1}}, 'additionalProperties': False}
최근 도구 변경
유사한 MCP 서버
Clink Forge
Provides pay-per-call access to attested government datasets, primarily CDC and HHS health data plus EPA air-quality observations.
gisgp
Provides GIS geocoding, routing, spatial transformations, ArcGIS layer inspection and export, and location due diligence for haza…
calc.engineer
Provides deterministic engineering calculators for RF and LoRa systems, electronics, batteries, solar and power systems, cooling,…
Good Earth
Provides plot-specific climate and growing-season analysis for gardens and farms, including frost, heat accumulation, crop suitab…
osint
Provides source-cited US data and schemas for power systems, AI infrastructure, semiconductor production and trade, robotics, and…
EngScript Engineering MCP
Performs engineering calculations for oil and gas applications, including thermodynamics, fluid systems, equipment sizing, balanc…
civilquants
Calculates parametric civil-engineering quantities and Bills of Quantities for drainage, earthworks, retaining walls, pavements, …
brainkb
Manages and queries neuroscience knowledge graphs, including RDF ingestion, named graphs, jobs, spaces, memberships, roles, and a…