Add files using upload-large-folder tool
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- Biomni/biomni/tool/protocols/addgene/Addgene_ CRISPR Library Amplification.txt +330 -0
- Biomni/biomni/tool/protocols/addgene/Addgene_ Centrifugation.txt +129 -0
- Biomni/biomni/tool/protocols/addgene/Addgene_ Gibson Assembly Protocol.txt +136 -0
- Biomni/biomni/tool/protocols/addgene/Addgene_ Immunocytochemistry.txt +204 -0
- Biomni/biomni/tool/protocols/addgene/Addgene_ Lab Safety for Biosafety Levels One and Two.txt +134 -0
- Biomni/biomni/tool/protocols/addgene/Addgene_ Molecular Biology Protocol - Restriction Digest of Plasmid DNA.txt +144 -0
- Biomni/biomni/tool/protocols/addgene/Addgene_ Plasmid Cloning by PCR (with Protocols).txt +91 -0
- Biomni/biomni/tool/protocols/addgene/Addgene_ Protocol - How to Create a Bacterial Glycerol Stock.txt +68 -0
- Biomni/biomni/tool/protocols/addgene/Addgene_ Protocol - Over-Agar Antibiotic Plating.txt +113 -0
- Biomni/biomni/tool/protocols/addgene/Addgene_ Protocol - pLKO.1 – TRC Cloning Vector.txt +630 -0
- Biomni/biomni/tool/protocols/addgene/Addgene_ Using a Light Microscope Protocol.txt +151 -0
- Biomni/biomni/tool/protocols/addgene/Addgene_ Water Bath Protocol.txt +92 -0
- Biomni/biomni/tool/protocols/thermofisher/BrdU Staining Protocol for Flow Cytometry _ Thermo Fisher Scientific - US.txt +85 -0
- Biomni/biomni/tool/tool_description/__pycache__/biophysics.cpython-311.pyc +0 -0
- Biomni/biomni/tool/tool_description/__pycache__/support_tools.cpython-311.pyc +0 -0
- Biomni/biomni/tool/tool_description/__pycache__/synthetic_biology.cpython-311.pyc +0 -0
- Biomni/biomni/tool/tool_description/biochemistry.py +243 -0
- Biomni/biomni/tool/tool_description/bioimaging.py +510 -0
- Biomni/biomni/tool/tool_description/cancer_biology.py +242 -0
- Biomni/biomni/tool/tool_description/cell_biology.py +163 -0
- Biomni/biomni/tool/tool_description/database.py +731 -0
- Biomni/biomni/tool/tool_description/genetics.py +405 -0
- Biomni/biomni/tool/tool_description/genomics.py +840 -0
- Biomni/biomni/tool/tool_description/glycoengineering.py +55 -0
- Biomni/biomni/tool/tool_description/immunology.py +326 -0
- Biomni/biomni/tool/tool_description/literature.py +161 -0
- Biomni/biomni/tool/tool_description/molecular_biology.py +560 -0
- Biomni/biomni/tool/tool_description/pathology.py +213 -0
- Biomni/biomni/tool/tool_description/pharmacology.py +774 -0
- Biomni/biomni/tool/tool_description/physiology.py +363 -0
- Biomni/biomni/tool/tool_description/protocols.py +68 -0
- Biomni/biomni/tool/tool_description/synthetic_biology.py +273 -0
- Biomni/mcp_generated/mcp_bioconductor-concordexr/Dockerfile +40 -0
- Biomni/mcp_generated/mcp_bioconductor-concordexr/app/bioconductor-concordexr_server.py +221 -0
- Biomni/mcp_generated/mcp_bioconductor-concordexr/app/bioconductor-concordexr_shim_server.py +55 -0
- Biomni/mcp_generated/mcp_bioconductor-concordexr/app/requirements.txt +1 -0
- Biomni/mcp_generated/mcp_bioconductor-concordexr/docker-compose.yml +22 -0
- Biomni/mcp_generated/mcp_bioconductor-concordexr/environment.yaml +10 -0
- Biomni/mcp_generated/mcp_bioconductor-concordexr/requirements.txt +2 -0
- Biomni/mcp_generated/mcp_bioconductor-decipher/Dockerfile +40 -0
- Biomni/mcp_generated/mcp_bioconductor-decipher/app/bioconductor-decipher_server.py +439 -0
- Biomni/mcp_generated/mcp_bioconductor-decipher/app/bioconductor-decipher_shim_server.py +55 -0
- Biomni/mcp_generated/mcp_bioconductor-decipher/app/requirements.txt +1 -0
- Biomni/mcp_generated/mcp_bioconductor-decipher/docker-compose.yml +22 -0
- Biomni/mcp_generated/mcp_bioconductor-decipher/environment.yaml +10 -0
- Biomni/mcp_generated/mcp_bioconductor-decipher/requirements.txt +2 -0
- Biomni/mcp_generated/mcp_bioconductor-decontx/Dockerfile +40 -0
- Biomni/mcp_generated/mcp_bioconductor-decontx/app/bioconductor-decontx_server.py +334 -0
- Biomni/mcp_generated/mcp_bioconductor-decontx/app/bioconductor-decontx_shim_server.py +55 -0
- Biomni/mcp_generated/mcp_bioconductor-decontx/docker-compose.yml +22 -0
Biomni/biomni/tool/protocols/addgene/Addgene_ CRISPR Library Amplification.txt
ADDED
|
@@ -0,0 +1,330 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
PROTOCOL: CRISPR Library Amplification
|
| 2 |
+
SOURCE: https://www.addgene.org/protocols/pooled-library-amplification/
|
| 3 |
+
================================================================================
|
| 4 |
+
|
| 5 |
+
INTRODUCTION
|
| 6 |
+
================================================================================
|
| 7 |
+
|
| 8 |
+
Please refer to our pooled library material pages for amplification protocols that
|
| 9 |
+
have been developed by the depositor for a specific pooled library available at
|
| 10 |
+
Addgene. We recommend following the depositor's specific protocol if one is
|
| 11 |
+
available. If a pooled library does not yet have an amplification protocol, the
|
| 12 |
+
following protocol can be used as a starting point for CRISPR libraries.
|
| 13 |
+
|
| 14 |
+
This protocol allows the amplification of a pooled-plasmid library in
|
| 15 |
+
Escherichia coli cells. Pooled libraries contain tens to millions of different
|
| 16 |
+
plasmids in a single sample. They are often used for screening, barcoding, or
|
| 17 |
+
other high throughput multiplexed experiments. These pooled plasmids differ by
|
| 18 |
+
only a short region of DNA: guide RNAs targeting different genes in an organism's
|
| 19 |
+
genome, for example.
|
| 20 |
+
|
| 21 |
+
Amplification is usually necessary to produce sufficient quantities of library for
|
| 22 |
+
experimental applications. Repeated amplifications should be avoided as best as
|
| 23 |
+
possible due to the inherent possibility of altering the composition of the
|
| 24 |
+
library. Bottlenecks, fitness differences, and plasmid recombination can all
|
| 25 |
+
impact the representation of individual plasmids in the pooled library during
|
| 26 |
+
amplification. This protocol is designed to be as general as possible but note
|
| 27 |
+
that individual libraries may require modifications dictated by the originating
|
| 28 |
+
laboratory for optimal results. If you obtained the pooled library from Addgene,
|
| 29 |
+
these protocols can be found on the Pooled Library page for the specific library.
|
| 30 |
+
|
| 31 |
+
This protocol assumes familiarity with standard bacterial transformation and
|
| 32 |
+
basic knowledge of the library being amplified. Please see our protocol on
|
| 33 |
+
Bacterial Transformation. The generalized pooled library amplification protocol
|
| 34 |
+
is expected to obtain satisfactory results for libraries up to 200,000 individual
|
| 35 |
+
plasmids and can be scaled according to the actual number.
|
| 36 |
+
|
| 37 |
+
|
| 38 |
+
REQUIRED QUALITY CONTROL (QC)
|
| 39 |
+
================================================================================
|
| 40 |
+
|
| 41 |
+
Pooled libraries can be challenging and expensive to ensure adequate quality, but
|
| 42 |
+
this upfront cost will save headaches and expense later.
|
| 43 |
+
|
| 44 |
+
At a minimum we recommend the use of a diagnostic digest and high-throughput next
|
| 45 |
+
generation sequencing (NGS). Select a restriction enzyme for digest that will
|
| 46 |
+
cut the shared plasmid backbone a single time and visualize that digestion on an
|
| 47 |
+
agarose gel (see restriction digest protocol here). Lentiviral plasmids can
|
| 48 |
+
recombine between their LTRs resulting in a smaller plasmid containing only the
|
| 49 |
+
elements required for bacterial propagation (origin of replication and antibiotic
|
| 50 |
+
selection). This recombination, at a low rate, is not typically a problem as
|
| 51 |
+
these sequences are not efficiently packaged into lentiviral particles. See below
|
| 52 |
+
for options if the recombinant band makes up a significant proportion of the DNA
|
| 53 |
+
pool.
|
| 54 |
+
|
| 55 |
+
Last Update: August 17, 2023
|
| 56 |
+
|
| 57 |
+
|
| 58 |
+
WORKFLOW TIMELINE
|
| 59 |
+
================================================================================
|
| 60 |
+
|
| 61 |
+
Day 1: Transform, recover, set up overnight growth (Estimated time 2-3 hours)
|
| 62 |
+
|
| 63 |
+
Transformation should be performed at the end of the day to ensure that
|
| 64 |
+
growth times are limited.
|
| 65 |
+
|
| 66 |
+
Day 2: Harvest cells and purify DNA (Estimated time 3-4 hours)
|
| 67 |
+
|
| 68 |
+
Cells should be harvested first thing in the morning to ensure that outgrowth
|
| 69 |
+
and competition are limited.
|
| 70 |
+
|
| 71 |
+
|
| 72 |
+
EQUIPMENT
|
| 73 |
+
================================================================================
|
| 74 |
+
|
| 75 |
+
• Table top centrifuge
|
| 76 |
+
• BioRad Electroporator (MicroPulser TM, Bio-Rad 1652100)
|
| 77 |
+
|
| 78 |
+
|
| 79 |
+
REAGENTS
|
| 80 |
+
================================================================================
|
| 81 |
+
|
| 82 |
+
• 200 µL electrocompetent cells (Default: 4 tubes of Endura Duos, Lucigen,
|
| 83 |
+
60242-1)
|
| 84 |
+
|
| 85 |
+
Alternatives include Stbl4 cells or other ultra-high efficiency
|
| 86 |
+
electrocompetent cells that are suitable for unstable or recombination-prone
|
| 87 |
+
DNA.
|
| 88 |
+
|
| 89 |
+
The use of electrocompetent cells is essential to ensure high efficiency
|
| 90 |
+
uptake of plasmid library DNA.
|
| 91 |
+
|
| 92 |
+
This quantity of cells is sufficient for libraries up to 200,000 individual
|
| 93 |
+
plasmids. For larger libraries scale the number of cells and DNA accordingly.
|
| 94 |
+
|
| 95 |
+
💡 PRO TIP: Use of extreme high efficiency (1×10¹⁰ cfu/µg) commercially
|
| 96 |
+
prepared electrocompetent cells is strongly recommended.
|
| 97 |
+
|
| 98 |
+
• 800 ng pooled library DNA (100 ng plasmid DNA per 25 µL electrocompetent cells)
|
| 99 |
+
|
| 100 |
+
Less library DNA can be used but this dramatically increases the chances of
|
| 101 |
+
individual plasmids being lost from the pool and/or increasing the skewness of
|
| 102 |
+
the pool.
|
| 103 |
+
|
| 104 |
+
• 8 electroporation cuvettes (BioRad, Micropulser, 0.1 cm)
|
| 105 |
+
• 20 mL SOC recovery media (Lucigen, 80026-1)
|
| 106 |
+
• 8X LB Agar + Antibiotic 245 mm bioassay plates (Molecular Devices, X602)
|
| 107 |
+
|
| 108 |
+
💡 PRO TIP: Pour these plates at least one day in advance to allow adequate
|
| 109 |
+
time to fully gel and to dry slightly. We routinely use 350 mL of LB Agar per
|
| 110 |
+
bioassay plate.
|
| 111 |
+
|
| 112 |
+
• 14 mL Vented Falcon Tubes (BD Biosciences, 352059)
|
| 113 |
+
• 3X LB Agar + Antibiotic 65 mm Petri dish (VWR, 11019-552)
|
| 114 |
+
• 4 MaxiPreps (Qiagen HiSpeed Max, Catalog #12663)
|
| 115 |
+
• Tips (1000 µL, 200 µL, 10 µL)
|
| 116 |
+
• Bacti Cell Spreaders (VWR, 60828-680)
|
| 117 |
+
• 5 mL and 10 mL Serological pipettes
|
| 118 |
+
• Ice slurry (Ice bucket with ice and water to create slurry)
|
| 119 |
+
• 100 mL LB
|
| 120 |
+
|
| 121 |
+
At Addgene we use premixed LB (VWR 101414-072) for convenience but any brand
|
| 122 |
+
or house-made LB that supports normal growth is expected to work.
|
| 123 |
+
|
| 124 |
+
• 50 mL Falcon Conical tubes (Fisher, 14-432-22)
|
| 125 |
+
|
| 126 |
+
|
| 127 |
+
REAGENT PREPARATION
|
| 128 |
+
================================================================================
|
| 129 |
+
|
| 130 |
+
• Prepare, sterilize, and pour all LB Agar + Antibiotic plates.
|
| 131 |
+
|
| 132 |
+
• Prewarm 12 mL recovery media at 37 °C (for at least 15 minutes).
|
| 133 |
+
|
| 134 |
+
• Prewarm 3X LB Agar + Antibiotic plates at 37 °C.
|
| 135 |
+
|
| 136 |
+
• Prewarm 8X LB Agar + Antibiotic Bioassay plates.
|
| 137 |
+
|
| 138 |
+
• Prechill Micropulser cuvettes on ice.
|
| 139 |
+
|
| 140 |
+
• Thaw 4 tubes of electrocompetent cells on ice for 15-20 minutes or until
|
| 141 |
+
completely thawed.
|
| 142 |
+
|
| 143 |
+
• Chill a box of 200 µL micropipette tips in a -20 °C freezer.
|
| 144 |
+
|
| 145 |
+
• Aliquot 3 mL SOC into each of four 14 mL Vented Falcon Tubes and have 1 mL SOC
|
| 146 |
+
per electroporation readily available for post-electroporation recovery of
|
| 147 |
+
cells.
|
| 148 |
+
|
| 149 |
+
• Ensure access to autoclaved, sterile reagents for all steps.
|
| 150 |
+
|
| 151 |
+
|
| 152 |
+
PROCEDURE
|
| 153 |
+
================================================================================
|
| 154 |
+
|
| 155 |
+
Day 1
|
| 156 |
+
|
| 157 |
+
1. Add 200 ng DNA to each 50 µL aliquot of thawed Endura Duos on ice. Flick
|
| 158 |
+
gently to mix.
|
| 159 |
+
|
| 160 |
+
2. Electroporate cells (one at a time for a total of eight electroporations):
|
| 161 |
+
|
| 162 |
+
Electroporator Conditions: Bio-Rad Micropulser Ec1 0.1 cm cuvette, 1.8 kV, 1
|
| 163 |
+
pulse.
|
| 164 |
+
|
| 165 |
+
a. Aliquot 25 µL DNA-Endura into pre-chilled cuvette.
|
| 166 |
+
b. Pulse.
|
| 167 |
+
|
| 168 |
+
Caution: Electroporation involves the use of high voltages, please use
|
| 169 |
+
caution when activating pulse and follow all specifications described in the
|
| 170 |
+
equipment manual.
|
| 171 |
+
|
| 172 |
+
c. Immediately add 1 mL SOC to cuvette.
|
| 173 |
+
d. Remove all liquid from cuvette and add to 14 mL vented Falcon Tube
|
| 174 |
+
containing 3 mL SOC.
|
| 175 |
+
e. Repeat for each of the 25 µl aliquots of cell/DNA mixture used (8 in the
|
| 176 |
+
described protocol) using a new vented falcon tube for every two
|
| 177 |
+
transformations. Each of the four 14 mL Vented Falcon Tubes should contain
|
| 178 |
+
a total of 5 mL (3 mL SOC + 2 mL transformed Endura from two separate
|
| 179 |
+
transformations).
|
| 180 |
+
|
| 181 |
+
💡 PRO TIP: Do not pipette repeatedly or mix when removing SOC containing
|
| 182 |
+
transformed DNA-Endura from cuvette.
|
| 183 |
+
|
| 184 |
+
3. Shake four 14 mL Vented Falcon Tubes at 30-37 ℃, 225 rpm for 1 hour.
|
| 185 |
+
|
| 186 |
+
4. After the 1 hour shaking period, pool and gently mix the four tubes.
|
| 187 |
+
|
| 188 |
+
5. Perform sequential 1:100 dilutions of the cells (add 10 µL of the pool to 990
|
| 189 |
+
µL LB then perform a second and then third 1:100 dilution). Plate 100 µL of
|
| 190 |
+
each dilution onto a prewarmed Petri dish.
|
| 191 |
+
|
| 192 |
+
6. Incubate plates at 30 ℃ overnight.
|
| 193 |
+
|
| 194 |
+
7. Plate 2.5 mL of the transformed cells on each of the eight bioassay plates (two
|
| 195 |
+
plates per tube). Distribute evenly with a sterile spreader until all liquid
|
| 196 |
+
has been absorbed by the agar. This usually takes 1-2 minutes.
|
| 197 |
+
|
| 198 |
+
Critical: Be careful not to rip or shred the agar. Do so by gentle spreading.
|
| 199 |
+
Some spreaders have a sharp edge that can scrape plates more abrasively at a
|
| 200 |
+
certain angle.
|
| 201 |
+
|
| 202 |
+
8. Incubate plates upside down at 30 ℃ overnight.
|
| 203 |
+
|
| 204 |
+
Critical: Ensure at this stage that no unabsorbed media drips onto the lid.
|
| 205 |
+
Let plates remain agar side up until dried before overnight incubation if
|
| 206 |
+
needed.
|
| 207 |
+
|
| 208 |
+
9. Place 100 mL sterile LB at 4 ℃.
|
| 209 |
+
|
| 210 |
+
Day 2 (morning)
|
| 211 |
+
|
| 212 |
+
1. Before beginning, prechill at least four conical tubes on ice and ensure
|
| 213 |
+
access to sterile scraper and cold LB.
|
| 214 |
+
|
| 215 |
+
💡 PRO TIP: Prepare one to two more conical tubes on ice in case you need to
|
| 216 |
+
spread out the harvested cells further than four Maxipreps worth.
|
| 217 |
+
|
| 218 |
+
2. Count colonies on the most dilute Petri dish.
|
| 219 |
+
|
| 220 |
+
Total colony yield = count × 100 × 100 × 100 ÷ 0.1
|
| 221 |
+
|
| 222 |
+
This number should be at least 1000X greater than number of perturbations in
|
| 223 |
+
library.
|
| 224 |
+
|
| 225 |
+
Example: At least 10 colonies on the most diluted plate for 1000x coverage of
|
| 226 |
+
a library of 100,000 plasmids.
|
| 227 |
+
|
| 228 |
+
Colonies may appear small and require extra incubation time in order to be
|
| 229 |
+
enumerated accurately.
|
| 230 |
+
|
| 231 |
+
Frequently the number of colonies can be too great to count. Ideally,
|
| 232 |
+
dilutions would have been sufficient to enumerate single colonies but as long
|
| 233 |
+
as one can ensure more than the required colonies are present. If colonies are
|
| 234 |
+
not present on the most dilute plate, count the second plate (ie. the 1:10,000
|
| 235 |
+
dilution).
|
| 236 |
+
|
| 237 |
+
3. After 12-18 hours of growth, use spreader and cold LB to scrape bioassay
|
| 238 |
+
plates and remove bacteria.
|
| 239 |
+
|
| 240 |
+
• Use one scraper for all plates.
|
| 241 |
+
• Use two 10 mL pipettes (one for dispensing cold LB and one for removing LB
|
| 242 |
+
containing bacteria from plate).
|
| 243 |
+
|
| 244 |
+
💡 PRO TIP: Scraped bacteria in LB can clog the pipette either mix gently up
|
| 245 |
+
and down avoiding introducing bubbles or pour off plates into conical tubes as
|
| 246 |
+
needed.
|
| 247 |
+
|
| 248 |
+
4. Add 10 mL cold LB to each plate for each scrape and use spreader to scrape
|
| 249 |
+
plates.
|
| 250 |
+
|
| 251 |
+
💡 PRO TIP: Pushing motion is better than pulling motion. Take care not to
|
| 252 |
+
split or gouge agar during the scraping process.
|
| 253 |
+
|
| 254 |
+
5. Add each scrape into a 50 mL conical tube on ice pooling the scrapings of two
|
| 255 |
+
plates into each tube. Keep each tube on ice while scraping.
|
| 256 |
+
|
| 257 |
+
6. Repeat addition of 10 mL cold LB and scrape for each plate until agar is clear
|
| 258 |
+
(all bacteria have been removed). This should produce 25 mL cold LB-bacteria
|
| 259 |
+
per plate.
|
| 260 |
+
|
| 261 |
+
7. Centrifuge tubes (4000 G, 4 ℃, 15 minutes) to pellet bacteria.
|
| 262 |
+
|
| 263 |
+
8. Decant LB and weigh pellet. The total weight of each pellet should be ~1-2 g.
|
| 264 |
+
|
| 265 |
+
💡 PRO TIP: Make sure to weigh the empty tube beforehand! If you've already
|
| 266 |
+
gone too far, weigh an identical empty tube. It will be close enough for the
|
| 267 |
+
purpose of a Maxiprep.
|
| 268 |
+
|
| 269 |
+
9. Purify plasmid DNA using the Qiagen HiSpeed Maxi Kit (one conical is its own
|
| 270 |
+
Maxiprep).
|
| 271 |
+
|
| 272 |
+
Critical: Do not freeze pellets for later purification. Immediately purify them!
|
| 273 |
+
Commercial Maxipreps rely on incremental, ordered cell lysis. E. coli cells
|
| 274 |
+
are subject to lysis by freeze-thaw if not suspended in cryoprotectant like
|
| 275 |
+
Glycerol or DMSO solutions.
|
| 276 |
+
|
| 277 |
+
10. Quantify the individual Maxipreps by Nanodrop, Picogreen, or Qubit.
|
| 278 |
+
|
| 279 |
+
Each different DNA measurement type can report slightly different
|
| 280 |
+
concentrations of DNA. In our hands fluorescent dye methods tend to report
|
| 281 |
+
lower values than Nanodrop, although most protocols have been designed with
|
| 282 |
+
Nanodrop as the quantification method.
|
| 283 |
+
|
| 284 |
+
11. If all Maxipreps appear to contain sufficient DNA for use, pool samples, and
|
| 285 |
+
continue with analysis.
|
| 286 |
+
|
| 287 |
+
"Sufficient" DNA will vary upon intended use. Typically yields range from
|
| 288 |
+
several hundred micrograms to a milligram of total plasmid DNA.
|
| 289 |
+
|
| 290 |
+
|
| 291 |
+
TIPS AND TROUBLESHOOTING
|
| 292 |
+
================================================================================
|
| 293 |
+
|
| 294 |
+
What do I do if my transformation efficiency is not high enough?
|
| 295 |
+
|
| 296 |
+
Repeat the experiment with more cells, more DNA, gentler practices, and colder
|
| 297 |
+
reagents (not including the recovery media!). Do not proceed with Maxipreps or
|
| 298 |
+
NGS until adequate transformation efficiency is obtained. Ensure that
|
| 299 |
+
electrocompetent cells are being used. Chemically competent cells will not
|
| 300 |
+
provide adequate transformation efficiency! Ensure that no arcing is taking place
|
| 301 |
+
during electroporation. Arcing would manifest as a loud pop often accompanied by
|
| 302 |
+
some light in the cuvette during the electroporation step.
|
| 303 |
+
|
| 304 |
+
I got a heavy recombined band by digest.
|
| 305 |
+
|
| 306 |
+
Recombination is thought to be in part related to selective pressure. These
|
| 307 |
+
recombined plasmids are much smaller and are a smaller nutritional burden on the
|
| 308 |
+
bacteria. Bacteria that contain a recombinant plasmid likely grow faster in the
|
| 309 |
+
closed system of a crowded plate or culture. Try restricting growth to the bare
|
| 310 |
+
minimum by growing at 30 ℃, limiting growth time further, or potentially
|
| 311 |
+
spreading less bacteria on a given plate (example: by increasing the total number
|
| 312 |
+
of bioassay plates used). Scaling up the experiment using a Gigaprep can be used
|
| 313 |
+
to obtain sufficient intact pooled library even in the face of a recombined
|
| 314 |
+
fraction but care must be taken to perform adequate NGS based QC to ensure no
|
| 315 |
+
change in representation compared to the pre-amplified stock. A last option is
|
| 316 |
+
to perform a gel extraction of either the original sample or the amplified
|
| 317 |
+
sample, followed by reamplification of the DNA, but please note that NGS should
|
| 318 |
+
be performed to ensure representation is maintained.
|
| 319 |
+
|
| 320 |
+
Maxipreps - Less is more:
|
| 321 |
+
|
| 322 |
+
Do not overload the Maxipreps as yield can dramatically plateau and sometimes fall
|
| 323 |
+
off entirely if the column or reagents are significantly overloaded. If you find
|
| 324 |
+
that your pellet outstrips the capacity listed in the Maxiprep protocol, scale
|
| 325 |
+
the reagent volume and column number as needed. The use of Mega or Gigapreps is
|
| 326 |
+
acceptable when scaling up or reducing the number of tandem purifications. Consult
|
| 327 |
+
the manufacturers handbooks for appropriate volumes and numbers of tandem
|
| 328 |
+
purifications.
|
| 329 |
+
|
| 330 |
+
Visit our Help Center to get details on how to process your Addgene pooled library
|
Biomni/biomni/tool/protocols/addgene/Addgene_ Centrifugation.txt
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
PROTOCOL: Centrifugation
|
| 2 |
+
SOURCE: https://www.addgene.org/protocols/centrifugation/
|
| 3 |
+
================================================================================
|
| 4 |
+
|
| 5 |
+
INTRODUCTION
|
| 6 |
+
================================================================================
|
| 7 |
+
|
| 8 |
+
A centrifuge is a common piece of laboratory equipment used to separate different
|
| 9 |
+
components in a liquid sample. It achieves this by using centrifugal force, which
|
| 10 |
+
is generated by spinning the sample at a high speed. Being able to separate solids
|
| 11 |
+
from a liquid or separate liquids of different densities is essential to many
|
| 12 |
+
different experimental procedures, such as minipreps and RNA extractions. Plus,
|
| 13 |
+
centrifuges are useful for simply collecting liquid to the bottom of a tube.
|
| 14 |
+
|
| 15 |
+
You will likely encounter several different types of centrifuges that can
|
| 16 |
+
accommodate different sized containers, spin at different speeds, or keep samples
|
| 17 |
+
at specific temperatures. This protocol will cover the general procedure and
|
| 18 |
+
features to keep in mind when using any centrifuge. However, each centrifuge may
|
| 19 |
+
have specific instructions so be sure to check in with someone familiar with your
|
| 20 |
+
lab's instrument before use.
|
| 21 |
+
|
| 22 |
+
Last Update: September 2022
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
EQUIPMENT
|
| 26 |
+
================================================================================
|
| 27 |
+
|
| 28 |
+
• Centrifuge
|
| 29 |
+
• Microfuge tubes or other suitable container
|
| 30 |
+
• Personal protective equipment (PPE) appropriate for the biosafety level of the
|
| 31 |
+
lab space
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
REAGENTS
|
| 35 |
+
================================================================================
|
| 36 |
+
|
| 37 |
+
• Sample to be centrifuged
|
| 38 |
+
• Water
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
BACKGROUND INFORMATION
|
| 42 |
+
================================================================================
|
| 43 |
+
|
| 44 |
+
Types and Parts
|
| 45 |
+
|
| 46 |
+
There are several types of centrifuges:
|
| 47 |
+
|
| 48 |
+
• Mini or Tabletop Centrifuges: Sit on your benchtop and typically hold the
|
| 49 |
+
common 1.5 mL microfuge tubes used in labs, though some larger models can hold
|
| 50 |
+
larger conical tubes. Depending on the centrifuge their speed ranges can vary,
|
| 51 |
+
but are typically lower than some other centrifuge types.
|
| 52 |
+
|
| 53 |
+
• Floor Centrifuges: Sit on the floor and can be about bench height. They often
|
| 54 |
+
spin at similar speeds to their smaller cousins, but can hold much larger
|
| 55 |
+
containers.
|
| 56 |
+
|
| 57 |
+
• Ultracentrifuges: Also generally floor sized centrifuges that can hold larger
|
| 58 |
+
containers, but they can also rotate at much higher speeds and are used for
|
| 59 |
+
more specialized techniques.
|
| 60 |
+
|
| 61 |
+
Regardless of the type of centrifuge you use, most will have essentially the same
|
| 62 |
+
components. The photo to the left shows a front view of an open tabletop
|
| 63 |
+
microcentrifuge with the lid open, the rotor with microfuge tubes in place, and
|
| 64 |
+
the control panel where you can set the time and speed needed for your experiment.
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
PROCEDURE
|
| 68 |
+
================================================================================
|
| 69 |
+
|
| 70 |
+
How to Centrifuge
|
| 71 |
+
|
| 72 |
+
Now that you know the different parts of a centrifuge, you're ready to begin using
|
| 73 |
+
the centrifuge.
|
| 74 |
+
|
| 75 |
+
1. Determine the type of centrifuge needed. This decision should be based on the
|
| 76 |
+
size of tubes you are using and the speed at which you need to spin your
|
| 77 |
+
samples. For example, spinning down samples in 1.5 mL microfuge tubes at
|
| 78 |
+
10,000 rpm would require a tabletop microcentrifuge like the one in the picture
|
| 79 |
+
above.
|
| 80 |
+
|
| 81 |
+
2. Wear PPE appropriate for the lab space in which you are working. Even if your
|
| 82 |
+
samples may not require specific PPE, you never know what else has been placed
|
| 83 |
+
in the centrifuge before you and may still be on the equipment.
|
| 84 |
+
|
| 85 |
+
3. Before using the centrifuge for your samples, ensure that the centrifuge is
|
| 86 |
+
clean and that everything appears to be working smoothly.
|
| 87 |
+
|
| 88 |
+
4. Place your sample tubes into the rotor so that they are distributed evenly
|
| 89 |
+
around the center (see image to right). Even distribution ensures that the
|
| 90 |
+
centrifuge is balanced. Using the centrifuge in an unbalanced state can damage
|
| 91 |
+
the centrifuge and be dangerous for the user. If you do not have a balanced
|
| 92 |
+
number of samples, you may need to add a blank. Blanks are often an extra
|
| 93 |
+
tube filled with water to the same volume as your samples. If your samples are
|
| 94 |
+
significantly higher density than water, then you may need to fill the blank
|
| 95 |
+
based on weight instead of volume.
|
| 96 |
+
|
| 97 |
+
💡 PRO TIP: For microfuge tubes, place them with the lid tabs pointing up or
|
| 98 |
+
out of the centrifuge so that the pellets form in approximately the same place
|
| 99 |
+
in each sample.
|
| 100 |
+
|
| 101 |
+
5. Place the centrifuge's internal lid on the rotor (if it has one) and then
|
| 102 |
+
close the external lid.
|
| 103 |
+
|
| 104 |
+
6. Adjust the centrifuge settings according to speed and time (and temperature, if
|
| 105 |
+
applicable) listed in your protocol.
|
| 106 |
+
|
| 107 |
+
💡 PRO TIP: Spin speed is often given as Relative Centrifugal Force (RCF) or
|
| 108 |
+
Revolutions Per Minute (RPM), these are not the same units and are not
|
| 109 |
+
directly interchangeable. If you need to convert between the two, use a
|
| 110 |
+
conversion calculator or chart like the G Force calculator.
|
| 111 |
+
|
| 112 |
+
7. The centrifuge should come up to speed with a pleasant hum. If you hear loud
|
| 113 |
+
noises or the centrifuge begins to wobble or shake, this could indicate an
|
| 114 |
+
unbalanced or improperly loaded centrifuge. Immediately stop the centrifuge
|
| 115 |
+
and investigate the issue.
|
| 116 |
+
|
| 117 |
+
8. When you are finished spinning your samples, carefully remove them from the
|
| 118 |
+
centrifuge so as to not dislodge any pellets or re-mix liquids. In cases where
|
| 119 |
+
you are separating solids from a liquid, pellets represent the solids in your
|
| 120 |
+
sample while the liquid portion is known as the supernatant. Depending on your
|
| 121 |
+
experiment, you may be required to save the pellet, the supernatant, or both.
|
| 122 |
+
|
| 123 |
+
|
| 124 |
+
CONCLUSION
|
| 125 |
+
================================================================================
|
| 126 |
+
|
| 127 |
+
Centrifuges are important tools for many different protocols. Improper use of a
|
| 128 |
+
centrifuge can damage the equipment, your samples, or you, so be sure to keep
|
| 129 |
+
your centrifuge clean and balanced.
|
Biomni/biomni/tool/protocols/addgene/Addgene_ Gibson Assembly Protocol.txt
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
PROTOCOL: Gibson Assembly Protocol
|
| 2 |
+
SOURCE: https://www.addgene.org/protocols/gibson-assembly/
|
| 3 |
+
================================================================================
|
| 4 |
+
|
| 5 |
+
SUMMARY
|
| 6 |
+
================================================================================
|
| 7 |
+
|
| 8 |
+
In 2009 Dr. Daniel Gibson and colleagues at the J. Craig Venter Institute
|
| 9 |
+
developed a novel method for the easy assembly of multiple linear DNA fragments
|
| 10 |
+
(Gibson et al., 2009). Regardless of fragment length or end compatibility,
|
| 11 |
+
multiple overlapping DNA fragments can be joined in a single isothermal reaction.
|
| 12 |
+
With the activities of three different enzymes, the product of a Gibson Assembly is
|
| 13 |
+
a fully ligated double-stranded DNA molecule. This has proven to be an efficient
|
| 14 |
+
and effective method for the assembly of plasmids, and molecular biologists now use
|
| 15 |
+
this method extensively.
|
| 16 |
+
|
| 17 |
+
Why Gibson Cloning?
|
| 18 |
+
|
| 19 |
+
• No need for specific restriction sites. Join almost any two fragments regardless
|
| 20 |
+
of sequence.
|
| 21 |
+
• No scar between joined fragments.
|
| 22 |
+
• Fewer steps. One tube reaction.
|
| 23 |
+
• Can combine many DNA fragments at once.
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
PROCEDURE
|
| 27 |
+
================================================================================
|
| 28 |
+
|
| 29 |
+
1. Design your plasmid and order primers (see figure to the right).
|
| 30 |
+
|
| 31 |
+
When designing your plasmid, think about what DNA segments you will need to
|
| 32 |
+
join to create your final plasmid. Adjacent segments should have identical
|
| 33 |
+
sequences on the ends (sequences A and B in the figures). These identical
|
| 34 |
+
sequences can be created via PCR with primers that contain a 5′ end that is
|
| 35 |
+
identical to an adjacent segment and a 3′ end that anneals to the target
|
| 36 |
+
sequence.
|
| 37 |
+
|
| 38 |
+
One strategy is to order primers that are 60 bp long, with 30 bp matching the
|
| 39 |
+
end of the adjacent fragment and 30 bp annealing to the target sequence.
|
| 40 |
+
|
| 41 |
+
Avoid strong secondary structures in the homology region. Hairpins in this
|
| 42 |
+
region can significantly reduce the efficiency of two homologous ends
|
| 43 |
+
annealing.
|
| 44 |
+
|
| 45 |
+
💡 PRO TIP: Cut down on background and enrich for correctly assembled plasmids
|
| 46 |
+
by designing primers to split an antibiotic resistance gene to effectively
|
| 47 |
+
create an extra part, one part has half of the antibiotic gene and the adjacent
|
| 48 |
+
part has the other half. Any colonies should have at least the correctly
|
| 49 |
+
assembled antibiotic gene. This trick can also enable replacement of "inverse
|
| 50 |
+
PCR" reactions with a two-part Gibson reaction if you're only making a small
|
| 51 |
+
change in a plasmid (such as point mutations).
|
| 52 |
+
|
| 53 |
+
2. Generate DNA segments by PCR.
|
| 54 |
+
|
| 55 |
+
3. Run PCR product on an agarose gel to check for size and yield. If there are
|
| 56 |
+
significant amounts of undesired product, gel-purify DNA segments. Otherwise,
|
| 57 |
+
PCR purification or even the raw PCR mix can work fine in an assembly if you
|
| 58 |
+
want to save time.
|
| 59 |
+
|
| 60 |
+
4. Working on ice, combine segments in the Gibson Assembly Reaction.
|
| 61 |
+
|
| 62 |
+
💡 PRO TIP: Yields will be best when the DNA fragments are present in equimolar
|
| 63 |
+
concentrations.
|
| 64 |
+
|
| 65 |
+
The Gibson Assembly master mix (isothermal reaction mix) consists of three
|
| 66 |
+
different enzymes within a single buffer mixture and an optional SSB protein to
|
| 67 |
+
improve accuracy and efficiency. Each enzyme has a specific and unique function
|
| 68 |
+
for the reaction:
|
| 69 |
+
|
| 70 |
+
• T5 Exonuclease: creates single-strand DNA 3' overhangs by chewing back from
|
| 71 |
+
the DNA 5' end. Complementary DNA fragments can subsequently anneal to each
|
| 72 |
+
other.
|
| 73 |
+
|
| 74 |
+
• Phusion High-Fidelity DNA Polymerase: incorporates nucleotides to "fill in"
|
| 75 |
+
the gaps in the annealed DNA fragments.
|
| 76 |
+
|
| 77 |
+
• Taq DNA Ligase: covalently joins the annealed complementary DNA fragments,
|
| 78 |
+
removing any nicks and creating a contiguous DNA fragment.
|
| 79 |
+
|
| 80 |
+
💡 PRO TIP: Add Extreme Thermostable Single-Stranded DNA-Binding protein (ET
|
| 81 |
+
SSB) to the isothermal reaction mix. ET SSB protects 3' ssDNA ends from the
|
| 82 |
+
ssDNA-specific endonuclease activity of T5 Exonuclease and furthermore reduces
|
| 83 |
+
secondary structure of ssDNA. (Rabe & Cepko, 2020).
|
| 84 |
+
|
| 85 |
+
5. Incubate the mix for 1 hour at 50 °C or follow manufacturer's instructions.
|
| 86 |
+
You can purchase master mix or make your own.
|
| 87 |
+
|
| 88 |
+
6. Transform bacteria with the DNA and screen for the correct plasmid product by
|
| 89 |
+
restriction digest.
|
| 90 |
+
|
| 91 |
+
7. Sequence the important regions of your final plasmid, particularly the seams
|
| 92 |
+
between the assembled parts.
|
| 93 |
+
|
| 94 |
+
|
| 95 |
+
TIPS AND TROUBLESHOOTING
|
| 96 |
+
================================================================================
|
| 97 |
+
|
| 98 |
+
"Stitching" fragments together using oligos
|
| 99 |
+
|
| 100 |
+
When you need intervening sequence between two PCR products, one method is to
|
| 101 |
+
"stitch" together several oligos. This technique is especially useful for
|
| 102 |
+
introducing promoters, terminators, and other short sequences into the assembly
|
| 103 |
+
and is used when the part to be inserted is too long to include on overlapping PCR
|
| 104 |
+
primers (>60 bp) but too short to make its own part (<150 bp).
|
| 105 |
+
|
| 106 |
+
💡 PRO TIP: Please note that the way to design the "stitching" primers and the
|
| 107 |
+
amounts of primers to include in the Gibson reaction are different than with
|
| 108 |
+
normal PCR primers (Gibson et al., 2010).
|
| 109 |
+
|
| 110 |
+
Number of fragments assembled simultaneously
|
| 111 |
+
|
| 112 |
+
Multiple fragments can be assembled in one reaction. However, some labs have
|
| 113 |
+
observed a sharp decrease in success rate when assembling more than five fragments
|
| 114 |
+
at a time.
|
| 115 |
+
|
| 116 |
+
|
| 117 |
+
RESOURCES AND REFERENCES
|
| 118 |
+
================================================================================
|
| 119 |
+
|
| 120 |
+
New England Biolabs (NEB) sells DNA Assembly kits and master mixes, including
|
| 121 |
+
NEBuilder HiFi and Gibson Assembly. They also sell ET SSB. NEB has other resources,
|
| 122 |
+
such as a primer design tool. Gibson Assembly® is licensed to New England Biolabs
|
| 123 |
+
by TelesisBio.
|
| 124 |
+
|
| 125 |
+
References:
|
| 126 |
+
|
| 127 |
+
1. Gibson DG, Young L, Chuang RY, Venter JC, Hutchison CA, Smith HO. (2009).
|
| 128 |
+
Enzymatic assembly of DNA molecules up to several hundred kilobases. Nature
|
| 129 |
+
Methods, 6(5), 343–345. https://doi.org/10.1038/nmeth.1318
|
| 130 |
+
|
| 131 |
+
2. Gibson DG, Smith HO, Hutchison CA, Venter JC, Merryman C. (2010). Chemical
|
| 132 |
+
synthesis of the mouse mitochondrial genome. Nature Methods, 7(11), 901–903.
|
| 133 |
+
https://doi.org/10.1038/nmeth.1515
|
| 134 |
+
|
| 135 |
+
3. Rabe BA, Cepko C. (2020). A Simple Enhancement for Gibson Isothermal Assembly.
|
| 136 |
+
bioRxiv. https://doi.org/10.1101/2020.06.14.150979
|
Biomni/biomni/tool/protocols/addgene/Addgene_ Immunocytochemistry.txt
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
PROTOCOL: Immunocytochemistry
|
| 2 |
+
SOURCE: https://www.addgene.org/protocols/immunocytochemistry/
|
| 3 |
+
================================================================================
|
| 4 |
+
|
| 5 |
+
INTRODUCTION
|
| 6 |
+
================================================================================
|
| 7 |
+
|
| 8 |
+
Immunocytochemistry is a technique that uses antibodies to detect antigens in
|
| 9 |
+
cells. Here we describe the basic steps for fixing and labeling cells in culture
|
| 10 |
+
with a primary antibody against a target protein and a fluorescent secondary
|
| 11 |
+
antibody. This protocol outlines the steps for fixing and labeling HeLa cells for
|
| 12 |
+
a target protein using the formaldehyde fixation method. The protocol may need to
|
| 13 |
+
be optimized for different cells, target proteins, etc.
|
| 14 |
+
|
| 15 |
+
Last Update: January 20, 2022
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
WORKFLOW TIMELINE
|
| 19 |
+
================================================================================
|
| 20 |
+
|
| 21 |
+
Day 1: Seed cells
|
| 22 |
+
|
| 23 |
+
Day 3-4: Fix and label cells
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
EQUIPMENT
|
| 27 |
+
================================================================================
|
| 28 |
+
|
| 29 |
+
• Pipette controller
|
| 30 |
+
• Pipette tips and pipettes
|
| 31 |
+
• Rocking platform
|
| 32 |
+
• Tweezers
|
| 33 |
+
• Fluorescent microscope
|
| 34 |
+
• 0.5–10 µL single channel pipette
|
| 35 |
+
• 2–20 µL single channel pipette
|
| 36 |
+
• 20–200 µL single channel pipette
|
| 37 |
+
• 200–1000 µL single channel pipette
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
REAGENTS
|
| 41 |
+
================================================================================
|
| 42 |
+
|
| 43 |
+
• 1X PBS
|
| 44 |
+
• Microcentrifuge tubes
|
| 45 |
+
• Sterile Poly-D-lysine coated coverslips
|
| 46 |
+
• HeLa cells
|
| 47 |
+
• 24-well plate
|
| 48 |
+
• 4% Paraformaldehyde
|
| 49 |
+
• 5 mg/mL 4′,6-diamidino-2-phenylindole (DAPI)
|
| 50 |
+
• Bovine serum albumin (BSA)
|
| 51 |
+
• Triton X-100
|
| 52 |
+
• Primary antibody
|
| 53 |
+
• Secondary antibody
|
| 54 |
+
• Deionized water
|
| 55 |
+
• Microscope slide
|
| 56 |
+
• Anti-fade mounting medium
|
| 57 |
+
• Laboratory wipes
|
| 58 |
+
• 15 mL conical tubes
|
| 59 |
+
• 50 mL conical tubes
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
BEFORE STARTING
|
| 63 |
+
================================================================================
|
| 64 |
+
|
| 65 |
+
• Refer to the manufacturer's instructions for additional information specific to
|
| 66 |
+
your antibodies, such as antibody concentrations, incubation times, and
|
| 67 |
+
recommended compatible reagents.
|
| 68 |
+
|
| 69 |
+
• Secondary antibodies must match the host species of the primary antibody. For
|
| 70 |
+
example, use an anti-mouse secondary antibody for primary antibodies raised in
|
| 71 |
+
a mouse.
|
| 72 |
+
|
| 73 |
+
|
| 74 |
+
REAGENT PREPARATION
|
| 75 |
+
================================================================================
|
| 76 |
+
|
| 77 |
+
Permeabilization buffer:
|
| 78 |
+
Dilute 20 µL of Triton X-100 in 10 mL PBS.
|
| 79 |
+
|
| 80 |
+
Blocking buffer:
|
| 81 |
+
Dilute 0.5 g BSA and 30 µL Triton X-100 in 10 mL PBS.
|
| 82 |
+
|
| 83 |
+
Antibody dilution buffer:
|
| 84 |
+
Dilute 0.5 g BSA and 150 µL Triton X-100 in 50 mL PBS.
|
| 85 |
+
|
| 86 |
+
300 nM DAPI working solution:
|
| 87 |
+
1. Prepare a 300 µM DAPI stock solution by diluting 2.1 µL of the 5 mg/mL DAPI
|
| 88 |
+
solution to 100 µL PBS. Protect from light.
|
| 89 |
+
|
| 90 |
+
2. Prepare a 300 nM DAPI working solution by diluting 5 µL of the 300 µM DAPI
|
| 91 |
+
stock solution into 5 mL PBS. Protect from light.
|
| 92 |
+
|
| 93 |
+
|
| 94 |
+
PROCEDURE
|
| 95 |
+
================================================================================
|
| 96 |
+
|
| 97 |
+
Section 1: Seeding cells
|
| 98 |
+
|
| 99 |
+
1. Place a sterile poly-D-lysine coated coverslip in each well of a 24-well cell
|
| 100 |
+
culture treated plate.
|
| 101 |
+
|
| 102 |
+
2. Seed 5 x 10³ HeLa cells per well.
|
| 103 |
+
|
| 104 |
+
3. Allow the HeLa cells to grow to the desired density before labeling.
|
| 105 |
+
|
| 106 |
+
Section 2: Fixing and permeabilizing cells
|
| 107 |
+
|
| 108 |
+
1. Gently aspirate the media from the 24-well plate.
|
| 109 |
+
|
| 110 |
+
2. Wash each well with 500 µL of PBS, remove the wash, and dispose of it in an
|
| 111 |
+
appropriate waste container.
|
| 112 |
+
|
| 113 |
+
3. Fix each well with 500 µL of cold 4% paraformaldehyde in PBS on ice for 15
|
| 114 |
+
min.
|
| 115 |
+
|
| 116 |
+
💡 PRO TIP: While 4% Paraformaldehyde fixation works well for many target
|
| 117 |
+
proteins, it may not be the best fixation method for all. Alternative fixation
|
| 118 |
+
methods such as methanol or acetone may be better for some applications.
|
| 119 |
+
|
| 120 |
+
4. Remove the paraformaldehyde and follow your institution's laboratory safety
|
| 121 |
+
guidelines for disposing of waste in the appropriate container.
|
| 122 |
+
|
| 123 |
+
5. Wash 3x for 5 min in 500 µL PBS on a rocking platform.
|
| 124 |
+
|
| 125 |
+
6. Permeabilize cells for 10 min at room temperature (RT) on a rocking platform
|
| 126 |
+
in 500 µL permeabilization buffer.
|
| 127 |
+
|
| 128 |
+
7. Remove the permeabilization buffer and dispose of it in an appropriate waste
|
| 129 |
+
container.
|
| 130 |
+
|
| 131 |
+
8. Wash 3x for 5 min in 500 µL PBS on a rocking platform.
|
| 132 |
+
|
| 133 |
+
Section 3: Labeling with antibody
|
| 134 |
+
|
| 135 |
+
1. Block for 20 min at RT on a rocking platform in 500 µL blocking buffer.
|
| 136 |
+
|
| 137 |
+
2. Remove the blocking buffer and dispose of it in an appropriate waste
|
| 138 |
+
container.
|
| 139 |
+
|
| 140 |
+
3. Dilute the primary antibody to the desired concentration in antibody dilution
|
| 141 |
+
buffer.
|
| 142 |
+
|
| 143 |
+
💡 PRO TIP: The optimal antibody concentration will vary but generally ranges
|
| 144 |
+
from 1-10 µg/mL.
|
| 145 |
+
|
| 146 |
+
4. Add 500 µL of the diluted antibody to the wells and incubate 2 h at RT.
|
| 147 |
+
|
| 148 |
+
5. Remove the primary antibody and dispose of it in an appropriate waste
|
| 149 |
+
container.
|
| 150 |
+
|
| 151 |
+
6. Wash 3x for 5 min in 500 µL PBS on a rocking platform.
|
| 152 |
+
|
| 153 |
+
7. Dilute the fluorescently-labeled secondary antibody to the desired
|
| 154 |
+
concentration in antibody dilution buffer.
|
| 155 |
+
|
| 156 |
+
💡 PRO TIP: The optimal antibody concentration will vary but generally ranges
|
| 157 |
+
from 1-10 µg/mL.
|
| 158 |
+
|
| 159 |
+
8. Add 500 µL fluorescently-labeled secondary antibody to the wells and
|
| 160 |
+
incubate 30 min at RT in the dark.
|
| 161 |
+
|
| 162 |
+
💡 PRO TIP: The plate can be wrapped in foil to block light.
|
| 163 |
+
|
| 164 |
+
9. Remove the secondary antibody and dispose of it in an appropriate waste
|
| 165 |
+
container.
|
| 166 |
+
|
| 167 |
+
10. Wash 3x for 5 min in 500 µL PBS on a rocking platform.
|
| 168 |
+
|
| 169 |
+
11. (Optional) Counterstain nuclei with 500 µL of 300 nM DAPI working solution
|
| 170 |
+
for 10 min at RT in the dark.
|
| 171 |
+
|
| 172 |
+
12. Remove the DAPI and dispose of it in an appropriate waste container.
|
| 173 |
+
|
| 174 |
+
13. Wash 3x for 5 min in 500 µL PBS on a rocking platform.
|
| 175 |
+
|
| 176 |
+
14. Use tweezers to gently remove the coverslip.
|
| 177 |
+
|
| 178 |
+
15. Blot the coverslip with a laboratory wipe to remove excess liquid.
|
| 179 |
+
|
| 180 |
+
16. Add 1 drop of anti-fade mounting medium to the microscope slide.
|
| 181 |
+
|
| 182 |
+
17. Gently place the coverslip on the microscope slide with the cell side facing
|
| 183 |
+
down.
|
| 184 |
+
|
| 185 |
+
18. Observe the cell labeling on a microscope with appropriate fluorescent
|
| 186 |
+
filters.
|
| 187 |
+
|
| 188 |
+
|
| 189 |
+
TIPS AND TROUBLESHOOTING
|
| 190 |
+
================================================================================
|
| 191 |
+
|
| 192 |
+
• The optimal fixation method will vary depending on the sample type and the
|
| 193 |
+
protein of interest. You may need to try a variety of fixation methods to find
|
| 194 |
+
the best conditions for your target.
|
| 195 |
+
|
| 196 |
+
• The optimal antibody concentration will vary between antibodies. Review the
|
| 197 |
+
manufacturer's instructions before starting your experiment and consider
|
| 198 |
+
titrating your antibody to determine the optimal dose.
|
| 199 |
+
|
| 200 |
+
• To ensure that your antibody is both functioning as expected and specific,
|
| 201 |
+
include a positive control sample that you know expresses the protein, such as
|
| 202 |
+
cells transfected with a plasmid to express the protein of interest, and a
|
| 203 |
+
negative control sample such as cells that do not express the protein of
|
| 204 |
+
interest.
|
Biomni/biomni/tool/protocols/addgene/Addgene_ Lab Safety for Biosafety Levels One and Two.txt
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
PROTOCOL: Lab Safety for Biosafety Levels One and Two
|
| 2 |
+
SOURCE: https://www.addgene.org/protocols/lab-safety/
|
| 3 |
+
================================================================================
|
| 4 |
+
|
| 5 |
+
INTRODUCTION
|
| 6 |
+
================================================================================
|
| 7 |
+
|
| 8 |
+
There are four biosafety levels. This protocol provides information for both
|
| 9 |
+
biosafety level 1 (BSL-1) and biosafety level 2 (BSL-2). The purpose of the four
|
| 10 |
+
levels is to distinguish between different types of hazards and to provide
|
| 11 |
+
protective measures for each level, as each level has different safety
|
| 12 |
+
requirements. BSL-1 is designated for those working with microbes that don't cause
|
| 13 |
+
disease in healthy humans, for example, non-pathogenic E. coli. BSL-2 is for labs
|
| 14 |
+
that work with pathogens including organisms such as Staphylococcus aureus or
|
| 15 |
+
Vibrio cholerae. BSL-2 includes all of the precautions needed in BSL-1, along with
|
| 16 |
+
additional precautions to prevent injuries, ingestion, and exposures to hazardous
|
| 17 |
+
materials.
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
EQUIPMENT
|
| 21 |
+
================================================================================
|
| 22 |
+
|
| 23 |
+
• Lab coat
|
| 24 |
+
• Close-toed shoes
|
| 25 |
+
• Gloves
|
| 26 |
+
• Eye protection or face shields
|
| 27 |
+
• Eye wash
|
| 28 |
+
• Safety shower
|
| 29 |
+
• Sharps container
|
| 30 |
+
• Biohazard waste container
|
| 31 |
+
• Fire blanket
|
| 32 |
+
• Fire extinguisher
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
GUIDELINES
|
| 36 |
+
================================================================================
|
| 37 |
+
|
| 38 |
+
BSL-1 Guidelines
|
| 39 |
+
|
| 40 |
+
Before You Work
|
| 41 |
+
|
| 42 |
+
1. Right after entering the lab, put on the proper personal protective equipment
|
| 43 |
+
(PPE) and wear it the whole time you are working in the lab.
|
| 44 |
+
|
| 45 |
+
2. Do not eat, drink, chew gum, or apply makeup in the laboratory.
|
| 46 |
+
|
| 47 |
+
3. Before you start your experiment, make sure your workspace is clean and
|
| 48 |
+
uncluttered. Disinfect your workspace with appropriate materials. For example,
|
| 49 |
+
you may use 70% ethanol, quaternary ammonium, or bleach solutions. Ask your lab
|
| 50 |
+
supervisor what is available and the appropriate contact times for each agent.
|
| 51 |
+
Make sure you have enough space to work at your lab bench.
|
| 52 |
+
|
| 53 |
+
4. It's possible that while working, you may accidentally come into contact with
|
| 54 |
+
hazardous materials. A sink, eyewash station, safety shower, fire blanket, and
|
| 55 |
+
extinguisher are also required to be present in the room. Make sure that you
|
| 56 |
+
know where these are located before you start.
|
| 57 |
+
|
| 58 |
+
5. Use the eyewash station if unwanted or biohazardous materials are splashed onto
|
| 59 |
+
your face and/or get into your eyes.
|
| 60 |
+
|
| 61 |
+
6. Wash your hands before and after working in the lab.
|
| 62 |
+
|
| 63 |
+
7. Ensure that a designated chemical waste accumulation site is present, and that
|
| 64 |
+
you have received hazardous waste safety training before starting the work.
|
| 65 |
+
Before working with chemicals, first review their material safety data sheets
|
| 66 |
+
(MSDS).
|
| 67 |
+
|
| 68 |
+
While You Work
|
| 69 |
+
|
| 70 |
+
1. Dispose of sharps in a designated sharps container. Sharps include anything that
|
| 71 |
+
can pierce your skin, including, but not limited to broken glass or needles.
|
| 72 |
+
Sharps containers must be thick walled, impenetrable by a needle, and must be
|
| 73 |
+
able to close securely.
|
| 74 |
+
|
| 75 |
+
2. Biohazard signs should be placed in all areas containing biohazardous materials,
|
| 76 |
+
including biohazardous waste. Dispose of waste that may be contaminated with
|
| 77 |
+
pathogens or chemicals that present a danger to people and the environment in
|
| 78 |
+
biohazard containers. Biohazardous materials are decontaminated prior to
|
| 79 |
+
disposal, commonly done with an autoclave.
|
| 80 |
+
|
| 81 |
+
3. Only mechanical pipetting should be done in the laboratory. Don't mouth pipette!
|
| 82 |
+
|
| 83 |
+
4. There may be some times when you may be working with a protocol that requires
|
| 84 |
+
shaking or mixing, which may produce aerosols or splashes. These procedures
|
| 85 |
+
should be done underneath a hood.
|
| 86 |
+
|
| 87 |
+
5. Clean any spills immediately, and decontaminate as necessary. For large spills
|
| 88 |
+
that cannot be easily cleaned, evacuate and close off the area and alert the
|
| 89 |
+
chemical hygiene officer.
|
| 90 |
+
|
| 91 |
+
BSL-2 Guidelines
|
| 92 |
+
|
| 93 |
+
Remember, the BSL-1 laboratory guidelines above are expected to be followed in
|
| 94 |
+
addition to BSL-2 guidelines below, including PPE protocols.
|
| 95 |
+
|
| 96 |
+
1. Working in a BSL-2 laboratory requires laboratory glasses in addition to coat
|
| 97 |
+
and gloves. This lab coat should not be worn outside of the BSL-2 area.
|
| 98 |
+
|
| 99 |
+
2. BSL-2 laboratories must be clearly marked as "BSL-2." The names and contact
|
| 100 |
+
information of the laboratory manager should be clearly visible in the room and
|
| 101 |
+
on the door.
|
| 102 |
+
|
| 103 |
+
3. BSL-2 centrifugation steps require an aerosol-tight lid and rotors should be
|
| 104 |
+
loaded and unloaded in a biosafety cabinet.
|
| 105 |
+
|
| 106 |
+
4. BSL-2 safety protocols require bloodborne pathogens training. It is strongly
|
| 107 |
+
recommended that anyone participating in BSL-2 work receives a hepatitis B
|
| 108 |
+
vaccination or titer prior to starting work in the laboratory.
|
| 109 |
+
|
| 110 |
+
5. For some biohazardous waste, an autoclave or other method for decontaminating
|
| 111 |
+
must be used for proper disposal. Liquid BSL-2 waste can be decontaminated in
|
| 112 |
+
a final concentration of 10% bleach for 30 minutes before pouring down the
|
| 113 |
+
drain. Solid BSL-2 waste can be collected in designated biohazardous waste
|
| 114 |
+
containers that can be autoclaved.
|
| 115 |
+
|
| 116 |
+
|
| 117 |
+
CONCLUSION
|
| 118 |
+
================================================================================
|
| 119 |
+
|
| 120 |
+
Although simple, following appropriate BSL-1 and BSL-2 protocol goes a long way.
|
| 121 |
+
It is the easiest way to ensure that you're doing your work in the safest way
|
| 122 |
+
possible. Protecting yourself and working smart in the lab is important!
|
| 123 |
+
|
| 124 |
+
|
| 125 |
+
DISCLAIMER
|
| 126 |
+
================================================================================
|
| 127 |
+
|
| 128 |
+
The SOP presented here has been designed by the Addgene nonprofit plasmid
|
| 129 |
+
repository and is being shared outside of Addgene for informational purposes only.
|
| 130 |
+
If you choose to reuse or repurpose this SOP in another location, please note that
|
| 131 |
+
you do so at your own risk; you should ensure that any local guidance is also
|
| 132 |
+
adhered to. None of the authors, contributors, administrators, or anyone else
|
| 133 |
+
associated with Addgene, can be held responsible for your use of the information
|
| 134 |
+
contained in or linked to from these web pages.
|
Biomni/biomni/tool/protocols/addgene/Addgene_ Molecular Biology Protocol - Restriction Digest of Plasmid DNA.txt
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
PROTOCOL: Restriction Digest of Plasmid DNA
|
| 2 |
+
SOURCE: https://www.addgene.org/protocols/restriction-digest/
|
| 3 |
+
================================================================================
|
| 4 |
+
|
| 5 |
+
INTRODUCTION
|
| 6 |
+
================================================================================
|
| 7 |
+
|
| 8 |
+
Restriction enzyme digestion takes advantage of naturally occurring enzymes that
|
| 9 |
+
cleave DNA at specific sequences. There are hundreds of different restriction
|
| 10 |
+
enzymes, allowing scientists to target a wide variety of recognition sequences.
|
| 11 |
+
For a list of many commonly used restriction enzymes, visit NEB.
|
| 12 |
+
|
| 13 |
+
Restriction enzyme digestion is commonly used in molecular cloning techniques,
|
| 14 |
+
such as PCR or restriction cloning. It is also used to quickly check the identity
|
| 15 |
+
of a plasmid by diagnostic digest.
|
| 16 |
+
|
| 17 |
+
Last Upload: Oct. 11th, 2016
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
EQUIPMENT
|
| 21 |
+
================================================================================
|
| 22 |
+
|
| 23 |
+
• Electrophoresis chamber
|
| 24 |
+
• Pipetman
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
REAGENTS
|
| 28 |
+
================================================================================
|
| 29 |
+
|
| 30 |
+
• Liquid DNA aliquot of your plasmid of interest (see below for recommend
|
| 31 |
+
amounts)
|
| 32 |
+
• Appropriate restriction enzyme (see manufacturer's instructions for proper
|
| 33 |
+
amount)
|
| 34 |
+
• Appropriate restriction digest buffer (see manufacturer's instructions)
|
| 35 |
+
• Gel loading dye
|
| 36 |
+
• Electrophoresis buffer
|
| 37 |
+
• Pipet tips
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
PROCEDURE
|
| 41 |
+
================================================================================
|
| 42 |
+
|
| 43 |
+
1. Select restriction enzymes to digest your plasmid.
|
| 44 |
+
|
| 45 |
+
💡 PRO TIP: To determine which restriction enzymes will cut your DNA sequence
|
| 46 |
+
(and where they will cut), use a sequence analysis program such as Addgene's
|
| 47 |
+
Sequence Analyzer.
|
| 48 |
+
|
| 49 |
+
2. Determine an appropriate reaction buffer by reading the instructions for your
|
| 50 |
+
enzyme.
|
| 51 |
+
|
| 52 |
+
💡 PRO TIP: If you are conducting a double digest (digesting with two enzymes
|
| 53 |
+
at the same time), you will need to determine the best buffer that works for
|
| 54 |
+
both of your enzymes. Most companies will have a compatibility chart, such as
|
| 55 |
+
the double digest finder tool from NEB.
|
| 56 |
+
|
| 57 |
+
3. In a 1.5mL tube combine the following:
|
| 58 |
+
• DNA
|
| 59 |
+
• Restriction Enzyme(s)
|
| 60 |
+
• Buffer
|
| 61 |
+
• BSA (if recommended by manufacturer)
|
| 62 |
+
• dH₂O up to total volume
|
| 63 |
+
|
| 64 |
+
💡 PRO TIPS:
|
| 65 |
+
• The amount of DNA that you cut depends on your application. A diagnostic
|
| 66 |
+
digest typically involves ∼500 ng of DNA, while molecular cloning often
|
| 67 |
+
requires 1 µg of DNA. The total reaction volume usually varies from 10-50 µL
|
| 68 |
+
depending on application and is largely determined by the volume of DNA to
|
| 69 |
+
be cut.
|
| 70 |
+
|
| 71 |
+
• A typical restriction digestion reaction could look like this:
|
| 72 |
+
- 1 µg DNA
|
| 73 |
+
- 1 µL of each Restriction Enzyme
|
| 74 |
+
- 3 µL 10x Buffer
|
| 75 |
+
- 3 µL 10x BSA (if recommended)
|
| 76 |
+
- x µL dH₂O (to bring total volume to 30µL)
|
| 77 |
+
|
| 78 |
+
• The amount of restriction enzyme you use for a given digestion will depend on
|
| 79 |
+
the amount of DNA you want to cut. By definition: one unit of enzyme will
|
| 80 |
+
cut 1 µg of DNA in a 50 µL reaction in 1 hour. Using this ratio, you can
|
| 81 |
+
calculate the minimal amount of enzyme for your reaction. However, keep in
|
| 82 |
+
mind that restriction enzyme activity is determined under ideal conditions
|
| 83 |
+
with very clean DNA, so using a little more enzyme is advisable. Reactions
|
| 84 |
+
are often performed with 0.2-0.5 µL of enzyme because it is difficult to
|
| 85 |
+
pipette less volume than this; 0.2-0.5 µL will likely be more enzyme than
|
| 86 |
+
you will need, but that's okay because a little more enzyme is usually
|
| 87 |
+
better.
|
| 88 |
+
|
| 89 |
+
4. Mix gently by pipetting.
|
| 90 |
+
|
| 91 |
+
5. Incubate tube at appropriate temperature (usually 37 °C) for 1 hour. Always
|
| 92 |
+
follow the manufacturer's instructions.
|
| 93 |
+
|
| 94 |
+
💡 PRO TIP: Depending on the application and the amount of DNA in the reaction,
|
| 95 |
+
incubation time can range from 45 mins to overnight. For diagnostic digests,
|
| 96 |
+
1-2 hours is often sufficient. For digests with >1 µg of DNA used for cloning,
|
| 97 |
+
it is recommended that you digest for at least 4 hours.
|
| 98 |
+
|
| 99 |
+
6. If you will be using the digested DNA for another application (such as a
|
| 100 |
+
digestion with another enzyme in a different buffer), but will not be gel
|
| 101 |
+
purifying it, you may need to inactivate the enzyme(s) following the digestion
|
| 102 |
+
reaction. This may involve incubating the reaction at 70 °C for 15 mins, or
|
| 103 |
+
purifying the DNA via a purification kit, such as a QIAGEN DNA cleanup kit.
|
| 104 |
+
See the enzyme manufacturer's instructions for more details.
|
| 105 |
+
|
| 106 |
+
7. To visualize the results of your digest, conduct gel electrophoresis.
|
| 107 |
+
|
| 108 |
+
|
| 109 |
+
TIPS AND FAQ
|
| 110 |
+
================================================================================
|
| 111 |
+
|
| 112 |
+
• Restriction enzymes MUST be placed in an ice bucket immediately after removal
|
| 113 |
+
from the -20 °C freezer because heat can cause the enzymes to denature and lose
|
| 114 |
+
their function.
|
| 115 |
+
|
| 116 |
+
• If you are having difficulty finding an enzyme that cuts your vector's
|
| 117 |
+
multiple cloning site (MCS), but does not cut your insert, you could try using
|
| 118 |
+
two different enzymes that have compatible sticky ends. See NEB's compatible
|
| 119 |
+
cohesive ends chart.
|
| 120 |
+
|
| 121 |
+
• If you cannot find compatible sticky ends, you will need to fill in the
|
| 122 |
+
overhangs and conduct a blunt end ligation. Use T4 DNA Polymerase or Klenow
|
| 123 |
+
DNA Polymerase I for 3′ overhang removal and 5′ overhang fill-in.
|
| 124 |
+
|
| 125 |
+
• If you are using blunt ends or a single enzyme to cut the vector, you will need
|
| 126 |
+
to use a phosphatase to prevent re-circularization of the vector if you are
|
| 127 |
+
cloning in an insert. CIP (calf alkaline phosphatase) or SAP (shrimp alkaline
|
| 128 |
+
phosphatase) are commonly used. Follow the manufacturer's instructions.
|
| 129 |
+
|
| 130 |
+
• If your enzyme did not cut, check to make sure that it isn't methylation
|
| 131 |
+
sensitive. Plasmids grown in Dam or Dcm methylase positive strains will be
|
| 132 |
+
resistant to cleavage at certain restriction sites. See NEB's table of
|
| 133 |
+
methylation sensitive restriction sites.
|
| 134 |
+
|
| 135 |
+
• Sometimes enzymes cut sequences which are similar, but not identical, to their
|
| 136 |
+
recognition sites. This is due to "Star Activity" and can happen for a variety
|
| 137 |
+
of reasons, including high glycerol concentration. Learn more at NEB's website
|
| 138 |
+
about star activity.
|
| 139 |
+
|
| 140 |
+
• If you are digesting a large number of plasmids with the same enzyme(s) (for
|
| 141 |
+
instance, in a diagnostic digest), you can create a "Master Mix" consisting of
|
| 142 |
+
all of the reaction components except for the DNA. Aliquot your DNA into
|
| 143 |
+
individual tubes and then add the appropriate amount of Master Mix to each
|
| 144 |
+
tube. This will save you time and ensure consistency across the reactions.
|
Biomni/biomni/tool/protocols/addgene/Addgene_ Plasmid Cloning by PCR (with Protocols).txt
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Title: Addgene: Plasmid Cloning by PCR (with Protocols)
|
| 2 |
+
URL: https://www.addgene.org/protocols/pcr-cloning/
|
| 3 |
+
================================================================================
|
| 4 |
+
|
| 5 |
+
Protocols
|
| 6 |
+
Plasmid Cloning by PCR
|
| 7 |
+
Plasmid Cloning by PCR
|
| 8 |
+
You may also like...
|
| 9 |
+
Restriction Digest of Plasmid DNA
|
| 10 |
+
DNA Ligation
|
| 11 |
+
Bacterial Transformation
|
| 12 |
+
Summary
|
| 13 |
+
PCR based cloning is incredibly versatile and allows for nearly any piece of DNA to be placed into a backbone vector of choice with minimal limitations.
|
| 14 |
+
Background
|
| 15 |
+
In its simplest form, PCR based cloning is about making a copy of a piece of DNA and at the same time adding restriction sites to the ends of that piece of DNA so that it can be easily cloned into a plasmid of interest.
|
| 16 |
+
For this example, we will describe how to copy a cDNA from one vector into a new vector that is better suited for analyzing the gene’s function. The process is shown graphically in the following cartoon, in which we are adding EcoRI and NotI sites to Your Gene of Interest (YGOI) for ligation into a recipient plasmid.
|
| 17 |
+
Designing Primers for PCR Based Cloning
|
| 18 |
+
The basic PCR primers for molecular cloning consist of:
|
| 19 |
+
Leader Sequence:
|
| 20 |
+
Extra base pairs on the 5' end of the primer assist with restriction enzyme digestion (usually 3-6bp).
|
| 21 |
+
Restriction Site:
|
| 22 |
+
Your chosen restriction site for cloning (usually 6-8bp).
|
| 23 |
+
Hybridization Sequence:
|
| 24 |
+
The region of the primer that binds to the sequence to be amplified (usually 18-21bp).
|
| 25 |
+
When selecting restriction sites, you should use a DNA analysis tool, such as
|
| 26 |
+
Addgene’s Sequence Analyzer
|
| 27 |
+
, to allow you to identify which restriction sites are present in a given sequence. You want to choose enzymes that:
|
| 28 |
+
Do not cut within your insert.
|
| 29 |
+
Are in the desired location in your recipient plasmid (usually in the Multiple Cloning Site (MCS)), but do not cut elsewhere on the plasmid.
|
| 30 |
+
Bonus: It is helpful to choose restriction enzymes that can both function in the same buffer, as this will save time later.
|
| 31 |
+
In our example, we will use EcoRI and NotI to ligate our cDNA into the recipient plasmid. Remember to insert your DNA in the correct orientation in the recipient plasmid by viewing the MCS and fusing the upstream restriction site to the forward primer and the downstream restriction site to the reverse primer.
|
| 32 |
+
Next, we need to examine the DNA sequence that we want to amplify and design primers that will bind to and replicate it. The following image shows the ends of the ORF and how these are used for primer design:
|
| 33 |
+
Because we are cloning an ORF, we want to clone from the start codon (ATG) to the stop codon (TGA, in this example). Assuming you are amplifying from plasmid DNA (rather than from genomic DNA or a cDNA library), roughly 18-21bp is usually sufficient to give specificity and to also be compatible with a standard PCR reaction. Therefore, our Forward Primer will use the sequence 5'-ATGTGGCATATCTCGAAGTAC-3' for the region that binds the ORF and we will add the EcoRI restriction site (GAATTC) to the 5’ end of this primer, making our Forward Primer 5'-GAATTCATGTGGCATATCTCGAAGTAC-3'.
|
| 34 |
+
Many restriction enzymes do not cut DNA efficiently at the end of a linear piece (see
|
| 35 |
+
(Link opens in a new window)
|
| 36 |
+
NEB
|
| 37 |
+
for more information). Thus, we recommend that you add 3-6 bases upstream of your restriction site to improve cutting efficiency. You can generally add any 6 bases, but you should ensure that the bases do not result in the formation of a hairpin structure within your primer. In our case, we will add TAAGCA, resulting in a final Forward Primer sequence of 5'-TAAGCAGAATTCATGTGGCATATCTCGAAGTAC-3'.
|
| 38 |
+
For the Reverse Primer, the design is similar, but we need to use the reverse complement to get PCR amplification. We can start similarly, taking the final 18bases of the ORF, including the stop codon (5'-TGGCATATCTCGAAGTACTGA-3'), then adding NotI (GCGGCCGC) and then TAAGCA to improve restriction enzyme digestion. This gives us a sequence of 5'-TGGCATATCTCGAAGTACTGAGCGGCCGCTAAGCA-3' (30bp with 18bp of homology to the ORF). We now need to generate the reverse-complement of this sequence so that we can successfully amplify the ORF. You can generate the reverse-complement using existing software (a quick internet search will lead you to
|
| 39 |
+
(Link opens in a new window)
|
| 40 |
+
here
|
| 41 |
+
and many others). If we put the sequence we chose for our reverse primer (5’-TGGCATATCTCGAAGTACTGAGCGGCCGCTAAGCA-3’) into this calculator we get a final Reverse Primer sequence of 5’-TGCTTAGCGGCCGCTCAGTACTTCGAGATATGCCA-3’.
|
| 42 |
+
Experimental Procedure
|
| 43 |
+
Run PCR and Purify the PCR Product
|
| 44 |
+
Run PCR to amplify your insert DNA. It is important to use a high fidelity taq polymerase to minimize mutations. The fidelity of the polymerase becomes more important the longer the expected PCR product is. You should select an annealing temperature based on the melting temperature (Tm) of the portion of the primer that hybridizes to the sequence to be amplified (the ORF in this case), not the Tm of the entire primer. If you are amplifying from a plasmid or simple template, there is very little chance for mis-priming, so you can use a pretty wide range of annealing temperatures, but you may need to increase your primer length and increase the Tm if you are trying to clone from genomic DNA, a cDNA library, or by RT-PCR.
|
| 45 |
+
Isolate your PCR product from the rest of the PCR reaction using a kit, such as the
|
| 46 |
+
(Link opens in a new window)
|
| 47 |
+
QIAquick PCR Purification Kit
|
| 48 |
+
. The PCR product is now ready for restriction digestion.
|
| 49 |
+
Digest Your DNA
|
| 50 |
+
Set up
|
| 51 |
+
restriction digests
|
| 52 |
+
for your PCR product and recipient plasmid. Because you lose some DNA during the gel purification step, it is important to digest plenty of starting material. We recommend using your entire PCR reaction and 1μg of recipient plasmid. It is also critical that as much of the recipient plasmid as possible be cut with both enzymes, and therefore it is important that the digest goes at least 4 hours and as long as overnight.
|
| 53 |
+
If you are going to use only one restriction enzyme, or enzymes that have compatible overhangs or no overhangs after digestion, you will need to use a phosphatase to prevent re-circularization of the vector. You should treat your digested recipient vector with a phosphatase prior to the ligation step or prior to the gel purification step, depending on the phosphatase you choose. CIP (calf alkaline phosphatase) or SAP (shrimp alkaline phosphatase) are commonly used. Follow the manufacturer’s instructions.
|
| 54 |
+
Isolate Your Insert and Vector by Gel Purification
|
| 55 |
+
Run your digest DNA on an
|
| 56 |
+
agarose gel
|
| 57 |
+
and conduct a
|
| 58 |
+
gel purification
|
| 59 |
+
to isolate the DNA. When running a gel for purification purposes it is important to have nice crisp bands and to have space to cut out the bands. Because of this we recommend that you use a wide gel comb, run the gel on the slower side, and skip lanes between samples. In addition to a DNA ladder standard, it is also a good idea to run an uncut sample of each vector to help with troubleshooting if your digests don’t look as you expected.
|
| 60 |
+
When cloning by PCR, it is especially important to run the product on a gel. This allows you to visualize that your PCR product is the anticipated size and that your band is strong (indicating that the PCR reaction worked and that you have a sufficient amount of DNA).
|
| 61 |
+
Once you have cut out and purified your insert and vector bands away from the gel, it is important to
|
| 62 |
+
determine the concentration of recovered DNA
|
| 63 |
+
.
|
| 64 |
+
Ligate Your Insert Into Your Vector
|
| 65 |
+
Conduct a
|
| 66 |
+
DNA Ligation
|
| 67 |
+
to fuse your insert to your recipient plasmid.
|
| 68 |
+
We recommend around 100ng of total DNA in a standard ligation reaction. You ideally want a recipient plasmid to insert ratio of approximately 1:3. Since the number of base pairs for each varies, it is difficult to calculate this based on DNA concentration alone. One method is to conduct 2 ligations for each plasmid you are trying to create, with varying ratios of recipient plasmid to insert.
|
| 69 |
+
It is also important to set up negative controls in parallel. For instance, a ligation of the recipient plasmid DNA without any insert will tell you how much background you have of uncut or self-ligating recipient plasmid backbone.
|
| 70 |
+
Transformation
|
| 71 |
+
Proceed with the
|
| 72 |
+
transformation
|
| 73 |
+
according to the manufacturer’s instructions for your competent cells.
|
| 74 |
+
For most standard cloning, you can transform 1-2μl of your ligation reaction into competent cells such as DH5alpha or TOP10. If using much less total DNA (<1ng) or if you are having trouble getting colonies, you might want to use higher competency cells. Additionally, if your final product is going to be very large (>10kb) you might want to use electro-competent cells instead of the more common chemically-competent cells.
|
| 75 |
+
The number of bacterial colonies resulting from your transformation will give you the first indication as to whether your transformation worked. Your recipient plasmid + insert plate should have significantly more colonies than the recipient plasmid alone plate. The recipient plasmid alone control will tell you your “background” level or more specifically it will tell you how many colonies you can expect on your recipient plasmid + insert plate that are not correct.
|
| 76 |
+
If you have a high number of colonies on your recipient plasmid alone plate, you can try ligating the recipient plasmid alone in the presence and absence of ligase. If the colonies are a result of uncut empty plasmid, you will still have colonies when you do not add ligase. If the colonies are a result of recipient plasmid self-ligation, you will see significantly more colonies when you add ligase.
|
| 77 |
+
If you do not see any colonies, you should conduct a positive control to ensure that your transformation worked. You could also try varying the amount of recipient plasmid to insert.
|
| 78 |
+
Isolate the Finished Plasmid
|
| 79 |
+
Finally, you will need to pick individual bacterial colonies and check them for successful ligations. Pick 3-10 colonies depending on the number of background colonies on your control plate (the more background, the more colonies you will need to pick) and grow overnight cultures for DNA purification.
|
| 80 |
+
After
|
| 81 |
+
purifying the DNA
|
| 82 |
+
, conduct a
|
| 83 |
+
diagnostic restriction digest
|
| 84 |
+
of 100-300ng of your purified DNA with the enzymes you used for the cloning. Run your digest on an
|
| 85 |
+
agarose gel
|
| 86 |
+
. You should see two bands, one the size of your vector and one the size of your new insert.
|
| 87 |
+
Verify your Plasmid by Sequencing
|
| 88 |
+
PCR based cloning carries a much higher risk for mutation than restriction enzyme based cloning. DNA replication by PCR has error rates that range from roughly 1 per 500bp to roughly 1 per 10 million bp depending on the polymerase used. Because of this, no matter which taq polymerase you use, it is important that you sequence the final product.
|
| 89 |
+
Reference Page
|
| 90 |
+
Top
|
| 91 |
+
Index
|
Biomni/biomni/tool/protocols/addgene/Addgene_ Protocol - How to Create a Bacterial Glycerol Stock.txt
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
PROTOCOL: How to Create a Bacterial Glycerol Stock
|
| 2 |
+
SOURCE: https://www.addgene.org/protocols/create-glycerol-stock/
|
| 3 |
+
================================================================================
|
| 4 |
+
|
| 5 |
+
BACKGROUND INFORMATION
|
| 6 |
+
================================================================================
|
| 7 |
+
|
| 8 |
+
Bacterial glycerol stocks are important for long-term storage of plasmids.
|
| 9 |
+
Although you can store your plasmid DNA at -20°C, many labs also create bacterial
|
| 10 |
+
glycerol stocks of their plasmids. This way, when you want to make more plasmid
|
| 11 |
+
DNA, the plasmid will already be in your desired bacterial strain and you will not
|
| 12 |
+
need to obtain more competent cells and retransform.
|
| 13 |
+
|
| 14 |
+
Bacteria on an LB agar plate can be stored at 4°C for a few weeks. However, if
|
| 15 |
+
you want to store bacteria for a longer time, you will need to establish glycerol
|
| 16 |
+
stocks. The addition of glycerol stabilizes the frozen bacteria, preventing damage
|
| 17 |
+
to the cell membranes and keeping the cells alive. A glycerol stock of bacteria
|
| 18 |
+
can be stored stably at -80°C for many years.
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
PROCEDURE
|
| 22 |
+
================================================================================
|
| 23 |
+
|
| 24 |
+
1. Follow the steps for Inoculating an Overnight Liquid Culture.
|
| 25 |
+
|
| 26 |
+
2. After you have bacterial growth, add 500 μL of the overnight culture to 500 μL
|
| 27 |
+
of 50% glycerol in a 2 mL screw top tube or cryovial and gently mix.
|
| 28 |
+
|
| 29 |
+
Notes:
|
| 30 |
+
• Make the 50% glycerol solution by diluting 100% glycerol in dH₂O.
|
| 31 |
+
• Snap top tubes are not recommended as they can open unexpectedly at -80°C.
|
| 32 |
+
|
| 33 |
+
3. Freeze the glycerol stock tube at -80°C. The stock is now stable for years, as
|
| 34 |
+
long as it is kept at -80°C. Subsequent freeze and thaw cycles reduce shelf
|
| 35 |
+
life.
|
| 36 |
+
|
| 37 |
+
4. To recover bacteria from your glycerol stock, open the tube and use a sterile
|
| 38 |
+
loop, toothpick or pipette tip to scrape some of the frozen bacteria off of the
|
| 39 |
+
top. Do not let the glycerol stock unthaw!
|
| 40 |
+
|
| 41 |
+
5. Streak the bacteria onto an LB agar plate.
|
| 42 |
+
|
| 43 |
+
6. Grow your bacteria overnight at the appropriate temperature. Growth conditions,
|
| 44 |
+
including copy number and growth temperature, can be found on your plasmid's
|
| 45 |
+
information page. The next day you will be able to start an overnight culture
|
| 46 |
+
for plasmid DNA prep the following day.
|
| 47 |
+
|
| 48 |
+
|
| 49 |
+
TIPS AND FAQ
|
| 50 |
+
================================================================================
|
| 51 |
+
|
| 52 |
+
• The optimal concentration of long-term glycerol storage is unknown. Most labs
|
| 53 |
+
store bacteria in 15-25% glycerol.
|
| 54 |
+
|
| 55 |
+
• You can prepare the glycerol stock the same time you prepare your plasmid DNA.
|
| 56 |
+
In the morning, when you retrieve your liquid bacterial culture, take 500 μL of
|
| 57 |
+
culture to make your glycerol stock before you begin your plasmid mini-prep.
|
| 58 |
+
|
| 59 |
+
• Try not to freeze/thaw your glycerol stock too many times. Placing the glycerol
|
| 60 |
+
stock on dry ice while streaking onto LB agar will prevent it from thawing
|
| 61 |
+
completely and will improve the shelf life.
|
| 62 |
+
|
| 63 |
+
• It is very important that you shake the glycerol before freezing (5-6 times).
|
| 64 |
+
Make sure that you see one uniform solution, and there are no layers present.
|
| 65 |
+
|
| 66 |
+
• Be sure to label both the lid and the tube of a glycerol stock before you place
|
| 67 |
+
the sample at -80°C. Frozen tubes are hard to write on and samples stored for
|
| 68 |
+
long periods at -80°C can lose labels stuck to tube!
|
Biomni/biomni/tool/protocols/addgene/Addgene_ Protocol - Over-Agar Antibiotic Plating.txt
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
PROTOCOL: Over-Agar Antibiotic Plating
|
| 2 |
+
SOURCE: https://www.addgene.org/protocols/over-agar-antibiotic-plating/
|
| 3 |
+
================================================================================
|
| 4 |
+
|
| 5 |
+
INTRODUCTION
|
| 6 |
+
================================================================================
|
| 7 |
+
|
| 8 |
+
This protocol describes methodology for plating antibiotic over-agar for the
|
| 9 |
+
selection of transformed E. coli. Over-agar spreading of antibiotic makes it
|
| 10 |
+
easy for an investigator to conveniently plate and select transformed cells
|
| 11 |
+
containing plasmids differing in their resistance genes, as one does not need to
|
| 12 |
+
prepare separate batches of antibiotic-containing agar. This protocol will focus
|
| 13 |
+
specifically on selection with carbenicillin; however it can be adapted for any
|
| 14 |
+
antibiotic through the use of a selection curve to determine optimal antibiotic
|
| 15 |
+
concentration.
|
| 16 |
+
|
| 17 |
+
Last Update: Oct. 27, 2017
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
EQUIPMENT
|
| 21 |
+
================================================================================
|
| 22 |
+
|
| 23 |
+
• Pipette tips for both pipetting and spreading
|
| 24 |
+
• Bunsen burner (or other small flame source)
|
| 25 |
+
• Incubator
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
REAGENTS
|
| 29 |
+
================================================================================
|
| 30 |
+
|
| 31 |
+
• 6 cm diameter LB/agar plates without antibiotic
|
| 32 |
+
• High concentration (100 mg/mL, 1000x) carbenicillin stock solution in sterile
|
| 33 |
+
water (or other antibiotic)
|
| 34 |
+
• E. coli transformed with a plasmid containing the carbenicillin (amp) resistance
|
| 35 |
+
gene (or other antibiotic resistance)
|
| 36 |
+
|
| 37 |
+
|
| 38 |
+
PROCEDURE
|
| 39 |
+
================================================================================
|
| 40 |
+
|
| 41 |
+
Day 1
|
| 42 |
+
|
| 43 |
+
1. Prepare carbenicillin to a concentration of 1 mg/mL – 4 mg/mL in LB medium.
|
| 44 |
+
|
| 45 |
+
The concentration of antibiotic required for effective over-agar selection has
|
| 46 |
+
been empirically determined. See selection curve below.
|
| 47 |
+
|
| 48 |
+
Carbenicillin is used here in place of ampicillin because carbenicillin is more
|
| 49 |
+
stable, so it is potentially more effective at selecting only bacteria containing
|
| 50 |
+
the plasmids of interest (for example, fewer satellite colonies will grow). It
|
| 51 |
+
is, however, more expensive.
|
| 52 |
+
|
| 53 |
+
2. With a 6 cm diameter petri plate containing solidified LB-agar, pipette 150 µL
|
| 54 |
+
of carbenicillin on top of the agar and gently spread over the surface until the
|
| 55 |
+
liquid is mostly absorbed (there is a very small visible volume of pooled liquid
|
| 56 |
+
remaining on the surface).
|
| 57 |
+
|
| 58 |
+
We use the micropipette tip itself to do the spreading; the tip is gently bent
|
| 59 |
+
to create an "L" shape, and then used like a cell spreader. Several other
|
| 60 |
+
devices may be used for this purpose, provided that they fit your petri plate.
|
| 61 |
+
|
| 62 |
+
3. Incubate the plate at room temperature for at least 30 minutes with the lid on
|
| 63 |
+
to give the antibiotic time to more fully absorb.
|
| 64 |
+
|
| 65 |
+
4. During the incubation, transform DH5α E. coli cells by heatshock with the
|
| 66 |
+
plasmid of interest. See our transformation page for a detailed heatshock
|
| 67 |
+
transformation protocol.
|
| 68 |
+
|
| 69 |
+
5. Plate 50 µL of transformed E. coli/rescue media suspension onto the agar and
|
| 70 |
+
gently spread over the surface until the liquid is mostly absorbed.
|
| 71 |
+
|
| 72 |
+
The spreading of cells can be done in the same way as the antibiotic, using
|
| 73 |
+
either a bent micropipette tip or other cell spreading device that fits the
|
| 74 |
+
plate.
|
| 75 |
+
|
| 76 |
+
6. Incubate plates at 37 ℃ for 18 hours.
|
| 77 |
+
|
| 78 |
+
Day 2
|
| 79 |
+
|
| 80 |
+
7. Observe plates for colony formation. Shown below are the results from an
|
| 81 |
+
experiment optimizing the concentration of carbenicillin, plated over-agar for
|
| 82 |
+
selection of transformed E. coli.
|
| 83 |
+
|
| 84 |
+
|
| 85 |
+
SAMPLE DATA
|
| 86 |
+
================================================================================
|
| 87 |
+
|
| 88 |
+
Selection of E.coli on LB-agar using different concentrations of carbenicillin
|
| 89 |
+
plated over-agar.
|
| 90 |
+
|
| 91 |
+
Control Plate with No Carbenicillin:
|
| 92 |
+
Plate shows a lawn of E. coli and no selection.
|
| 93 |
+
|
| 94 |
+
150 µL of 0.1 mg/mL Carbenicillin plated over-agar:
|
| 95 |
+
Plate shows a lawn of E. coli and no apparent selection.
|
| 96 |
+
|
| 97 |
+
150 µL of 1 mg/mL Carbenicillin plated over-agar:
|
| 98 |
+
Plate shows several individual colonies and effective selection.
|
| 99 |
+
|
| 100 |
+
150 µL of 2 mg/mL Carbenicillin plated over-agar:
|
| 101 |
+
Plate shows less individual colonies than the 1 mg/mL plate and effective selection.
|
| 102 |
+
|
| 103 |
+
150 µL of 4 mg/mL Carbenicillin plated over-agar:
|
| 104 |
+
Plate shows several individual colonies with smaller size than the 1 mg/mL and 2
|
| 105 |
+
mg/mL plates and effective selection.
|
| 106 |
+
|
| 107 |
+
Selection Curve of Transformed E. coli after Over-Agar Plating of Carbenicillin.
|
| 108 |
+
|
| 109 |
+
The above graph displays the stock concentration of Carbenicillin stock used (150
|
| 110 |
+
µL per plate). Please note we have found that there is generally a broad range of
|
| 111 |
+
antibiotic concentrations that will work for this assay, and the above result
|
| 112 |
+
represents a single experiment. For publishable data, the experiment would need to
|
| 113 |
+
be repeated to account for variability.
|
Biomni/biomni/tool/protocols/addgene/Addgene_ Protocol - pLKO.1 – TRC Cloning Vector.txt
ADDED
|
@@ -0,0 +1,630 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
PROTOCOL: pLKO.1 – TRC Cloning Vector
|
| 2 |
+
SOURCE: https://www.addgene.org/protocols/plko/
|
| 3 |
+
================================================================================
|
| 4 |
+
|
| 5 |
+
Addgene Plasmid 10878. Protocol Version 1.0. December 2006.
|
| 6 |
+
|
| 7 |
+
Copyright Addgene 2006, All Rights Reserved. This protocol is provided for your
|
| 8 |
+
convenience. See "warranty information" in appendix.
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
A. pLKO.1-TRC CLONING VECTOR
|
| 12 |
+
================================================================================
|
| 13 |
+
|
| 14 |
+
A.1 The RNAi Consortium
|
| 15 |
+
|
| 16 |
+
The pLKO.1 cloning vector is the backbone upon which The RNAi Consortium has built
|
| 17 |
+
a library of shRNAs directed against 15,000 human and 15,000 mouse genes. Addgene
|
| 18 |
+
is working with the TRC to make this shRNA cloning vector available to the
|
| 19 |
+
scientific community. Please cite Moffat et al., Cell 2006 Mar; 124(6):1283-98
|
| 20 |
+
(PubMed PMID 16564017) in all publications arising from the use of this vector.
|
| 21 |
+
|
| 22 |
+
A.2 Map of pLKO.1
|
| 23 |
+
|
| 24 |
+
pLKO.1 is a replication-incompetent lentiviral vector chosen by the TRC for
|
| 25 |
+
expression of shRNAs. pLKO.1 can be introduced into cells via direct transfection,
|
| 26 |
+
or can be converted into lentiviral particles for subsequent infection of a target
|
| 27 |
+
cell line. Once introduced, the puromycin resistance marker encoded in pLKO.1
|
| 28 |
+
allows for convenient stable selection.
|
| 29 |
+
|
| 30 |
+
pLKO.1 contains an shRNA insert. The original pLKO.1-TRC cloning vector has a 1.9kb
|
| 31 |
+
stuffer that is released by digestion with AgeI and EcoRI. shRNA oligos are cloned
|
| 32 |
+
into the AgeI and EcoRI sites in place of the stuffer. The AgeI site is destroyed
|
| 33 |
+
in most cases (depending on the target sequence), while the EcoRI site is preserved.
|
| 34 |
+
For a complete map of pLKO.1 containing the 1.9kb stuffer, visit
|
| 35 |
+
www.addgene.org/10878/.
|
| 36 |
+
|
| 37 |
+
Vector Elements:
|
| 38 |
+
|
| 39 |
+
• U6: Human U6 promoter drives RNA Polymerase III transcription for generation of
|
| 40 |
+
shRNA transcripts.
|
| 41 |
+
|
| 42 |
+
• cPPT: Central polypurine tract, cPPT, improves transduction efficiency by
|
| 43 |
+
facilitating nuclear import of the vector's preintegration complex in the
|
| 44 |
+
transduced cells.
|
| 45 |
+
|
| 46 |
+
• hPGK: Human phosphoglycerate kinase promoter drives expression of puromycin.
|
| 47 |
+
|
| 48 |
+
• Puro R: Puromycin resistance gene for selection of pLKO.1 plasmid in mammalian
|
| 49 |
+
cells.
|
| 50 |
+
|
| 51 |
+
• sin 3'LTR: 3' Self-inactivating long terminal repeat.
|
| 52 |
+
|
| 53 |
+
• f1 ori: f1 bacterial origin of replication.
|
| 54 |
+
|
| 55 |
+
• Amp R: Ampicillin resistance gene for selection of pLKO.1 plasmid in bacterial
|
| 56 |
+
cells
|
| 57 |
+
|
| 58 |
+
• pUC ori: pUC bacterial origin of replication.
|
| 59 |
+
|
| 60 |
+
• 5'LTR: 5' long terminal repeat.
|
| 61 |
+
|
| 62 |
+
• RRE: Rev response element.
|
| 63 |
+
|
| 64 |
+
A.3 Related Products
|
| 65 |
+
|
| 66 |
+
The following plasmids available from Addgene are recommended for use in conjunction
|
| 67 |
+
with the pLKO.1 TRC-cloning vector:
|
| 68 |
+
|
| 69 |
+
• pLKO.1 – TRC control: Negative control vector containing non-hairpin insert.
|
| 70 |
+
|
| 71 |
+
• pLKO.1 – scramble shRNA: Negative control vector containing scrambled shRNA.
|
| 72 |
+
|
| 73 |
+
• psPAX2: Packaging plasmid for producing viral particles.
|
| 74 |
+
|
| 75 |
+
• pMD2.G: Envelope plasmid for producing viral particles.
|
| 76 |
+
|
| 77 |
+
Note: pLKO.1 can also be used with packaging plasmid pCMV-dR8.2 dvpr and envelope
|
| 78 |
+
plasmid pCMV-VSVG from Robert Weinberg's lab. For more information, visit Addgene's
|
| 79 |
+
Mammalian RNAi Tools page.
|
| 80 |
+
|
| 81 |
+
Several other laboratories have deposited pLKO derived vectors that may also be
|
| 82 |
+
useful for your experiment. To see these vectors, visit Addgene's website and
|
| 83 |
+
"search for "pLKO"".
|
| 84 |
+
|
| 85 |
+
|
| 86 |
+
B. DESIGNING shRNA OLIGOS FOR pLKO.1
|
| 87 |
+
================================================================================
|
| 88 |
+
|
| 89 |
+
B.1 Determining the Optimal 21-mer Targets in your Gene
|
| 90 |
+
|
| 91 |
+
Selection of suitable 21-mer targets in your gene is the first step toward
|
| 92 |
+
efficient gene silencing. Methods for target selection are continuously being
|
| 93 |
+
improved. Below are suggestions for target selection.
|
| 94 |
+
|
| 95 |
+
1. Use an siRNA selection tool to determine a set of top-scoring targets for your
|
| 96 |
+
gene. For example, the Whitehead Institute for Biomedical Research hosts an
|
| 97 |
+
siRNA Selection Program that can be accessed after a free registration.
|
| 98 |
+
|
| 99 |
+
2. Guidelines for designing siRNAs with effective gene silencing:
|
| 100 |
+
• Starting at 25nt downstream of the start codon (ATG), search for 21nt sequences
|
| 101 |
+
that match the pattern AA(N₁₉). If no suitable match is found, search for
|
| 102 |
+
NAR(N₁₇)YNN, where N is any nucleotide, R is a purine (A,G), and Y is a
|
| 103 |
+
pyrimidine (C,U).
|
| 104 |
+
• G-C content should be 36-52%.
|
| 105 |
+
• Sense 3' end should have low stability – at least one A or T between position
|
| 106 |
+
15-19.
|
| 107 |
+
• Avoid targeting introns.
|
| 108 |
+
• Avoid stretches of 4 or more nucleotide repeats, especially repeated Ts because
|
| 109 |
+
polyT is a termination signal for RNA polymerase III.
|
| 110 |
+
|
| 111 |
+
Note that these were the prevailing guidelines when the pLKO.1 vector was
|
| 112 |
+
created.
|
| 113 |
+
|
| 114 |
+
Additional design rules can be found at the Broad Institute's TRC shRNA Design
|
| 115 |
+
Process.
|
| 116 |
+
|
| 117 |
+
3. To minimize degradation of off-target mRNAs, use NCBI's BLAST program. Select
|
| 118 |
+
sequences that have at least 3 nucleotide mismatches to all unrelated genes.
|
| 119 |
+
|
| 120 |
+
TIP: Addgene recommends that you select multiple target sequences for each gene.
|
| 121 |
+
Some sequences will be more effective than others. In addition, demonstrating
|
| 122 |
+
that two different shRNAs that target the same gene can produce the same
|
| 123 |
+
phenotype will alleviate concerns about off-target effects.
|
| 124 |
+
|
| 125 |
+
B.2 Ordering Oligos Compatible with pLKO.1
|
| 126 |
+
|
| 127 |
+
To generate oligos for cloning into pLKO.1, insert your sense and antisense
|
| 128 |
+
sequences from step B.1 into the oligos below. Do not change the ends; these bases
|
| 129 |
+
are important for cloning the oligos into the pLKO.1 TRC-cloning vector.
|
| 130 |
+
|
| 131 |
+
Forward oligo: 5' CCGG—21bp sense—CTCGAG—21bp antisense—TTTTTG 3'
|
| 132 |
+
|
| 133 |
+
Reverse oligo: 5' AATTCAAAAA—21bp sense—CTCGAG—21bp antisense 3'
|
| 134 |
+
|
| 135 |
+
For example, if the target sequence is (AA)TGCCTACGTTAAGCTATAC, the oligos would
|
| 136 |
+
be:
|
| 137 |
+
|
| 138 |
+
Forward oligo: 5' CCGG AATGCCTACGTTAAGCTATAC CTCGAG GTATAGCTTAACGTAGGCATT TTTTTG 3'
|
| 139 |
+
|
| 140 |
+
Reverse oligo: 5' AATTCAAAAA AATGCCTACGTTAAGCTATAC CTCGAG GTATAGCTTAACGTAGGCATT 3'
|
| 141 |
+
|
| 142 |
+
|
| 143 |
+
C. CLONING OLIGOS INTO pLKO.1
|
| 144 |
+
================================================================================
|
| 145 |
+
|
| 146 |
+
The pLKO.1-TRC cloning vector contains a 1.9kb stuffer that is released upon
|
| 147 |
+
digestion with EcoRI and AgeI. The oligos from section B contain the shRNA sequence
|
| 148 |
+
flanked by sequences that are compatible with the sticky ends of EcoRI and AgeI.
|
| 149 |
+
Forward and reverse oligos are annealed and ligated into the pLKO.1 vector,
|
| 150 |
+
producing a final plasmid that expresses the shRNA of interest.
|
| 151 |
+
|
| 152 |
+
C.1 Recommended Materials
|
| 153 |
+
|
| 154 |
+
• AgeI, New England Biolabs (NEB) #R0552S
|
| 155 |
+
• EcoRI, NEB #R0101S
|
| 156 |
+
• NEB buffer 1, NEB #B7001S
|
| 157 |
+
• NEB buffer 2, NEB #B7002S
|
| 158 |
+
• T4 DNA ligase, NEB #M0202S
|
| 159 |
+
• T4 DNA ligase buffer, NEB #B0202S
|
| 160 |
+
• DH5 alpha competent cells, Invitrogen #18258-012
|
| 161 |
+
• Qiaquick gel extraction kit, Qiagen #28704
|
| 162 |
+
• Low melting point agarose, Sigma #A9414
|
| 163 |
+
• Luria Broth Agar (LB agar), American Bioanalytical: #AB01200-02000
|
| 164 |
+
• Ampicillin, VWR: #7177-48-2. Use at 100 μg/mL.
|
| 165 |
+
• Carbenicillin, VWR: #80030-956. Use at 100 μg/mL.
|
| 166 |
+
|
| 167 |
+
C.2 Annealing Oligos
|
| 168 |
+
|
| 169 |
+
1. Resuspend oligos in ddH₂O to a concentration of 20 μM, then mix:
|
| 170 |
+
• 5 μL Forward oligo
|
| 171 |
+
• 5 μL Reverse oligo
|
| 172 |
+
• 5 μL 10x NEB buffer 2
|
| 173 |
+
• 35 μL ddH₂O
|
| 174 |
+
|
| 175 |
+
2. Incubate for 4 minutes at 95°C in a PCR machine or in a beaker of boiling water.
|
| 176 |
+
|
| 177 |
+
3. If using a PCR machine, incubate the sample at 70°C for 10 minutes then slowly
|
| 178 |
+
cool to room temperature over the period of several hours. If using a beaker of
|
| 179 |
+
water, remove the beaker from the flame, and allow the water to cool to room
|
| 180 |
+
temperature. This will take a few hours, but it is important for the cooling to
|
| 181 |
+
occur slowly for the oligos to anneal.
|
| 182 |
+
|
| 183 |
+
C.3 Digesting pLKO.1 TRC Cloning Vector
|
| 184 |
+
|
| 185 |
+
The following steps were the prevailing guidelines when the pLKO.1 vector was
|
| 186 |
+
created. For alternative options, please refer to the enzyme manufacturer's
|
| 187 |
+
resources, such as NEB's online tool NEBcloner, to help guide your reaction buffer
|
| 188 |
+
selection when setting up double digests.
|
| 189 |
+
|
| 190 |
+
1. Digest pLKO.1 TRC-cloning vector with AgeI. Mix:
|
| 191 |
+
• 6 μg pLKO.1 TRC-cloning vector (maxiprep or miniprep DNA)
|
| 192 |
+
• 5 μL 10x NEB buffer 1
|
| 193 |
+
• 1 μL AgeI
|
| 194 |
+
• add ddH₂O to bring to 50 μL final volume
|
| 195 |
+
|
| 196 |
+
2. Incubate at 37°C for 2 hours.
|
| 197 |
+
|
| 198 |
+
3. Purify with Qiaquick gel extraction kit. Elute in 30 μL of ddH₂O.
|
| 199 |
+
|
| 200 |
+
4. Digest eluate with EcoRI. Mix:
|
| 201 |
+
• 30 μL pLKO.1 TRC-cloning vector digested with AgeI
|
| 202 |
+
• 5 μL 10x NEB buffer for EcoRI
|
| 203 |
+
• 1 μL EcoRI
|
| 204 |
+
• 14 μL ddH₂O
|
| 205 |
+
|
| 206 |
+
5. Incubate at 37°C for 2 hours.
|
| 207 |
+
|
| 208 |
+
6. Run digested DNA on 0.8% low melting point agarose gel until you can distinctly
|
| 209 |
+
see 2 bands, one 7kb and one 1.9kb. Cut out the 7kb band and place in a sterile
|
| 210 |
+
microcentrifuge tube.
|
| 211 |
+
|
| 212 |
+
TIP: When visualizing DNA fragments to be used for ligation, use only
|
| 213 |
+
long-wavelength UV light. Short wavelength UV light will increase the chance of
|
| 214 |
+
damaging the DNA.
|
| 215 |
+
|
| 216 |
+
7. Purify the DNA using a Qiaquick gel extraction kit. Elute in 30 μL of ddH₂O.
|
| 217 |
+
|
| 218 |
+
8. Measure the DNA concentration.
|
| 219 |
+
|
| 220 |
+
C.4 Ligating and Transforming into Bacteria
|
| 221 |
+
|
| 222 |
+
1. Use your ligation method of choice. For a standard T4 ligation, mix:
|
| 223 |
+
• 2 μL annealed oligo from step C.2
|
| 224 |
+
• 20 ng digested pLKO.1 TRC-cloning vector from step C.3 (If you were unable to
|
| 225 |
+
measure the DNA concentration, use 1 μL)
|
| 226 |
+
• 2 μL 10x NEB T4 DNA ligase buffer
|
| 227 |
+
• 1 μL NEB T4 DNA ligase
|
| 228 |
+
• add ddH₂O to bring to 20 μL final volume
|
| 229 |
+
|
| 230 |
+
2. Incubate at 16°C for 4-20 hours.
|
| 231 |
+
|
| 232 |
+
3. Transform 2 μL of ligation mix into 25 μL competent DH5 alpha cells, following
|
| 233 |
+
manufacturer's protocol. Plate on LB agar plates containing 100 μg/mL ampicillin
|
| 234 |
+
or carbenicillin (an ampicillin analog).
|
| 235 |
+
|
| 236 |
+
Due to the long terminal repeats found in lentiviral plasmids, Addgene
|
| 237 |
+
currently recommends using a strain that reduces the frequency of homologous
|
| 238 |
+
recombination of unstable regions, such as Invitrogen Stbl3™ or NEB Stable
|
| 239 |
+
cells. This will ensure that the repeats will be maintained and often results in
|
| 240 |
+
a greater yield of DNA.
|
| 241 |
+
|
| 242 |
+
|
| 243 |
+
D. SCREENING FOR INSERTS
|
| 244 |
+
================================================================================
|
| 245 |
+
|
| 246 |
+
You may screen for plasmids that were successfully ligated by restriction enzyme
|
| 247 |
+
digestion. However, once you have identified the positive clones, it is important
|
| 248 |
+
to verify the insert by conducting a sequencing reaction.
|
| 249 |
+
|
| 250 |
+
D.1 Recommended Materials
|
| 251 |
+
|
| 252 |
+
• DNA Miniprep Kit, Qiagen #27104
|
| 253 |
+
• EcoRI, NEB #R0101S
|
| 254 |
+
• NcoI, NEB #R0193S
|
| 255 |
+
• Agarose, Sigma #A9539
|
| 256 |
+
|
| 257 |
+
D.2 Screening for Inserts
|
| 258 |
+
|
| 259 |
+
Day 1:
|
| 260 |
+
|
| 261 |
+
1. Inoculate 5 colonies from each ligation into LB + 100 μg/mL ampicillin or
|
| 262 |
+
carbenicillin.
|
| 263 |
+
|
| 264 |
+
Day 2:
|
| 265 |
+
|
| 266 |
+
2. Spin down the cultures and use a miniprep kit to obtain DNA.
|
| 267 |
+
|
| 268 |
+
3. Conduct a restriction digest with EcoRI and NcoI:
|
| 269 |
+
• 1 μg miniprep DNA
|
| 270 |
+
• 2 μL 10x NEB buffer for EcoRI
|
| 271 |
+
• 0.8 μL EcoRI
|
| 272 |
+
• 0.8 μL NcoI
|
| 273 |
+
• add ddH₂O to bring to 20 μL final volume
|
| 274 |
+
|
| 275 |
+
4. Incubate at 37°C for 1-2 hours.
|
| 276 |
+
|
| 277 |
+
5. Run the digestion products on a 1% agarose gel. You should see two fragments, a
|
| 278 |
+
2kb fragment and a 5kb fragment.
|
| 279 |
+
|
| 280 |
+
6. Sequence positive clones with pLKO.1 sequencing primer (5' CAA GGC TGT TAG AGA
|
| 281 |
+
GAT AAT TGG A 3').
|
| 282 |
+
|
| 283 |
+
TIP: You may need to adjust the sequencing conditions if the DNA polymerase has
|
| 284 |
+
difficulty reading through the secondary structure of the hairpin sequence.
|
| 285 |
+
|
| 286 |
+
|
| 287 |
+
E. PRODUCING LENTIVIRAL PARTICLES
|
| 288 |
+
================================================================================
|
| 289 |
+
|
| 290 |
+
Before this step, you must contact your institution's Bio-Safety office to receive
|
| 291 |
+
permission and institution-specific instructions. You must follow safety procedures
|
| 292 |
+
and work in an environment (e.g. BL2+) suitable for handling HIV-derivative
|
| 293 |
+
viruses.
|
| 294 |
+
|
| 295 |
+
For transient knockdown of protein expression, you may transfect plasmid DNA
|
| 296 |
+
directly into the target cells. The shRNA will be expressed, but the DNA is
|
| 297 |
+
unlikely to be integrated into the host genome.
|
| 298 |
+
|
| 299 |
+
For stable loss-of-function experiments, Addgene recommends that you generate
|
| 300 |
+
lentiviral particles and infect the target cells. Addition of puromycin will allow
|
| 301 |
+
you to select for cells that stably express your shRNA of interest.
|
| 302 |
+
|
| 303 |
+
E.1 Recommended Materials
|
| 304 |
+
|
| 305 |
+
• psPAX2, Addgene #12260
|
| 306 |
+
• pMD2.G, Addgene #12259
|
| 307 |
+
• HEK-293T cells, GenHunter: #Q401
|
| 308 |
+
• FuGENE® 6 Transfection Reagent, Roche Applied Biosciences: #11814443001
|
| 309 |
+
• OPTI-MEM® serum-free media, Invitrogen: #31985
|
| 310 |
+
• Dulbecco's Modified Eagle Medium (DMEM), Invitrogen: #11995
|
| 311 |
+
• Fetal Bovine Serum (FBS), Invitrogen: #16000
|
| 312 |
+
• Penicillin/Streptomycin, Invitrogen: #15140-122
|
| 313 |
+
• Polypropylene tubes, VWR: #87003-290
|
| 314 |
+
|
| 315 |
+
Note: pLKO.1 could also be packaged using pCMV-dR8.2 dvpr and pCMV-VSVG from the
|
| 316 |
+
Robert Weinberg lab. For more information, visit Addgene's Mammalian RNAi Tools
|
| 317 |
+
page.
|
| 318 |
+
|
| 319 |
+
E.2 Protocol for Producing Lentiviral Particles
|
| 320 |
+
|
| 321 |
+
This protocol is for transfection in a 6 cm plate. The protocol can be scaled to
|
| 322 |
+
produce different amounts of virus as needed.
|
| 323 |
+
|
| 324 |
+
Day 1:
|
| 325 |
+
|
| 326 |
+
a. For each plasmid to be transfected, plate 7×10⁵ HEK-293T cells in 5 mL of media
|
| 327 |
+
in a 6 cm tissue culture plate. Incubate cells at 37°C, 5% CO₂ overnight.
|
| 328 |
+
|
| 329 |
+
Although cells should regularly be passaged in DMEM + 10% FBS with
|
| 330 |
+
penicillin/streptomycin, cells should be plated at this step in DMEM + 10% FBS
|
| 331 |
+
without antibiotics (no penicillin or streptomycin).
|
| 332 |
+
|
| 333 |
+
Day 2:
|
| 334 |
+
|
| 335 |
+
b. Perform the transfection in the late afternoon because the transfection mix
|
| 336 |
+
should only be incubated with the cells for 12-15 hours.
|
| 337 |
+
|
| 338 |
+
c. In polypropylene microfuge tubes (do NOT use polystyrene tubes), make a cocktail
|
| 339 |
+
for each transfection:
|
| 340 |
+
• 1 μg pLKO.1 shRNA plasmid
|
| 341 |
+
• 750 ng psPAX2 packaging plasmid
|
| 342 |
+
• 250 ng pMD2.G envelope plasmid
|
| 343 |
+
• to 20 μl serum-free OPTI-MEM
|
| 344 |
+
|
| 345 |
+
TIP: You may want to vary the ratio of shRNA plasmid, packaging plasmid, and
|
| 346 |
+
envelope plasmid to obtain the ratio that gives you the optimal viral production.
|
| 347 |
+
|
| 348 |
+
d. Create a master mix of FuGENE® 6 transfection reagent in serum-free OPTI-MEM.
|
| 349 |
+
Calculate the amount of Fugene® and OPTI-MEM necessary given that each reaction
|
| 350 |
+
will require 6 μL FuGENE® + 74 μL OPTI-MEM. For example:
|
| 351 |
+
• 1x master mix: 6 μL FuGENE® + 74 μL OPTI-MEM
|
| 352 |
+
• 5x master mix: 30 μL FuGENE® + 370 μL OPTI-MEM
|
| 353 |
+
• 10x master mix: 60 μL FuGENE® + 740 μL OPTI-MEM
|
| 354 |
+
|
| 355 |
+
In a polypropylene tube, add OPTI-MEM first. Pipette FuGENE® directly into the
|
| 356 |
+
OPTI-MEM – do not allow FuGENE® to come in contact with the walls of the tube
|
| 357 |
+
before it has been diluted. Mix by swirling or gently flicking the tube.
|
| 358 |
+
Incubate for 5 minutes at room temperature.
|
| 359 |
+
|
| 360 |
+
e. Add 80 μL of FuGENE® master mix to each tube from step c for a total volume of
|
| 361 |
+
100 μL. Pipette master mix directly into the liquid and not onto the walls of
|
| 362 |
+
the tube. Mix by swirling or gently flicking the tube.
|
| 363 |
+
|
| 364 |
+
f. Incubate for 20-30 minutes at room temperature.
|
| 365 |
+
|
| 366 |
+
g. Retrieve HEK-293T cells from incubator. The cells should be 50-80% confluent and
|
| 367 |
+
in DMEM that does not contain antibiotics.
|
| 368 |
+
|
| 369 |
+
h. Without touching the sides of the dish, gently add DNA:FuGENE® mix dropwise to
|
| 370 |
+
cells. Swirl to disperse mixture evenly. Do not pipette or swirl too vigorously,
|
| 371 |
+
as you do not want to dislodge the cells from the plate.
|
| 372 |
+
|
| 373 |
+
i. Incubate cells at 37°C, 5% CO₂ for 12-15 hours.
|
| 374 |
+
|
| 375 |
+
Day 3:
|
| 376 |
+
|
| 377 |
+
j. In the morning, change the media to remove the transfection reagent. Replace with
|
| 378 |
+
5 mL fresh DMEM + 10% FBS + penicillin/streptomycin. Pipette the media onto the
|
| 379 |
+
side of the plate so as not to disturb the transfected cells.
|
| 380 |
+
|
| 381 |
+
k. Incubate cells at 37°C, 5% CO₂ for 24 hours.
|
| 382 |
+
|
| 383 |
+
Day 4:
|
| 384 |
+
|
| 385 |
+
l. Harvest media from cells and transfer to a polypropylene storage tube. The media
|
| 386 |
+
contains your lentiviral particles. Store at 4°C.
|
| 387 |
+
|
| 388 |
+
m. Add 5 mL of fresh media containing antibiotics to the cells and incubate at 37°C,
|
| 389 |
+
5% CO₂ for 24 hours.
|
| 390 |
+
|
| 391 |
+
Day 5:
|
| 392 |
+
|
| 393 |
+
n. Harvest media from cells and pool with media from Day 4. Spin media at 1,250 rpm
|
| 394 |
+
for 5 minutes to pellet any HEK-293T cells that were inadvertently collected
|
| 395 |
+
during harvesting.
|
| 396 |
+
|
| 397 |
+
TIP: In lieu of centrifugation, you may filter the media through a 0.45 μm
|
| 398 |
+
filter to remove the cells. Do not use a 0.2 μm filter, as this is likely to
|
| 399 |
+
shear the envelope of your virus.
|
| 400 |
+
|
| 401 |
+
o. Virus may be stored at 4°C for a few days, but should be frozen at -20°C or
|
| 402 |
+
-80°C for long-term storage.
|
| 403 |
+
|
| 404 |
+
TIP: Freeze/thaw cycles decrease the efficiency of the virus, so Addgene
|
| 405 |
+
recommends that you use the virus immediately or aliquot the media into smaller
|
| 406 |
+
tubes to prevent multiple freeze/thaw cycles.
|
| 407 |
+
|
| 408 |
+
|
| 409 |
+
F. INFECTING TARGET CELLS
|
| 410 |
+
================================================================================
|
| 411 |
+
|
| 412 |
+
Lentiviral particles can efficiently infect a broad range of cell types, including
|
| 413 |
+
both dividing and non-dividing cells. Addition of puromycin will allow you to
|
| 414 |
+
select for cells that are stably expressing your shRNA of interest.
|
| 415 |
+
|
| 416 |
+
F.1. Recommended Materials
|
| 417 |
+
|
| 418 |
+
• Hexadimethrine bromide (polybrene)*, Sigma-Aldrich: #H9268
|
| 419 |
+
• Protamine Sulfate*, MP Biomedicals: #194729
|
| 420 |
+
• Puromycin*, Sigma-Aldrich: #P8833
|
| 421 |
+
• Target cells (varies based on your experiment)
|
| 422 |
+
• Culture media for target cells (varies based on your experiment)
|
| 423 |
+
• Materials for assay (varies based on your experiment)
|
| 424 |
+
|
| 425 |
+
Detailed protocols for preparing polybrene, protamine sulfate, and puromycin are
|
| 426 |
+
located in the "Appendix".
|
| 427 |
+
|
| 428 |
+
F.2. Determining the Optimal Puromycin Concentration
|
| 429 |
+
|
| 430 |
+
Each cell line responds differently to puromycin selection. Addgene strongly
|
| 431 |
+
recommends that you determine the optimal puromycin concentration for your cell
|
| 432 |
+
line before initiating your experiment.
|
| 433 |
+
|
| 434 |
+
Day 1:
|
| 435 |
+
|
| 436 |
+
a. Plate target cells in ten 6 cm plates and grow at 37°C, 5% CO₂ overnight.
|
| 437 |
+
|
| 438 |
+
Day 2:
|
| 439 |
+
|
| 440 |
+
b. The target cells should be approximately 80-90% confluent.
|
| 441 |
+
|
| 442 |
+
c. Dilute puromycin in the preferred culture media for your target cells. The final
|
| 443 |
+
concentration of puromycin should be from 1-10 μg/mL in 1 μg/mL increments.
|
| 444 |
+
|
| 445 |
+
d. Label plates from 1-10 and add appropriate puromycin-containing media to cells.
|
| 446 |
+
|
| 447 |
+
Days 3+:
|
| 448 |
+
|
| 449 |
+
e. Examine cells each day and change to fresh puromycin-containing media every
|
| 450 |
+
other day.
|
| 451 |
+
|
| 452 |
+
f. The minimum concentration of puromycin that results in complete cell death after
|
| 453 |
+
3-5 days is the concentration that should be used for selection in your
|
| 454 |
+
experiments. (You may wish to repeat this titration with finer increments of
|
| 455 |
+
puromycin to determine a more precise optimal puromycin concentration.)
|
| 456 |
+
|
| 457 |
+
F.3. Protocol for Lentiviral Infection and Selection
|
| 458 |
+
|
| 459 |
+
Day 1:
|
| 460 |
+
|
| 461 |
+
a. Plate target cells and incubate at 37°C, 5% CO₂ overnight.
|
| 462 |
+
|
| 463 |
+
Day 2:
|
| 464 |
+
|
| 465 |
+
b. Target cells should be approximately 70% confluent. Change to fresh culture
|
| 466 |
+
media containing 8 μg/mL polybrene.
|
| 467 |
+
|
| 468 |
+
TIP: Polybrene increases the efficiency of viral infection. However, polybrene
|
| 469 |
+
is toxic to some cell lines. In these cell lines, substitute protamine sulfate
|
| 470 |
+
for polybrene.
|
| 471 |
+
|
| 472 |
+
c. Add lentiviral particle solution from step E. For a 6 cm target plate, add
|
| 473 |
+
between 0.5–1 mL virus (add 0.5 mL for a high MOI, and 0.1 mL for a low MOI).
|
| 474 |
+
Scale the amount of virus added depending on the size of your target plate.
|
| 475 |
+
|
| 476 |
+
TIP: MOI (multiplicity of infection) refers to the number of infecting viral
|
| 477 |
+
particles per cell. Addgene recommends that you test a range of MOIs to
|
| 478 |
+
determine the optimal MOI for infection and gene silencing in your target cell
|
| 479 |
+
line.
|
| 480 |
+
|
| 481 |
+
d. Incubate cells at 37°C, 5% CO₂ overnight.
|
| 482 |
+
|
| 483 |
+
Day 3:
|
| 484 |
+
|
| 485 |
+
e. Change to fresh media 24 hours after infection.
|
| 486 |
+
|
| 487 |
+
TIP: If viral toxicity is observed in your cell line, you may decrease the
|
| 488 |
+
infection time to between 4 – 20 hours. Remove the virus-containing media and
|
| 489 |
+
replace with fresh media. Do not add puromycin until at least 24 hours after
|
| 490 |
+
infection to allow for sufficient expression of the puromycin resistance gene.
|
| 491 |
+
|
| 492 |
+
f. To select for infected cells, add puromycin to the media at the concentration
|
| 493 |
+
determined in step F.2.
|
| 494 |
+
|
| 495 |
+
Addgene recommends that you maintain one uninfected plate of cells in parallel.
|
| 496 |
+
This plate will serve as a positive control for the puromycin selection.
|
| 497 |
+
|
| 498 |
+
Days 4+:
|
| 499 |
+
|
| 500 |
+
g. Change to fresh puromycin-containing media as needed every few days.
|
| 501 |
+
|
| 502 |
+
h. Assay infected cells. The following recommendations are guidelines for the
|
| 503 |
+
number of days you should wait until harvesting your cells. However, you should
|
| 504 |
+
optimize the time based on your cell line and assay:
|
| 505 |
+
|
| 506 |
+
Assay | Days post-infection
|
| 507 |
+
------------------------|--------------------
|
| 508 |
+
mRNA knockdown | ≥3 days
|
| 509 |
+
(quantitative PCR) |
|
| 510 |
+
Protein knockdown | ≥4 days
|
| 511 |
+
(western blot) |
|
| 512 |
+
Phenotypic assay | ≥4 days
|
| 513 |
+
|
| 514 |
+
|
| 515 |
+
G. SAFETY
|
| 516 |
+
================================================================================
|
| 517 |
+
|
| 518 |
+
BL2 safety practices should be followed when preparing and handling lentiviral
|
| 519 |
+
particles. Personal protective clothing should be worn at all times. Use plastic
|
| 520 |
+
pipettes in place of glass pipettes or needles. Liquid waste should be
|
| 521 |
+
decontaminated with at least 10% bleach. Laboratory materials that come in contact
|
| 522 |
+
with viral particles should be treated as biohazardous waste and autoclaved.
|
| 523 |
+
Please follow all safety guidelines from your institution and from the CDC and NIH
|
| 524 |
+
for work in a BL2 facility.
|
| 525 |
+
|
| 526 |
+
If you have any questions about what safety practice to follow, please contact your
|
| 527 |
+
institution's safety office.
|
| 528 |
+
|
| 529 |
+
For more information, please see Addgene's Biosafety Guide.
|
| 530 |
+
|
| 531 |
+
|
| 532 |
+
H. REFERENCES
|
| 533 |
+
================================================================================
|
| 534 |
+
|
| 535 |
+
H.1. Published Articles
|
| 536 |
+
|
| 537 |
+
• Functional siRNAs and miRNAs exhibit strand bias. Khvorova A et. al. Cell. 2003.
|
| 538 |
+
115:209-216.
|
| 539 |
+
|
| 540 |
+
• A lentiviral RNAi library for human and mouse genes applied to an arrayed viral
|
| 541 |
+
high-content screen. Moffat J et. al. Cell. 2006. 124:1283-1298.
|
| 542 |
+
|
| 543 |
+
• In vivo gene delivery and stable transduction of nondividing cells by a lentiviral
|
| 544 |
+
vector. Naldini L et. al. Science. 1996 272:263-267.
|
| 545 |
+
|
| 546 |
+
• Asymmetry in the assembly of the RNAi enzyme complex. Schwarz DS et. al. Cell.
|
| 547 |
+
2003. 115:199-208.
|
| 548 |
+
|
| 549 |
+
• Lentivirus-delivered stable gene silencing by RNAi in primary cells. Stewart SA
|
| 550 |
+
et. al. RNA. 2003. 9(4):493-501.
|
| 551 |
+
|
| 552 |
+
• Multiply attenuated lentiviral vector achieves efficient gene delivery in vivo.
|
| 553 |
+
Zufferey R et. al. Nat Biotechnol. 1997. 15(9):871-5.
|
| 554 |
+
|
| 555 |
+
• Self-inactivating lentivirus vector for safe and efficient in vivo gene delivery.
|
| 556 |
+
Zufferey R et. al. J Virol. 1998. 72(12):9873-80.
|
| 557 |
+
|
| 558 |
+
H.2. Web resources
|
| 559 |
+
|
| 560 |
+
• Addgene's mammalian RNAi website: www.addgene.org/mammalianrnai
|
| 561 |
+
|
| 562 |
+
• The RNAi Consortium (TRC): www.broad.mit.edu/genome_bio/trc/rnai.html
|
| 563 |
+
|
| 564 |
+
• Background on RNAi mechanism: RNAi animation
|
| 565 |
+
|
| 566 |
+
• Whitehead siRNA Selection Program: http://sirna.wi.mit.edu/
|
| 567 |
+
|
| 568 |
+
|
| 569 |
+
I. APPENDIX
|
| 570 |
+
================================================================================
|
| 571 |
+
|
| 572 |
+
I.1. Sequence of pLKO.1 TRC-Cloning Vector
|
| 573 |
+
|
| 574 |
+
Click here to see the sequence of pLKO.1 TRC-cloning vector. The vector is 8901
|
| 575 |
+
base pairs total, and the stuffer insert is shown in all capital letters.
|
| 576 |
+
|
| 577 |
+
I.2. Recipes
|
| 578 |
+
|
| 579 |
+
Luria Broth Agar (LB agar) + antibiotic
|
| 580 |
+
|
| 581 |
+
Per 40 grams of powder from American Bioanalytical catalog # AB01200-02000, LB
|
| 582 |
+
contains:
|
| 583 |
+
• 10g tryptone
|
| 584 |
+
• 5g yeast extract
|
| 585 |
+
• 10g sodium chloride
|
| 586 |
+
• 15g agar
|
| 587 |
+
|
| 588 |
+
Prepare LB agar solution by dissolving 40g of LB powder in 1L of distilled water.
|
| 589 |
+
Autoclave and cool to 55°C. Add 1mL of 100mg/mL ampicillin or carbenicillin to
|
| 590 |
+
obtain a final concentration of 100 μg/mL antibiotic. Pour plates and store at
|
| 591 |
+
4°C.
|
| 592 |
+
|
| 593 |
+
Hexadimethrine Bromide (Polybrene)
|
| 594 |
+
|
| 595 |
+
Prepare a 1mg/mL solution of polybrene (Sigma-Aldrich catalog #H9268) in 0.9%
|
| 596 |
+
NaCl. Autoclave to sterilize. Stock solution is stable at 4°C for up to one year.
|
| 597 |
+
The powder form of polybrene is stable at 4°C for several years.
|
| 598 |
+
|
| 599 |
+
Protamine Sulfate
|
| 600 |
+
|
| 601 |
+
Store protamine sulfate (MP Biomedicals catalog #194729) at 4°C. Freely soluble
|
| 602 |
+
in hot water and slightly soluble in cold water.
|
| 603 |
+
|
| 604 |
+
Puromycin
|
| 605 |
+
|
| 606 |
+
Prepare a 50mg/mL stock solution of puromycin (Sigma-Aldrich catalog #P8833) in
|
| 607 |
+
distilled water. Sterilize by passing through a 0.22 μm filter. Store aliquots at
|
| 608 |
+
-20°C.
|
| 609 |
+
|
| 610 |
+
I.3. Warranty Information
|
| 611 |
+
|
| 612 |
+
Addgene is committed to providing scientists with high-quality goods and services.
|
| 613 |
+
Addgene makes every effort to ensure the accuracy of its literature, but realizes
|
| 614 |
+
that typographical or other errors may occur. Addgene makes no warranty of any kind
|
| 615 |
+
regarding the contents of any literature. Literature are provided to you as a guide
|
| 616 |
+
and on an "AS IS" "AS AVAILABLE" basis without warranty of any kind either
|
| 617 |
+
expressed or implied, including but not limited to the implied warranties of
|
| 618 |
+
fitness for a particular purpose, non-infringement, typicality, safety and
|
| 619 |
+
accuracy.
|
| 620 |
+
|
| 621 |
+
The distribution of any literature by Addgene is not meant to carry with it, and
|
| 622 |
+
does not grant any license or rights of access or use to the materials described in
|
| 623 |
+
the literature.
|
| 624 |
+
|
| 625 |
+
The distribution of materials by Addgene is not meant to carry with it, and does
|
| 626 |
+
not grant any license, express or implied, under any patent. All transfers of
|
| 627 |
+
materials from Addgene to any party are governed by Addgene's Terms of Use,
|
| 628 |
+
Addgene's Terms of Purchase, and applicable Material Transfer Agreements between
|
| 629 |
+
the party that deposited the material at Addgene and the party receiving the
|
| 630 |
+
material.
|
Biomni/biomni/tool/protocols/addgene/Addgene_ Using a Light Microscope Protocol.txt
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
PROTOCOL: Using a Light Microscope Protocol
|
| 2 |
+
SOURCE: https://www.addgene.org/protocols/light-microscope/
|
| 3 |
+
================================================================================
|
| 4 |
+
|
| 5 |
+
INTRODUCTION
|
| 6 |
+
================================================================================
|
| 7 |
+
|
| 8 |
+
Microscopes are emblematic of biological research and are found in many different
|
| 9 |
+
types of laboratories. These tools allow you to observe specimens much smaller than
|
| 10 |
+
you would be able to with your naked eye, like microbes in a drop of pond water or
|
| 11 |
+
the cells in your cell culture dish. Microscopes come in a huge range of shapes and
|
| 12 |
+
sizes - from phone-sized, foldable microscopes that aren't very powerful (but are
|
| 13 |
+
cheap and accessible) to massive transmission electron microscopes that allow us to
|
| 14 |
+
see cellular components with science-fiction levels of detail. You can take entire
|
| 15 |
+
courses on microscopy and still have more to learn, so, for this protocol, we'll
|
| 16 |
+
focus on one of the most common types that you're likely to encounter: the compound
|
| 17 |
+
light microscope.
|
| 18 |
+
|
| 19 |
+
As the name suggests, light microscopes take advantage of the physical properties of
|
| 20 |
+
light to detect small objects. Two of the most important properties of a microscope
|
| 21 |
+
are magnification (the ability to make an image larger) and resolution (the ability
|
| 22 |
+
to distinguish between two discrete objects). Figure 1 depicts an image of a compound
|
| 23 |
+
light microscope with the main components labeled:
|
| 24 |
+
|
| 25 |
+
Main Components:
|
| 26 |
+
• Base
|
| 27 |
+
• Light Source
|
| 28 |
+
• Condenser and Diaphragm
|
| 29 |
+
• Stage
|
| 30 |
+
• Objective Lenses
|
| 31 |
+
• Focus Knobs (Fine and Coarse)
|
| 32 |
+
• Nosepiece
|
| 33 |
+
• Arm
|
| 34 |
+
• Ocular Lens (Eyepiece)
|
| 35 |
+
|
| 36 |
+
The route the light follows from the source to your eyes is called the light path.
|
| 37 |
+
Light travels from the light source through a condenser that helps concentrate the
|
| 38 |
+
light onto the sample, and then through the sample. However, some of that light
|
| 39 |
+
won't make it through the sample because different components of the specimen will
|
| 40 |
+
refract and reflect the light. These differences create contrast, which allows you
|
| 41 |
+
to distinguish objects within the sample. You can increase contrast by a) adjusting
|
| 42 |
+
the aperture of the condenser diaphragm to limit the amount of light hitting the
|
| 43 |
+
sample or b) using dyes or stains that add color to some components of the sample
|
| 44 |
+
but not others.
|
| 45 |
+
|
| 46 |
+
The light that does pass through the sample then travels through the objective lens
|
| 47 |
+
which magnifies the image, then the ocular lens, where the image is further
|
| 48 |
+
magnified before it finally reaches your eyes. These lenses determine the
|
| 49 |
+
magnification of the image and the resolution your microscope can achieve. You
|
| 50 |
+
achieve the highest resolution when your image is in focus, which you can control
|
| 51 |
+
using the focus knobs on the side of the microscope.
|
| 52 |
+
|
| 53 |
+
You may be wondering why there are multiple objective lenses. Each objective performs
|
| 54 |
+
essentially the same task but has different magnifying powers. When you look at the
|
| 55 |
+
side of an objective, you will see several pieces of information, but the most
|
| 56 |
+
important (for now) is the magnification power, such as 4x, 10x, or 20x. A 4x
|
| 57 |
+
objective magnifies the image four times the actual size, the 10x objective
|
| 58 |
+
magnifies it 10 times, and so on.
|
| 59 |
+
|
| 60 |
+
The ocular lens also provides magnification and the power should be provided on the
|
| 61 |
+
microscope; often this lens provides 10x magnification. To determine the final
|
| 62 |
+
magnification of your image, multiply the magnification of your objective lens by
|
| 63 |
+
the magnification of your ocular lens. For example, if you observe something using
|
| 64 |
+
the 10x objective and your ocular lens is also 10x, you would actually be seeing a
|
| 65 |
+
100x magnified image of that object!
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
EQUIPMENT
|
| 69 |
+
================================================================================
|
| 70 |
+
|
| 71 |
+
• Light Microscope
|
| 72 |
+
• Prepared Slides (or other sample that can fit on a microscope stage)
|
| 73 |
+
|
| 74 |
+
|
| 75 |
+
REAGENTS
|
| 76 |
+
================================================================================
|
| 77 |
+
|
| 78 |
+
None needed
|
| 79 |
+
|
| 80 |
+
|
| 81 |
+
PROCEDURE
|
| 82 |
+
================================================================================
|
| 83 |
+
|
| 84 |
+
1. Set up your microscope by removing any protective cover that may be on it and
|
| 85 |
+
plugging in the power source for the light.
|
| 86 |
+
|
| 87 |
+
💡 PRO TIP: If you have to move your microscope around the lab, be sure to
|
| 88 |
+
carry it with two hands - one hand supporting the base and the other holding
|
| 89 |
+
the arm - or use a cart.
|
| 90 |
+
|
| 91 |
+
2. Revolve the nosepiece so that the lowest power objective is directly over the
|
| 92 |
+
stage. It is best practice to start with the lowest power objective to find your
|
| 93 |
+
sample.
|
| 94 |
+
|
| 95 |
+
3. Place your slide (or other sample type) on the microscope stage. If using a
|
| 96 |
+
slide, you can secure it into place using the metal clips on the stage.
|
| 97 |
+
|
| 98 |
+
4. Turn on the power source and use the stage arm to move the stage so that the
|
| 99 |
+
light shines onto your sample.
|
| 100 |
+
|
| 101 |
+
5. To ensure that your sample is adequately illuminated, look through the
|
| 102 |
+
eyepiece. Adjust the power of the light source so that you can look through the
|
| 103 |
+
eyepiece comfortably. Then, close down the diaphragm and use the coarse focus
|
| 104 |
+
adjustment knob (the larger of the two focus knobs) until you can see the edges
|
| 105 |
+
of the aperture are in focus. Center the aperture in your field of view and
|
| 106 |
+
then slowly open the diaphragm until the edges are just out of view.
|
| 107 |
+
|
| 108 |
+
💡 PRO TIP: Looking through a microscope's eyepiece can take some practice.
|
| 109 |
+
Try to keep both eyes open and adjust the position of the eyepiece so that you
|
| 110 |
+
can see your image through both sides.
|
| 111 |
+
|
| 112 |
+
6. Once you are happy with the lighting, use the coarse focus knob to bring your
|
| 113 |
+
sample into focus. Once your sample is in focus, use the stage arm to move the
|
| 114 |
+
stage (and ultimately your slide) until your field of view is centered on a
|
| 115 |
+
region of interest. If needed, you can also use the fine focus knob (the smaller
|
| 116 |
+
of the focus knobs) to make minor adjustments to the focus.
|
| 117 |
+
|
| 118 |
+
7. After you are happy with the positioning and focus of your image on the lowest
|
| 119 |
+
magnification, you are ready to move up to the next objective. Take your eyes
|
| 120 |
+
away from the eyepiece and carefully revolve the nosepiece so that the next
|
| 121 |
+
objective is in position over your sample. As you increase magnification, you
|
| 122 |
+
will notice that the objectives get larger. Be careful to avoid hitting your
|
| 123 |
+
sample with the objective!
|
| 124 |
+
|
| 125 |
+
8. Once on the higher objective, you will likely need to re-adjust lighting and
|
| 126 |
+
focus. Increase the power of the light source by opening the diaphragm so that
|
| 127 |
+
you can easily see your sample. Then use the focus knobs to bring the sample
|
| 128 |
+
into focus.
|
| 129 |
+
|
| 130 |
+
💡 PRO TIP: As you increase your magnification, remember that the objectives
|
| 131 |
+
are larger. Adjust your focus slowly so that you don't accidentally hit your
|
| 132 |
+
slide and risk damaging the lens or your sample.
|
| 133 |
+
|
| 134 |
+
9. You can repeat steps 7 and 8 with progressively higher magnification lenses.
|
| 135 |
+
|
| 136 |
+
10. Depending on why you are using the microscope you may wish to record your
|
| 137 |
+
observations. Some microscopes have digital cameras attached to them that
|
| 138 |
+
allow you to capture images directly to a computer, but many microscopes do
|
| 139 |
+
not and you may have to dust off your drawing skills. Regardless of your image
|
| 140 |
+
capture method, be sure to record the magnification used, any stains used in
|
| 141 |
+
your sample, and sample information so that you or others can interpret your
|
| 142 |
+
images in the future.
|
| 143 |
+
|
| 144 |
+
|
| 145 |
+
CONCLUSION
|
| 146 |
+
================================================================================
|
| 147 |
+
|
| 148 |
+
Like any important laboratory instrument, you should be sure to take care of your
|
| 149 |
+
microscope. Bumps, scratches, and dust can easily impair microscope performance. Be
|
| 150 |
+
sure to clean up your work area and microscope after use and store the microscope
|
| 151 |
+
appropriately.
|
Biomni/biomni/tool/protocols/addgene/Addgene_ Water Bath Protocol.txt
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
PROTOCOL: Water Bath Protocol
|
| 2 |
+
SOURCE: https://www.addgene.org/protocols/water-bath/
|
| 3 |
+
================================================================================
|
| 4 |
+
|
| 5 |
+
INTRODUCTION
|
| 6 |
+
================================================================================
|
| 7 |
+
|
| 8 |
+
A water bath is a piece of laboratory equipment that helps bring your materials to
|
| 9 |
+
a particular temperature, catalyze chemical reactions such as restriction digests
|
| 10 |
+
needed in molecular biology, and thaw cell lines. There are many different types of
|
| 11 |
+
water baths that exist as scientists work with tubes and bottles of different sizes
|
| 12 |
+
in the lab. Some water baths contain individual slots for heating up tubes while
|
| 13 |
+
other water baths hold many liters of water to incubate bottles and containers.
|
| 14 |
+
Water baths can also be placed in walk-in refrigerators to achieve a temperature
|
| 15 |
+
between 4°C and room temperature. This general protocol suits almost any water bath.
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
EQUIPMENT
|
| 19 |
+
================================================================================
|
| 20 |
+
|
| 21 |
+
• Water Bath
|
| 22 |
+
• 10% bleach or 70% ethanol
|
| 23 |
+
• Distilled water
|
| 24 |
+
• Disinfectant
|
| 25 |
+
• Thermometer
|
| 26 |
+
• Water bath weights and floats
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
REAGENTS
|
| 30 |
+
================================================================================
|
| 31 |
+
|
| 32 |
+
None needed
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
PROCEDURE
|
| 36 |
+
================================================================================
|
| 37 |
+
|
| 38 |
+
1. Ensure that the water bath and water bath cover are cleaned before filling the
|
| 39 |
+
water bath with water. You may use a 10% bleach solution or a 70% ethanol
|
| 40 |
+
solution to wipe down the inside of the water bath.
|
| 41 |
+
|
| 42 |
+
💡 PRO TIP: To properly maintain the water bath, empty and clean it regularly.
|
| 43 |
+
|
| 44 |
+
2. Determine the amount of water needed to fill the water bath, and be sure to
|
| 45 |
+
know what the maximum fill capacity is. Look for a "fill" line inside the water
|
| 46 |
+
bath or read the user manual. If you're filling up a water bath with individual
|
| 47 |
+
slots for tubes, remember that when you add the tube to the slots, it can cause
|
| 48 |
+
the water level to rise up and flow over the edge of the slide.
|
| 49 |
+
|
| 50 |
+
3. Fill the water bath with distilled water, not tap water, to prevent salts from
|
| 51 |
+
accumulating on the surfaces of the water bath as the water evaporates from the
|
| 52 |
+
tub. Disinfectant may be added to prevent growth of bacteria or fungi. There are
|
| 53 |
+
disinfectants designed to be used in water baths with instructions on the
|
| 54 |
+
bottle, for example, number of drops per liter.
|
| 55 |
+
|
| 56 |
+
4. Place a thermometer in the water bath. Oftentimes, the water bath will have a
|
| 57 |
+
spot to secure the thermometer in place.
|
| 58 |
+
|
| 59 |
+
5. Turn the water bath on and set the appropriate temperature as described in your
|
| 60 |
+
protocol. How to set the temperature will vary depending on the model of water
|
| 61 |
+
bath, but will likely involve a dial or a digital display you can set to the
|
| 62 |
+
correct temperature. Set up your water bath so that it will reach the desired
|
| 63 |
+
temperature by the time you need it for your experiment. Water baths tend to
|
| 64 |
+
heat up relatively slowly. Place the water bath cover on the top of the water
|
| 65 |
+
bath to prevent evaporation and maintain the desired temperature. This also
|
| 66 |
+
helps the water bath heat up quicker.
|
| 67 |
+
|
| 68 |
+
💡 PRO TIP: Set up the water bath 30 minutes to 1 hour before you need to use
|
| 69 |
+
it to allow the temperature to stabilize.
|
| 70 |
+
|
| 71 |
+
6. Use water resistant markers, such as permanent markers, to label your tubes
|
| 72 |
+
and/or containers that will go into the water bath. If you'll need to sterilize
|
| 73 |
+
your items after removing them from the water bath, be sure to use a marker that
|
| 74 |
+
is also resistant to chemicals such as ethanol. Writing on the tops of the
|
| 75 |
+
tubes and lids of items to be placed in the water bath is often better than
|
| 76 |
+
writing on the side of the tube. This way, as items are floating, you do not
|
| 77 |
+
need to necessarily maneuver the bottles or tubes to identify them.
|
| 78 |
+
|
| 79 |
+
7. Once the water bath is at the correct temperature, remove the lid and place your
|
| 80 |
+
tubes or bottles into the water bath. Many items may float in the water bath
|
| 81 |
+
when they are placed inside. Water bath floats can be used to secure tubes in
|
| 82 |
+
place and water bath weights can hold bottles in place.
|
| 83 |
+
|
| 84 |
+
8. After putting your tubes or bottles in the water bath, place the lid back on.
|
| 85 |
+
Note the time that you've put your materials in the water bath so that you know
|
| 86 |
+
when to take them out after your incubation is over.
|
| 87 |
+
|
| 88 |
+
Note: If you regularly use a water bath in the lab, you can leave the water in it
|
| 89 |
+
from previous uses. However, you will still need to regularly clean out the water
|
| 90 |
+
bath even if you are using disinfectants as described above in step 3. You will
|
| 91 |
+
also need to maintain the appropriate water level in the water bath so before use,
|
| 92 |
+
make sure that there is enough water inside.
|
Biomni/biomni/tool/protocols/thermofisher/BrdU Staining Protocol for Flow Cytometry _ Thermo Fisher Scientific - US.txt
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
PROTOCOL: BrdU Staining Protocol for Flow Cytometry
|
| 2 |
+
SOURCE: https://www.thermofisher.com/us/en/home/references/protocols/cell-and-tissue-analysis/protocols/brdu-staining-flow-cytometry.html
|
| 3 |
+
================================================================================
|
| 4 |
+
|
| 5 |
+
OVERVIEW
|
| 6 |
+
================================================================================
|
| 7 |
+
|
| 8 |
+
The BrdU Staining Kits for flow cytometry provide all necessary reagents and buffers for identifying and analyzing proliferating cells using flow cytometry. BrdU, or 5-bromo-2'-deoxyuridine, is a synthetic analog of thymidine that integrates into newly synthesized DNA during the S-phase of mitosis. This kit allows for the staining of BrdU-incorporated DNA, facilitating the examination of cell proliferation alongside other cell surface or intracellular markers of interest.
|
| 9 |
+
|
| 10 |
+
MATERIALS PROVIDED IN KIT
|
| 11 |
+
================================================================================
|
| 12 |
+
|
| 13 |
+
• BrdU (32.5 mM, 10 mg/mL): 5 x 1 mL sterile vials; store at ≤–70°C. Avoid multiple freeze-thaws. Vial should be opened under sterile conditions.
|
| 14 |
+
• DNase I (1 mg/mL; 0.3 mg/vial): 10 x 0.3 mL vials; store at ≤–70°C. Each vial can be used to treat 10 samples. Avoid multiple freeze-thaws.
|
| 15 |
+
• Anti-BrdU Antibody (clone BU20A), fluorochrome-conjugated: 1 x 100 test vial; store at 2–8°C.
|
| 16 |
+
• BrdU Staining Buffer Concentrate (4X): 1 x 30 mL bottle; store at 2–8°C. This buffer contains formaldehyde. Please handle appropriately.
|
| 17 |
+
• Fixation/Permeabilization Diluent: 1 x 100 mL bottle; store at 2–8°C.
|
| 18 |
+
|
| 19 |
+
OTHER MATERIALS NEEDED
|
| 20 |
+
================================================================================
|
| 21 |
+
|
| 22 |
+
• Sterile 1X PBS
|
| 23 |
+
• Flow Cytometry Staining Buffer
|
| 24 |
+
• 12 x 75 mm round bottom test tubes
|
| 25 |
+
• Optional:
|
| 26 |
+
- Primary antibodies (directly conjugated)
|
| 27 |
+
- Fixable Viability Dye (FVD): eFluor 450, eFluor 660, eFluor 780, eFluor 506, eFluor 520, or eFluor 455UV
|
| 28 |
+
|
| 29 |
+
NOTE: The antibodies used for surface staining can be added after BrdU and Fixable Viability Dye labeling (but before fixation). Alternatively, if the antibody(s) is known to recognize a formaldehyde-fixed epitope, it can be added concurrently with the BrdU antibody.
|
| 30 |
+
|
| 31 |
+
BrdU staining buffer working solution preparation
|
| 32 |
+
|
| 33 |
+
Prepare fresh 1X BrdU Staining Buffer working solution by diluting BrdU Staining Buffer Concentrate (1 part) with Fixation/Permeabilization Diluent (3 parts). Mix by gentle inversion, do not vortex. You will need 1 mL of the 1X BrdU Staining Buffer working solution for each sample. Use caution and handle appropriately as the buffer contains formaldehyde.
|
| 34 |
+
|
| 35 |
+
PROTOCOL
|
| 36 |
+
================================================================================
|
| 37 |
+
|
| 38 |
+
Step 1: In vitro labeling of 10⁵ to 10⁸ dividing cells with 10 µM BrdU for 45 minutes at 37°C.
|
| 39 |
+
|
| 40 |
+
1. Under sterile conditions thaw BrdU on ice and dilute to a working concentration of 1 mM with sterile 1X PBS.
|
| 41 |
+
2. Add 10 µM BrdU to each sample. (For example, add 10 µL of 1 mM BrdU directly to every milliliter of tissue culture medium.)
|
| 42 |
+
3. Incubate your cells long enough to allow incorporation of BrdU. The timing will be dependent on your culture conditions (e.g., stimulants used) and the proliferation kinetics of your cells. Therefore, the incubation time will need to be determined empirically. After the incubation, harvest the cells.
|
| 43 |
+
4. Wash cells by adding 2 mL of Flow Cytometry Staining Buffer (or azide-free PBS if proceeding to Step 2) and then centrifuge at 300–400 x g for 5 minutes at room temperature. Discard the supernatant.
|
| 44 |
+
|
| 45 |
+
Step 2: [Optional] Stain with fixable viability dye (FVD) to label dead cells before fixation.
|
| 46 |
+
|
| 47 |
+
Note: Allow the vial of Fixable Viability Dye to equilibrate to room temperature before opening. The dye must be used with azide-free PBS. For consistent staining of cells in tubes, do not stain in less than 0.5 mL. Please refer to our website Best Protocols (Viability Staining Protocol, Protocol C: Staining Dead Cells with Fixable Viability eFluor Dyes) for additional information. (Proceed to Step 3 if a FVD will not be used.)
|
| 48 |
+
|
| 49 |
+
1. Wash cells one additional time with 2 mL of azide-free PBS, as described in step 4 above.
|
| 50 |
+
2. Resuspend cells at 1–10 x 10⁶ cells/mL in azide-free PBS.
|
| 51 |
+
3. Add 1 μL of Fixable Viability Dye per 1 mL of cells and vortex immediately.
|
| 52 |
+
4. Incubate for 30 minutes at 2–8°C in the dark.
|
| 53 |
+
5. Wash cells 1–2 times with Flow Cytometry Staining Buffer, as described in step 4 above.
|
| 54 |
+
6. Resuspend cells at 1–10 x 10⁶ cells/mL in Flow Cytometry Staining Buffer.
|
| 55 |
+
|
| 56 |
+
Step 3: [Optional] Stain cell surface antigen(s).
|
| 57 |
+
|
| 58 |
+
Note: For additional information, please refer to Staining Cell Surface Antigens for Flow Cytometry. Proceed to Step 4 if cell surface antigens will not be examined or if the antibody(s) is known to recognize a formaldehyde-fixed epitope.
|
| 59 |
+
|
| 60 |
+
1. Aliquot 50 μL of cell suspension to each tube or well. The cell number should be determined empirically but can range from 10⁵ to 10⁸ cells/test per tube.
|
| 61 |
+
2. Add the recommended amount (refer to the Technical Data Sheet for each product) of each fluorochrome-conjugated primary antibody(s) in an appropriate volume of Flow Cytometry Staining Buffer such that the final staining volume is 100 μL. (For example, add 50 μL of an antibody mix to 50 μL of cells.) Mix gently.
|
| 62 |
+
3. Incubate for at least 30 minutes at 2–8°C in the dark.
|
| 63 |
+
4. Wash the cells twice with Flow Cytometry Staining Buffer, as described in step 4 under Step 1.
|
| 64 |
+
|
| 65 |
+
Step 4: Fix cells and intracellularly stain with Anti-BrdU.
|
| 66 |
+
|
| 67 |
+
1. Thaw DNase I solution on ice. Once thawed, prepare a working solution of DNase I by adding 300 µL of the DNase I solution to 700 µL of Flow Cytometry Staining Buffer and mix gently. Store on ice until ready for use in step 6 below.
|
| 68 |
+
2. If cells were not stained in Steps 2 or 3, aliquot 100 μL of cell suspension to each tube. The cell number should be determined empirically but can range from 10⁵ to 10⁸ cells/tube.
|
| 69 |
+
3. Gently resuspend the cells by pulse-vortexing once. This resuspension step is critical before the addition of the freshly prepared 1X BrdU Staining Buffer working solution.
|
| 70 |
+
4. Add 1 mL of freshly prepared 1X BrdU Staining Buffer working solution and mix gently. Incubate for 15 minutes at room temperature in the dark. Incubations may go longer (up to 14 hours) but should be determined empirically for each cell type.
|
| 71 |
+
5. Wash cells twice with Flow Cytometry Staining Buffer, as described in step 4 under Step 1.
|
| 72 |
+
6. Add 100 µL of the DNase I working solution that was prepared in step 1 to each sample. Incubate for 1 hour at 37°C in the dark.
|
| 73 |
+
7. Wash cells twice with Flow Cytometry Staining Buffer, as described in step 4 under Step 1.
|
| 74 |
+
8. Add 5 µL of Anti-BrdU fluorochrome-conjugated antibody per sample. Mix and incubate for 20–30 minutes at room temperature in the dark.
|
| 75 |
+
|
| 76 |
+
NOTE: Antibodies against intracellular antigens or surface antigens not stained in Step 3 may be added here. The antibodies used for surface staining at this step must recognize a fixed epitope. If an antibody only recognizes a native epitope or if this information is unknown, we recommend surface staining at Step 3.
|
| 77 |
+
|
| 78 |
+
9. Wash cells twice with Flow Cytometry Staining Buffer, as described in step 4 under Step 1.
|
| 79 |
+
|
| 80 |
+
Step 5: Acquire data on a flow cytometer.
|
| 81 |
+
|
| 82 |
+
PRODUCT CATALOG NUMBERS
|
| 83 |
+
================================================================================
|
| 84 |
+
|
| 85 |
+
8811-6600-42, 8817-6600-42, 8812-6600-42, 8848-6600-42, 8846-6600-42, 00-5525-00, 00-4222-26
|
Biomni/biomni/tool/tool_description/__pycache__/biophysics.cpython-311.pyc
ADDED
|
Binary file (1.85 kB). View file
|
|
|
Biomni/biomni/tool/tool_description/__pycache__/support_tools.cpython-311.pyc
ADDED
|
Binary file (2.25 kB). View file
|
|
|
Biomni/biomni/tool/tool_description/__pycache__/synthetic_biology.cpython-311.pyc
ADDED
|
Binary file (5.55 kB). View file
|
|
|
Biomni/biomni/tool/tool_description/biochemistry.py
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
description = [
|
| 2 |
+
{
|
| 3 |
+
"description": "Analyzes circular dichroism (CD) spectroscopy data to "
|
| 4 |
+
"determine secondary structure and thermal stability.",
|
| 5 |
+
"name": "analyze_circular_dichroism_spectra",
|
| 6 |
+
"optional_parameters": [
|
| 7 |
+
{
|
| 8 |
+
"default": None,
|
| 9 |
+
"description": "Temperature values (°C) for thermal denaturation experiment",
|
| 10 |
+
"name": "temperature_data",
|
| 11 |
+
"type": "list or numpy.ndarray",
|
| 12 |
+
},
|
| 13 |
+
{
|
| 14 |
+
"default": None,
|
| 15 |
+
"description": "CD signal values at specific wavelength across different temperatures",
|
| 16 |
+
"name": "thermal_cd_data",
|
| 17 |
+
"type": "list or numpy.ndarray",
|
| 18 |
+
},
|
| 19 |
+
{
|
| 20 |
+
"default": "./",
|
| 21 |
+
"description": "Directory to save result files",
|
| 22 |
+
"name": "output_dir",
|
| 23 |
+
"type": "str",
|
| 24 |
+
},
|
| 25 |
+
],
|
| 26 |
+
"required_parameters": [
|
| 27 |
+
{
|
| 28 |
+
"default": None,
|
| 29 |
+
"description": 'Name of the biomolecule sample (e.g., "Znf706", "G-quadruplex")',
|
| 30 |
+
"name": "sample_name",
|
| 31 |
+
"type": "str",
|
| 32 |
+
},
|
| 33 |
+
{
|
| 34 |
+
"default": None,
|
| 35 |
+
"description": 'Type of biomolecule ("protein" or "nucleic_acid")',
|
| 36 |
+
"name": "sample_type",
|
| 37 |
+
"type": "str",
|
| 38 |
+
},
|
| 39 |
+
{
|
| 40 |
+
"default": None,
|
| 41 |
+
"description": "Wavelength values in nm for CD spectrum",
|
| 42 |
+
"name": "wavelength_data",
|
| 43 |
+
"type": "list or numpy.ndarray",
|
| 44 |
+
},
|
| 45 |
+
{
|
| 46 |
+
"default": None,
|
| 47 |
+
"description": "CD signal intensity values (typically in mdeg or Δε)",
|
| 48 |
+
"name": "cd_signal_data",
|
| 49 |
+
"type": "list or numpy.ndarray",
|
| 50 |
+
},
|
| 51 |
+
],
|
| 52 |
+
},
|
| 53 |
+
{
|
| 54 |
+
"description": "Calculate numeric values for various structural features of an RNA secondary structure.",
|
| 55 |
+
"name": "analyze_rna_secondary_structure_features",
|
| 56 |
+
"optional_parameters": [
|
| 57 |
+
{
|
| 58 |
+
"default": None,
|
| 59 |
+
"description": "The RNA sequence corresponding to "
|
| 60 |
+
"the structure. If provided, "
|
| 61 |
+
"sequence-dependent energy "
|
| 62 |
+
"calculations will be performed.",
|
| 63 |
+
"name": "sequence",
|
| 64 |
+
"type": "str",
|
| 65 |
+
}
|
| 66 |
+
],
|
| 67 |
+
"required_parameters": [
|
| 68 |
+
{
|
| 69 |
+
"default": None,
|
| 70 |
+
"description": "RNA secondary structure in "
|
| 71 |
+
"dot-bracket notation (e.g., "
|
| 72 |
+
'"(((...)))"). Parentheses represent '
|
| 73 |
+
"base pairs, dots represent unpaired "
|
| 74 |
+
"bases.",
|
| 75 |
+
"name": "dot_bracket_structure",
|
| 76 |
+
"type": "str",
|
| 77 |
+
}
|
| 78 |
+
],
|
| 79 |
+
},
|
| 80 |
+
{
|
| 81 |
+
"description": "Analyze protease kinetics data from fluorogenic peptide "
|
| 82 |
+
"cleavage assays, fit the data to Michaelis-Menten kinetics, "
|
| 83 |
+
"and determine key kinetic parameters.",
|
| 84 |
+
"name": "analyze_protease_kinetics",
|
| 85 |
+
"optional_parameters": [
|
| 86 |
+
{
|
| 87 |
+
"default": "protease_kinetics",
|
| 88 |
+
"description": "Prefix for output files",
|
| 89 |
+
"name": "output_prefix",
|
| 90 |
+
"type": "str",
|
| 91 |
+
},
|
| 92 |
+
{
|
| 93 |
+
"default": "./",
|
| 94 |
+
"description": "Directory to save output files",
|
| 95 |
+
"name": "output_dir",
|
| 96 |
+
"type": "str",
|
| 97 |
+
},
|
| 98 |
+
],
|
| 99 |
+
"required_parameters": [
|
| 100 |
+
{
|
| 101 |
+
"default": None,
|
| 102 |
+
"description": "Array of time points (in seconds) at which measurements were taken",
|
| 103 |
+
"name": "time_points",
|
| 104 |
+
"type": "numpy.ndarray",
|
| 105 |
+
},
|
| 106 |
+
{
|
| 107 |
+
"default": None,
|
| 108 |
+
"description": "2D array of fluorescence "
|
| 109 |
+
"measurements where each row "
|
| 110 |
+
"corresponds to a different "
|
| 111 |
+
"substrate concentration and each "
|
| 112 |
+
"column corresponds to a time point",
|
| 113 |
+
"name": "fluorescence_data",
|
| 114 |
+
"type": "numpy.ndarray",
|
| 115 |
+
},
|
| 116 |
+
{
|
| 117 |
+
"default": None,
|
| 118 |
+
"description": "Array of substrate concentrations "
|
| 119 |
+
"(in μM) corresponding to each row "
|
| 120 |
+
"in fluorescence_data",
|
| 121 |
+
"name": "substrate_concentrations",
|
| 122 |
+
"type": "numpy.ndarray",
|
| 123 |
+
},
|
| 124 |
+
{
|
| 125 |
+
"default": None,
|
| 126 |
+
"description": "Concentration of the protease enzyme (in μM)",
|
| 127 |
+
"name": "enzyme_concentration",
|
| 128 |
+
"type": "float",
|
| 129 |
+
},
|
| 130 |
+
],
|
| 131 |
+
},
|
| 132 |
+
{
|
| 133 |
+
"description": "Performs in vitro enzyme kinetics assay and analyzes the dose-dependent effects of modulators.",
|
| 134 |
+
"name": "analyze_enzyme_kinetics_assay",
|
| 135 |
+
"optional_parameters": [
|
| 136 |
+
{
|
| 137 |
+
"default": None,
|
| 138 |
+
"description": "Dictionary of modulators where keys "
|
| 139 |
+
"are modulator names and values are "
|
| 140 |
+
"lists of concentrations in μM",
|
| 141 |
+
"name": "modulators",
|
| 142 |
+
"type": "dict",
|
| 143 |
+
},
|
| 144 |
+
{
|
| 145 |
+
"default": None,
|
| 146 |
+
"description": "Time points in minutes for time-course measurements",
|
| 147 |
+
"name": "time_points",
|
| 148 |
+
"type": "list or numpy.ndarray",
|
| 149 |
+
},
|
| 150 |
+
{
|
| 151 |
+
"default": "./",
|
| 152 |
+
"description": "Directory to save output files",
|
| 153 |
+
"name": "output_dir",
|
| 154 |
+
"type": "str",
|
| 155 |
+
},
|
| 156 |
+
],
|
| 157 |
+
"required_parameters": [
|
| 158 |
+
{
|
| 159 |
+
"default": None,
|
| 160 |
+
"description": "Name of the purified enzyme being tested",
|
| 161 |
+
"name": "enzyme_name",
|
| 162 |
+
"type": "str",
|
| 163 |
+
},
|
| 164 |
+
{
|
| 165 |
+
"default": None,
|
| 166 |
+
"description": "List of substrate concentrations in μM for kinetic analysis",
|
| 167 |
+
"name": "substrate_concentrations",
|
| 168 |
+
"type": "list or numpy.ndarray",
|
| 169 |
+
},
|
| 170 |
+
{
|
| 171 |
+
"default": None,
|
| 172 |
+
"description": "Concentration of the enzyme in nM",
|
| 173 |
+
"name": "enzyme_concentration",
|
| 174 |
+
"type": "float",
|
| 175 |
+
},
|
| 176 |
+
],
|
| 177 |
+
},
|
| 178 |
+
{
|
| 179 |
+
"description": "Analyzes isothermal titration calorimetry (ITC) data to "
|
| 180 |
+
"determine binding affinity and thermodynamic parameters.",
|
| 181 |
+
"name": "analyze_itc_binding_thermodynamics",
|
| 182 |
+
"optional_parameters": [
|
| 183 |
+
{
|
| 184 |
+
"default": None,
|
| 185 |
+
"description": "Path to CSV or TSV file containing "
|
| 186 |
+
"ITC thermogram data with columns "
|
| 187 |
+
"for injection number, injection "
|
| 188 |
+
"volume, and heat released/absorbed.",
|
| 189 |
+
"name": "itc_data_path",
|
| 190 |
+
"type": "str",
|
| 191 |
+
},
|
| 192 |
+
{
|
| 193 |
+
"default": None,
|
| 194 |
+
"description": "Raw ITC thermogram data as a numpy "
|
| 195 |
+
"array with shape (n_injections, 3) "
|
| 196 |
+
"containing injection number, "
|
| 197 |
+
"injection volume, and heat.",
|
| 198 |
+
"name": "itc_data",
|
| 199 |
+
"type": "numpy.ndarray",
|
| 200 |
+
},
|
| 201 |
+
{
|
| 202 |
+
"default": 298.15,
|
| 203 |
+
"description": "Temperature in Kelvin at which the experiment was conducted.",
|
| 204 |
+
"name": "temperature",
|
| 205 |
+
"type": "float",
|
| 206 |
+
},
|
| 207 |
+
{
|
| 208 |
+
"default": None,
|
| 209 |
+
"description": "Initial concentration of protein in the cell in molar (M).",
|
| 210 |
+
"name": "protein_concentration",
|
| 211 |
+
"type": "float",
|
| 212 |
+
},
|
| 213 |
+
{
|
| 214 |
+
"default": None,
|
| 215 |
+
"description": "Concentration of ligand in the syringe in molar (M).",
|
| 216 |
+
"name": "ligand_concentration",
|
| 217 |
+
"type": "float",
|
| 218 |
+
},
|
| 219 |
+
],
|
| 220 |
+
"required_parameters": [],
|
| 221 |
+
},
|
| 222 |
+
{
|
| 223 |
+
"description": "Perform multiple sequence alignment and phylogenetic "
|
| 224 |
+
"analysis to identify conserved protein regions.",
|
| 225 |
+
"name": "analyze_protein_conservation",
|
| 226 |
+
"optional_parameters": [
|
| 227 |
+
{
|
| 228 |
+
"default": "./",
|
| 229 |
+
"description": "Directory to save output files",
|
| 230 |
+
"name": "output_dir",
|
| 231 |
+
"type": "str",
|
| 232 |
+
}
|
| 233 |
+
],
|
| 234 |
+
"required_parameters": [
|
| 235 |
+
{
|
| 236 |
+
"default": None,
|
| 237 |
+
"description": "List of protein sequences in FASTA format from multiple organisms.",
|
| 238 |
+
"name": "protein_sequences",
|
| 239 |
+
"type": "list of str",
|
| 240 |
+
}
|
| 241 |
+
],
|
| 242 |
+
},
|
| 243 |
+
]
|
Biomni/biomni/tool/tool_description/bioimaging.py
ADDED
|
@@ -0,0 +1,510 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
description = [
|
| 2 |
+
# Segmentation functions
|
| 3 |
+
{
|
| 4 |
+
"description": "Split a 4D NIfTI file into separate modality files for nnUNet processing. "
|
| 5 |
+
"Handles BRATS dataset format with FLAIR, T1w, t1gd, and T2w modalities.",
|
| 6 |
+
"name": "split_modalities",
|
| 7 |
+
"optional_parameters": [
|
| 8 |
+
{
|
| 9 |
+
"default": "BRAT",
|
| 10 |
+
"description": "Base name for the case files",
|
| 11 |
+
"name": "case_name",
|
| 12 |
+
"type": "str",
|
| 13 |
+
},
|
| 14 |
+
],
|
| 15 |
+
"required_parameters": [
|
| 16 |
+
{
|
| 17 |
+
"default": None,
|
| 18 |
+
"description": "Path to the 4D NIfTI file to split",
|
| 19 |
+
"name": "input_file",
|
| 20 |
+
"type": "str",
|
| 21 |
+
},
|
| 22 |
+
{
|
| 23 |
+
"default": None,
|
| 24 |
+
"description": "Directory to save the split modality files",
|
| 25 |
+
"name": "output_dir",
|
| 26 |
+
"type": "str",
|
| 27 |
+
},
|
| 28 |
+
],
|
| 29 |
+
},
|
| 30 |
+
{
|
| 31 |
+
"description": "Prepare input data for nnUNet by handling both 4D and pre-split modality files. "
|
| 32 |
+
"Automatically detects file format and prepares data accordingly.",
|
| 33 |
+
"name": "prepare_input_for_nnunet",
|
| 34 |
+
"optional_parameters": [
|
| 35 |
+
{
|
| 36 |
+
"default": "BRAT",
|
| 37 |
+
"description": "Base name for the case files",
|
| 38 |
+
"name": "case_name",
|
| 39 |
+
"type": "str",
|
| 40 |
+
},
|
| 41 |
+
],
|
| 42 |
+
"required_parameters": [
|
| 43 |
+
{
|
| 44 |
+
"default": None,
|
| 45 |
+
"description": "Path to input file or directory",
|
| 46 |
+
"name": "input_path",
|
| 47 |
+
"type": "str",
|
| 48 |
+
},
|
| 49 |
+
{
|
| 50 |
+
"default": None,
|
| 51 |
+
"description": "Directory to save prepared files",
|
| 52 |
+
"name": "output_dir",
|
| 53 |
+
"type": "str",
|
| 54 |
+
},
|
| 55 |
+
],
|
| 56 |
+
},
|
| 57 |
+
{
|
| 58 |
+
"description": "Segment images using nnUNet with proper environment setup. "
|
| 59 |
+
"Supports brain tumor segmentation and other medical image segmentation tasks.",
|
| 60 |
+
"name": "segment_with_nn_unet",
|
| 61 |
+
"optional_parameters": [
|
| 62 |
+
{
|
| 63 |
+
"default": "3d_fullres",
|
| 64 |
+
"description": "Model type for segmentation",
|
| 65 |
+
"name": "model_type",
|
| 66 |
+
"type": "str",
|
| 67 |
+
},
|
| 68 |
+
{
|
| 69 |
+
"default": [0, 1, 2, 3, 4],
|
| 70 |
+
"description": "Model folds to use for ensemble prediction",
|
| 71 |
+
"name": "folds",
|
| 72 |
+
"type": "list",
|
| 73 |
+
},
|
| 74 |
+
{
|
| 75 |
+
"default": False,
|
| 76 |
+
"description": "Use test time augmentation",
|
| 77 |
+
"name": "use_tta",
|
| 78 |
+
"type": "bool",
|
| 79 |
+
},
|
| 80 |
+
{
|
| 81 |
+
"default": 1,
|
| 82 |
+
"description": "Number of threads for preprocessing",
|
| 83 |
+
"name": "num_threads",
|
| 84 |
+
"type": "int",
|
| 85 |
+
},
|
| 86 |
+
{
|
| 87 |
+
"default": True,
|
| 88 |
+
"description": "Use mixed precision for faster inference",
|
| 89 |
+
"name": "mixed_precision",
|
| 90 |
+
"type": "bool",
|
| 91 |
+
},
|
| 92 |
+
{
|
| 93 |
+
"default": True,
|
| 94 |
+
"description": "Enable verbose logging",
|
| 95 |
+
"name": "verbose",
|
| 96 |
+
"type": "bool",
|
| 97 |
+
},
|
| 98 |
+
{
|
| 99 |
+
"default": True,
|
| 100 |
+
"description": "Automatically prepare input for nnUNet",
|
| 101 |
+
"name": "auto_prepare_input",
|
| 102 |
+
"type": "bool",
|
| 103 |
+
},
|
| 104 |
+
{
|
| 105 |
+
"default": None,
|
| 106 |
+
"description": "Path to nnUNet results folder",
|
| 107 |
+
"name": "results_folder",
|
| 108 |
+
"type": "str",
|
| 109 |
+
},
|
| 110 |
+
],
|
| 111 |
+
"required_parameters": [
|
| 112 |
+
{
|
| 113 |
+
"default": None,
|
| 114 |
+
"description": "Path to input image file or directory",
|
| 115 |
+
"name": "image_path",
|
| 116 |
+
"type": "str",
|
| 117 |
+
},
|
| 118 |
+
{
|
| 119 |
+
"default": None,
|
| 120 |
+
"description": "Directory to save segmentation results",
|
| 121 |
+
"name": "output_dir",
|
| 122 |
+
"type": "str",
|
| 123 |
+
},
|
| 124 |
+
{
|
| 125 |
+
"default": None,
|
| 126 |
+
"description": "Task identifier (e.g., 'Task001_BrainTumour')",
|
| 127 |
+
"name": "task_id",
|
| 128 |
+
"type": "str",
|
| 129 |
+
},
|
| 130 |
+
],
|
| 131 |
+
},
|
| 132 |
+
{
|
| 133 |
+
"description": "Create and save visualization of segmentation results using nilearn. "
|
| 134 |
+
"Generates overlay plots and multiple anatomical views.",
|
| 135 |
+
"name": "create_segmentation_visualization",
|
| 136 |
+
"optional_parameters": [
|
| 137 |
+
{
|
| 138 |
+
"default": "./visualization_output",
|
| 139 |
+
"description": "Directory to save visualization images",
|
| 140 |
+
"name": "output_dir",
|
| 141 |
+
"type": "str",
|
| 142 |
+
},
|
| 143 |
+
],
|
| 144 |
+
"required_parameters": [
|
| 145 |
+
{
|
| 146 |
+
"default": None,
|
| 147 |
+
"description": "Path to original MRI file",
|
| 148 |
+
"name": "original_mri",
|
| 149 |
+
"type": "str",
|
| 150 |
+
},
|
| 151 |
+
{
|
| 152 |
+
"default": None,
|
| 153 |
+
"description": "Path to segmentation file",
|
| 154 |
+
"name": "segmentation",
|
| 155 |
+
"type": "str",
|
| 156 |
+
},
|
| 157 |
+
],
|
| 158 |
+
},
|
| 159 |
+
# Image registration functions
|
| 160 |
+
{
|
| 161 |
+
"description": "Perform rigid image registration between two medical images using SimpleITK. "
|
| 162 |
+
"Rigid registration handles translation and rotation only, preserving shape and size. "
|
| 163 |
+
"Includes preprocessing, similarity metrics calculation, and visualization generation.",
|
| 164 |
+
"name": "quick_rigid_registration",
|
| 165 |
+
"optional_parameters": [
|
| 166 |
+
{
|
| 167 |
+
"default": "mutual_information",
|
| 168 |
+
"description": "Similarity metric for registration: 'mutual_information', 'mean_squares', 'correlation', or 'normalized_correlation'",
|
| 169 |
+
"name": "metric",
|
| 170 |
+
"type": "str",
|
| 171 |
+
},
|
| 172 |
+
{
|
| 173 |
+
"default": "gradient_descent",
|
| 174 |
+
"description": "Optimization method: 'gradient_descent', 'lbfgsb', 'powell', or 'amoeba'",
|
| 175 |
+
"name": "optimizer",
|
| 176 |
+
"type": "str",
|
| 177 |
+
},
|
| 178 |
+
{
|
| 179 |
+
"default": True,
|
| 180 |
+
"description": "Whether to preprocess images (denoising and normalization)",
|
| 181 |
+
"name": "preprocess",
|
| 182 |
+
"type": "bool",
|
| 183 |
+
},
|
| 184 |
+
{
|
| 185 |
+
"default": True,
|
| 186 |
+
"description": "Whether to create visualization plots",
|
| 187 |
+
"name": "create_visualizations",
|
| 188 |
+
"type": "bool",
|
| 189 |
+
},
|
| 190 |
+
{
|
| 191 |
+
"default": 0.01,
|
| 192 |
+
"description": "Learning rate for gradient descent optimizer",
|
| 193 |
+
"name": "learning_rate",
|
| 194 |
+
"type": "float",
|
| 195 |
+
},
|
| 196 |
+
{
|
| 197 |
+
"default": 100,
|
| 198 |
+
"description": "Maximum number of optimization iterations",
|
| 199 |
+
"name": "number_of_iterations",
|
| 200 |
+
"type": "int",
|
| 201 |
+
},
|
| 202 |
+
{
|
| 203 |
+
"default": 1e-6,
|
| 204 |
+
"description": "Convergence tolerance for optimization",
|
| 205 |
+
"name": "gradient_convergence_tolerance",
|
| 206 |
+
"type": "float",
|
| 207 |
+
},
|
| 208 |
+
],
|
| 209 |
+
"required_parameters": [
|
| 210 |
+
{
|
| 211 |
+
"default": None,
|
| 212 |
+
"description": "Path to the reference (fixed) image file (supports .nii, .nii.gz, .nrrd, .mha, .mhd formats)",
|
| 213 |
+
"name": "fixed_image_path",
|
| 214 |
+
"type": "str",
|
| 215 |
+
},
|
| 216 |
+
{
|
| 217 |
+
"default": None,
|
| 218 |
+
"description": "Path to the image to be registered (moving image)",
|
| 219 |
+
"name": "moving_image_path",
|
| 220 |
+
"type": "str",
|
| 221 |
+
},
|
| 222 |
+
{
|
| 223 |
+
"default": None,
|
| 224 |
+
"description": "Directory path to save registration results and outputs",
|
| 225 |
+
"name": "output_dir",
|
| 226 |
+
"type": "str",
|
| 227 |
+
},
|
| 228 |
+
],
|
| 229 |
+
},
|
| 230 |
+
{
|
| 231 |
+
"description": "Perform affine image registration between two medical images using SimpleITK. "
|
| 232 |
+
"Affine registration handles translation, rotation, scaling, and shearing. "
|
| 233 |
+
"More flexible than rigid registration but still preserves parallel lines.",
|
| 234 |
+
"name": "quick_affine_registration",
|
| 235 |
+
"optional_parameters": [
|
| 236 |
+
{
|
| 237 |
+
"default": "mutual_information",
|
| 238 |
+
"description": "Similarity metric for registration: 'mutual_information', 'mean_squares', 'correlation', or 'normalized_correlation'",
|
| 239 |
+
"name": "metric",
|
| 240 |
+
"type": "str",
|
| 241 |
+
},
|
| 242 |
+
{
|
| 243 |
+
"default": "gradient_descent",
|
| 244 |
+
"description": "Optimization method: 'gradient_descent', 'lbfgsb', 'powell', or 'amoeba'",
|
| 245 |
+
"name": "optimizer",
|
| 246 |
+
"type": "str",
|
| 247 |
+
},
|
| 248 |
+
{
|
| 249 |
+
"default": True,
|
| 250 |
+
"description": "Whether to preprocess images (denoising and normalization)",
|
| 251 |
+
"name": "preprocess",
|
| 252 |
+
"type": "bool",
|
| 253 |
+
},
|
| 254 |
+
{
|
| 255 |
+
"default": True,
|
| 256 |
+
"description": "Whether to create visualization plots",
|
| 257 |
+
"name": "create_visualizations",
|
| 258 |
+
"type": "bool",
|
| 259 |
+
},
|
| 260 |
+
{
|
| 261 |
+
"default": 0.01,
|
| 262 |
+
"description": "Learning rate for gradient descent optimizer",
|
| 263 |
+
"name": "learning_rate",
|
| 264 |
+
"type": "float",
|
| 265 |
+
},
|
| 266 |
+
{
|
| 267 |
+
"default": 100,
|
| 268 |
+
"description": "Maximum number of optimization iterations",
|
| 269 |
+
"name": "number_of_iterations",
|
| 270 |
+
"type": "int",
|
| 271 |
+
},
|
| 272 |
+
{
|
| 273 |
+
"default": 1e-6,
|
| 274 |
+
"description": "Convergence tolerance for optimization",
|
| 275 |
+
"name": "gradient_convergence_tolerance",
|
| 276 |
+
"type": "float",
|
| 277 |
+
},
|
| 278 |
+
],
|
| 279 |
+
"required_parameters": [
|
| 280 |
+
{
|
| 281 |
+
"default": None,
|
| 282 |
+
"description": "Path to the reference (fixed) image file (supports .nii, .nii.gz, .nrrd, .mha, .mhd formats)",
|
| 283 |
+
"name": "fixed_image_path",
|
| 284 |
+
"type": "str",
|
| 285 |
+
},
|
| 286 |
+
{
|
| 287 |
+
"default": None,
|
| 288 |
+
"description": "Path to the image to be registered (moving image)",
|
| 289 |
+
"name": "moving_image_path",
|
| 290 |
+
"type": "str",
|
| 291 |
+
},
|
| 292 |
+
{
|
| 293 |
+
"default": None,
|
| 294 |
+
"description": "Directory path to save registration results and outputs",
|
| 295 |
+
"name": "output_dir",
|
| 296 |
+
"type": "str",
|
| 297 |
+
},
|
| 298 |
+
],
|
| 299 |
+
},
|
| 300 |
+
{
|
| 301 |
+
"description": "Perform deformable (B-spline) image registration between two medical images using SimpleITK. "
|
| 302 |
+
"Deformable registration allows for local non-linear transformations, handling complex deformations. "
|
| 303 |
+
"Most flexible but computationally intensive registration method.",
|
| 304 |
+
"name": "quick_deformable_registration",
|
| 305 |
+
"optional_parameters": [
|
| 306 |
+
{
|
| 307 |
+
"default": "mutual_information",
|
| 308 |
+
"description": "Similarity metric for registration: 'mutual_information', 'mean_squares', 'correlation', or 'normalized_correlation'",
|
| 309 |
+
"name": "metric",
|
| 310 |
+
"type": "str",
|
| 311 |
+
},
|
| 312 |
+
{
|
| 313 |
+
"default": "gradient_descent",
|
| 314 |
+
"description": "Optimization method: 'gradient_descent', 'lbfgsb', 'powell', or 'amoeba'",
|
| 315 |
+
"name": "optimizer",
|
| 316 |
+
"type": "str",
|
| 317 |
+
},
|
| 318 |
+
{
|
| 319 |
+
"default": True,
|
| 320 |
+
"description": "Whether to preprocess images (denoising and normalization)",
|
| 321 |
+
"name": "preprocess",
|
| 322 |
+
"type": "bool",
|
| 323 |
+
},
|
| 324 |
+
{
|
| 325 |
+
"default": True,
|
| 326 |
+
"description": "Whether to create visualization plots",
|
| 327 |
+
"name": "create_visualizations",
|
| 328 |
+
"type": "bool",
|
| 329 |
+
},
|
| 330 |
+
{
|
| 331 |
+
"default": 0.01,
|
| 332 |
+
"description": "Learning rate for gradient descent optimizer",
|
| 333 |
+
"name": "learning_rate",
|
| 334 |
+
"type": "float",
|
| 335 |
+
},
|
| 336 |
+
{
|
| 337 |
+
"default": 100,
|
| 338 |
+
"description": "Maximum number of optimization iterations",
|
| 339 |
+
"name": "number_of_iterations",
|
| 340 |
+
"type": "int",
|
| 341 |
+
},
|
| 342 |
+
{
|
| 343 |
+
"default": 1e-6,
|
| 344 |
+
"description": "Convergence tolerance for optimization",
|
| 345 |
+
"name": "gradient_convergence_tolerance",
|
| 346 |
+
"type": "float",
|
| 347 |
+
},
|
| 348 |
+
{
|
| 349 |
+
"default": 4,
|
| 350 |
+
"description": "Number of B-spline control points per dimension for deformable registration",
|
| 351 |
+
"name": "number_of_control_points",
|
| 352 |
+
"type": "int",
|
| 353 |
+
},
|
| 354 |
+
],
|
| 355 |
+
"required_parameters": [
|
| 356 |
+
{
|
| 357 |
+
"default": None,
|
| 358 |
+
"description": "Path to the reference (fixed) image file (supports .nii, .nii.gz, .nrrd, .mha, .mhd formats)",
|
| 359 |
+
"name": "fixed_image_path",
|
| 360 |
+
"type": "str",
|
| 361 |
+
},
|
| 362 |
+
{
|
| 363 |
+
"default": None,
|
| 364 |
+
"description": "Path to the image to be registered (moving image)",
|
| 365 |
+
"name": "moving_image_path",
|
| 366 |
+
"type": "str",
|
| 367 |
+
},
|
| 368 |
+
{
|
| 369 |
+
"default": None,
|
| 370 |
+
"description": "Directory path to save registration results and outputs",
|
| 371 |
+
"name": "output_dir",
|
| 372 |
+
"type": "str",
|
| 373 |
+
},
|
| 374 |
+
],
|
| 375 |
+
},
|
| 376 |
+
{
|
| 377 |
+
"description": "Perform batch registration of multiple images to a single reference image. "
|
| 378 |
+
"Automatically processes all medical image files in a directory and registers them to the fixed reference. "
|
| 379 |
+
"Supports rigid, affine, or deformable registration for all images.",
|
| 380 |
+
"name": "batch_register_images",
|
| 381 |
+
"optional_parameters": [
|
| 382 |
+
{
|
| 383 |
+
"default": "rigid",
|
| 384 |
+
"description": "Type of registration to perform: 'rigid', 'affine', or 'deformable'",
|
| 385 |
+
"name": "transform_type",
|
| 386 |
+
"type": "str",
|
| 387 |
+
},
|
| 388 |
+
{
|
| 389 |
+
"default": "mutual_information",
|
| 390 |
+
"description": "Similarity metric for registration: 'mutual_information', 'mean_squares', 'correlation', or 'normalized_correlation'",
|
| 391 |
+
"name": "metric",
|
| 392 |
+
"type": "str",
|
| 393 |
+
},
|
| 394 |
+
{
|
| 395 |
+
"default": "gradient_descent",
|
| 396 |
+
"description": "Optimization method: 'gradient_descent', 'lbfgsb', 'powell', or 'amoeba'",
|
| 397 |
+
"name": "optimizer",
|
| 398 |
+
"type": "str",
|
| 399 |
+
},
|
| 400 |
+
{
|
| 401 |
+
"default": True,
|
| 402 |
+
"description": "Whether to preprocess images (denoising and normalization)",
|
| 403 |
+
"name": "preprocess",
|
| 404 |
+
"type": "bool",
|
| 405 |
+
},
|
| 406 |
+
{
|
| 407 |
+
"default": True,
|
| 408 |
+
"description": "Whether to create visualization plots for each registration",
|
| 409 |
+
"name": "create_visualizations",
|
| 410 |
+
"type": "bool",
|
| 411 |
+
},
|
| 412 |
+
{
|
| 413 |
+
"default": 0.01,
|
| 414 |
+
"description": "Learning rate for gradient descent optimizer",
|
| 415 |
+
"name": "learning_rate",
|
| 416 |
+
"type": "float",
|
| 417 |
+
},
|
| 418 |
+
{
|
| 419 |
+
"default": 100,
|
| 420 |
+
"description": "Maximum number of optimization iterations",
|
| 421 |
+
"name": "number_of_iterations",
|
| 422 |
+
"type": "int",
|
| 423 |
+
},
|
| 424 |
+
{
|
| 425 |
+
"default": 1e-6,
|
| 426 |
+
"description": "Convergence tolerance for optimization",
|
| 427 |
+
"name": "gradient_convergence_tolerance",
|
| 428 |
+
"type": "float",
|
| 429 |
+
},
|
| 430 |
+
],
|
| 431 |
+
"required_parameters": [
|
| 432 |
+
{
|
| 433 |
+
"default": None,
|
| 434 |
+
"description": "Path to the reference (fixed) image file",
|
| 435 |
+
"name": "fixed_image_path",
|
| 436 |
+
"type": "str",
|
| 437 |
+
},
|
| 438 |
+
{
|
| 439 |
+
"default": None,
|
| 440 |
+
"description": "Directory path containing multiple images to register (supports .nii, .nii.gz, .nrrd, .mha, .mhd formats)",
|
| 441 |
+
"name": "moving_images_dir",
|
| 442 |
+
"type": "str",
|
| 443 |
+
},
|
| 444 |
+
{
|
| 445 |
+
"default": None,
|
| 446 |
+
"description": "Directory path to save registration results for all images",
|
| 447 |
+
"name": "output_dir",
|
| 448 |
+
"type": "str",
|
| 449 |
+
},
|
| 450 |
+
],
|
| 451 |
+
},
|
| 452 |
+
{
|
| 453 |
+
"description": "Calculate similarity metrics between two medical images. "
|
| 454 |
+
"Supports mutual information, mean squared error, correlation, and normalized cross correlation.",
|
| 455 |
+
"name": "calculate_similarity_metrics",
|
| 456 |
+
"required_parameters": [
|
| 457 |
+
{
|
| 458 |
+
"default": None,
|
| 459 |
+
"description": "Path to the first image file",
|
| 460 |
+
"name": "image1_path",
|
| 461 |
+
"type": "str",
|
| 462 |
+
},
|
| 463 |
+
{
|
| 464 |
+
"default": None,
|
| 465 |
+
"description": "Path to the second image file",
|
| 466 |
+
"name": "image2_path",
|
| 467 |
+
"type": "str",
|
| 468 |
+
},
|
| 469 |
+
],
|
| 470 |
+
},
|
| 471 |
+
{
|
| 472 |
+
"description": "Create visualization plots for registration results. "
|
| 473 |
+
"Generates comparison plots, difference images, overlays, and metric charts.",
|
| 474 |
+
"name": "create_registration_visualization",
|
| 475 |
+
"optional_parameters": [
|
| 476 |
+
{
|
| 477 |
+
"default": "registration",
|
| 478 |
+
"description": "Prefix for output files",
|
| 479 |
+
"name": "prefix",
|
| 480 |
+
"type": "str",
|
| 481 |
+
},
|
| 482 |
+
],
|
| 483 |
+
"required_parameters": [
|
| 484 |
+
{
|
| 485 |
+
"default": None,
|
| 486 |
+
"description": "Path to the reference (fixed) image file",
|
| 487 |
+
"name": "fixed_image_path",
|
| 488 |
+
"type": "str",
|
| 489 |
+
},
|
| 490 |
+
{
|
| 491 |
+
"default": None,
|
| 492 |
+
"description": "Path to the original moving image file",
|
| 493 |
+
"name": "moving_image_path",
|
| 494 |
+
"type": "str",
|
| 495 |
+
},
|
| 496 |
+
{
|
| 497 |
+
"default": None,
|
| 498 |
+
"description": "Path to the registered image file",
|
| 499 |
+
"name": "registered_image_path",
|
| 500 |
+
"type": "str",
|
| 501 |
+
},
|
| 502 |
+
{
|
| 503 |
+
"default": None,
|
| 504 |
+
"description": "Directory to save visualization files",
|
| 505 |
+
"name": "output_dir",
|
| 506 |
+
"type": "str",
|
| 507 |
+
},
|
| 508 |
+
],
|
| 509 |
+
},
|
| 510 |
+
]
|
Biomni/biomni/tool/tool_description/cancer_biology.py
ADDED
|
@@ -0,0 +1,242 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
description = [
|
| 2 |
+
{
|
| 3 |
+
"description": "Analyze DNA Damage Response (DDR) network alterations and dependencies in cancer samples.",
|
| 4 |
+
"name": "analyze_ddr_network_in_cancer",
|
| 5 |
+
"optional_parameters": [
|
| 6 |
+
{
|
| 7 |
+
"default": "./results",
|
| 8 |
+
"description": "Directory to save output files",
|
| 9 |
+
"name": "output_dir",
|
| 10 |
+
"type": "str",
|
| 11 |
+
}
|
| 12 |
+
],
|
| 13 |
+
"required_parameters": [
|
| 14 |
+
{
|
| 15 |
+
"default": None,
|
| 16 |
+
"description": "Path to gene expression data file (CSV format with genes as rows, samples as columns)",
|
| 17 |
+
"name": "expression_data_path",
|
| 18 |
+
"type": "str",
|
| 19 |
+
},
|
| 20 |
+
{
|
| 21 |
+
"default": None,
|
| 22 |
+
"description": "Path to mutation data file (CSV "
|
| 23 |
+
"format with genes as rows, samples "
|
| 24 |
+
"as columns, values indicating "
|
| 25 |
+
"mutation status)",
|
| 26 |
+
"name": "mutation_data_path",
|
| 27 |
+
"type": "str",
|
| 28 |
+
},
|
| 29 |
+
],
|
| 30 |
+
},
|
| 31 |
+
{
|
| 32 |
+
"description": "Analyze flow cytometry data to quantify senescent and apoptotic cell populations.",
|
| 33 |
+
"name": "analyze_cell_senescence_and_apoptosis",
|
| 34 |
+
"optional_parameters": [],
|
| 35 |
+
"required_parameters": [
|
| 36 |
+
{
|
| 37 |
+
"default": None,
|
| 38 |
+
"description": "Path to the FCS file containing "
|
| 39 |
+
"flow cytometry data with "
|
| 40 |
+
"measurements for "
|
| 41 |
+
"senescence-associated "
|
| 42 |
+
"β-galactosidase (SA-β-Gal) and "
|
| 43 |
+
"Annexin V/7-AAD staining",
|
| 44 |
+
"name": "fcs_file_path",
|
| 45 |
+
"type": "str",
|
| 46 |
+
}
|
| 47 |
+
],
|
| 48 |
+
},
|
| 49 |
+
{
|
| 50 |
+
"description": "Detects and annotates somatic mutations in tumor samples "
|
| 51 |
+
"compared to matched normal samples using GATK Mutect2 for "
|
| 52 |
+
"variant calling, GATK FilterMutectCalls for filtering, and "
|
| 53 |
+
"SnpEff for functional annotation.",
|
| 54 |
+
"name": "detect_and_annotate_somatic_mutations",
|
| 55 |
+
"optional_parameters": [
|
| 56 |
+
{
|
| 57 |
+
"default": "GRCh38.105",
|
| 58 |
+
"description": "SnpEff database to use for annotation",
|
| 59 |
+
"name": "snpeff_database",
|
| 60 |
+
"type": "str",
|
| 61 |
+
}
|
| 62 |
+
],
|
| 63 |
+
"required_parameters": [
|
| 64 |
+
{
|
| 65 |
+
"default": None,
|
| 66 |
+
"description": "Path to the tumor sample BAM file",
|
| 67 |
+
"name": "tumor_bam",
|
| 68 |
+
"type": "str",
|
| 69 |
+
},
|
| 70 |
+
{
|
| 71 |
+
"default": None,
|
| 72 |
+
"description": "Path to the matched normal sample BAM file",
|
| 73 |
+
"name": "normal_bam",
|
| 74 |
+
"type": "str",
|
| 75 |
+
},
|
| 76 |
+
{
|
| 77 |
+
"default": None,
|
| 78 |
+
"description": "Path to the reference genome FASTA file",
|
| 79 |
+
"name": "reference_genome",
|
| 80 |
+
"type": "str",
|
| 81 |
+
},
|
| 82 |
+
{
|
| 83 |
+
"default": None,
|
| 84 |
+
"description": "Prefix for output files",
|
| 85 |
+
"name": "output_prefix",
|
| 86 |
+
"type": "str",
|
| 87 |
+
},
|
| 88 |
+
],
|
| 89 |
+
},
|
| 90 |
+
{
|
| 91 |
+
"description": "Detects and characterizes structural variations (SVs) in "
|
| 92 |
+
"genomic sequencing data using LUMPY for SV detection "
|
| 93 |
+
"followed by annotation with COSMIC and/or ClinVar databases.",
|
| 94 |
+
"name": "detect_and_characterize_structural_variations",
|
| 95 |
+
"optional_parameters": [
|
| 96 |
+
{
|
| 97 |
+
"default": None,
|
| 98 |
+
"description": "Path to the COSMIC database for cancer annotation",
|
| 99 |
+
"name": "cosmic_db_path",
|
| 100 |
+
"type": "str",
|
| 101 |
+
},
|
| 102 |
+
{
|
| 103 |
+
"default": None,
|
| 104 |
+
"description": "Path to the ClinVar database for clinical annotation",
|
| 105 |
+
"name": "clinvar_db_path",
|
| 106 |
+
"type": "str",
|
| 107 |
+
},
|
| 108 |
+
],
|
| 109 |
+
"required_parameters": [
|
| 110 |
+
{
|
| 111 |
+
"default": None,
|
| 112 |
+
"description": "Path to the aligned sequencing data in BAM format",
|
| 113 |
+
"name": "bam_file_path",
|
| 114 |
+
"type": "str",
|
| 115 |
+
},
|
| 116 |
+
{
|
| 117 |
+
"default": None,
|
| 118 |
+
"description": "Path to the reference genome in FASTA format",
|
| 119 |
+
"name": "reference_genome_path",
|
| 120 |
+
"type": "str",
|
| 121 |
+
},
|
| 122 |
+
{
|
| 123 |
+
"default": None,
|
| 124 |
+
"description": "Directory where results will be saved",
|
| 125 |
+
"name": "output_dir",
|
| 126 |
+
"type": "str",
|
| 127 |
+
},
|
| 128 |
+
],
|
| 129 |
+
},
|
| 130 |
+
{
|
| 131 |
+
"description": "Performs Non-negative Matrix Factorization (NMF) on gene "
|
| 132 |
+
"expression data to extract metagenes and their associated "
|
| 133 |
+
"sample weights for tumor subtype identification.",
|
| 134 |
+
"name": "perform_gene_expression_nmf_analysis",
|
| 135 |
+
"optional_parameters": [
|
| 136 |
+
{
|
| 137 |
+
"default": 10,
|
| 138 |
+
"description": "Number of metagenes (components) to extract.",
|
| 139 |
+
"name": "n_components",
|
| 140 |
+
"type": "int",
|
| 141 |
+
},
|
| 142 |
+
{
|
| 143 |
+
"default": True,
|
| 144 |
+
"description": "Whether to normalize the expression data before applying NMF.",
|
| 145 |
+
"name": "normalize",
|
| 146 |
+
"type": "bool",
|
| 147 |
+
},
|
| 148 |
+
{
|
| 149 |
+
"default": "nmf_results",
|
| 150 |
+
"description": "Directory to save the output files.",
|
| 151 |
+
"name": "output_dir",
|
| 152 |
+
"type": "str",
|
| 153 |
+
},
|
| 154 |
+
{
|
| 155 |
+
"default": 42,
|
| 156 |
+
"description": "Random seed for reproducibility.",
|
| 157 |
+
"name": "random_state",
|
| 158 |
+
"type": "int",
|
| 159 |
+
},
|
| 160 |
+
],
|
| 161 |
+
"required_parameters": [
|
| 162 |
+
{
|
| 163 |
+
"default": None,
|
| 164 |
+
"description": "Path to a CSV or TSV file "
|
| 165 |
+
"containing gene expression data "
|
| 166 |
+
"with genes as rows and samples as "
|
| 167 |
+
"columns. Values should be "
|
| 168 |
+
"non-negative.",
|
| 169 |
+
"name": "expression_data_path",
|
| 170 |
+
"type": "str",
|
| 171 |
+
}
|
| 172 |
+
],
|
| 173 |
+
},
|
| 174 |
+
{
|
| 175 |
+
"description": "CNVkit-based copy number workflow performing CNV segmentation, purity & ploidy approximation, simplified HRD-style metrics, and focal amplification/deletion detection in selected genes.",
|
| 176 |
+
"name": "analyze_copy_number_purity_ploidy_and_focal_events",
|
| 177 |
+
"optional_parameters": [
|
| 178 |
+
{
|
| 179 |
+
"name": "normal_bam",
|
| 180 |
+
"type": "str",
|
| 181 |
+
"default": None,
|
| 182 |
+
"description": "Path to matched normal BAM (recommended for CNVkit)",
|
| 183 |
+
},
|
| 184 |
+
{
|
| 185 |
+
"name": "output_dir",
|
| 186 |
+
"type": "str",
|
| 187 |
+
"default": "cn_analysis_results",
|
| 188 |
+
"description": "Directory to store CNVkit workflow outputs",
|
| 189 |
+
},
|
| 190 |
+
{
|
| 191 |
+
"name": "targets_bed",
|
| 192 |
+
"type": "str",
|
| 193 |
+
"default": None,
|
| 194 |
+
"description": "BED file of target regions for CNVkit (panel/exome)",
|
| 195 |
+
},
|
| 196 |
+
{
|
| 197 |
+
"name": "antitargets_bed",
|
| 198 |
+
"type": "str",
|
| 199 |
+
"default": None,
|
| 200 |
+
"description": "BED file of antitarget regions for CNVkit",
|
| 201 |
+
},
|
| 202 |
+
{
|
| 203 |
+
"name": "gene_bed",
|
| 204 |
+
"type": "str",
|
| 205 |
+
"default": None,
|
| 206 |
+
"description": "Gene BED (chrom, start, end, gene) for focal event annotation",
|
| 207 |
+
},
|
| 208 |
+
{
|
| 209 |
+
"name": "focal_genes",
|
| 210 |
+
"type": "list[str]",
|
| 211 |
+
"default": None,
|
| 212 |
+
"description": "Genes to highlight for focal events (defaults: MYC, ERBB2, CDKN2A)",
|
| 213 |
+
},
|
| 214 |
+
{
|
| 215 |
+
"name": "log2_amp_threshold",
|
| 216 |
+
"type": "float",
|
| 217 |
+
"default": 1.0,
|
| 218 |
+
"description": "Log2 ratio threshold for focal amplification calls",
|
| 219 |
+
},
|
| 220 |
+
{
|
| 221 |
+
"name": "log2_del_threshold",
|
| 222 |
+
"type": "float",
|
| 223 |
+
"default": -1.0,
|
| 224 |
+
"description": "Log2 ratio threshold for focal deep deletion calls",
|
| 225 |
+
},
|
| 226 |
+
],
|
| 227 |
+
"required_parameters": [
|
| 228 |
+
{
|
| 229 |
+
"name": "tumor_bam",
|
| 230 |
+
"type": "str",
|
| 231 |
+
"default": None,
|
| 232 |
+
"description": "Path to tumor BAM (indexed)",
|
| 233 |
+
},
|
| 234 |
+
{
|
| 235 |
+
"name": "reference_genome",
|
| 236 |
+
"type": "str",
|
| 237 |
+
"default": None,
|
| 238 |
+
"description": "Path to reference genome FASTA",
|
| 239 |
+
},
|
| 240 |
+
],
|
| 241 |
+
},
|
| 242 |
+
]
|
Biomni/biomni/tool/tool_description/cell_biology.py
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
description = [
|
| 2 |
+
{
|
| 3 |
+
"description": "Quantify the percentage of cells in each cell cycle phase "
|
| 4 |
+
"using Calcofluor white stained microscopy images.",
|
| 5 |
+
"name": "quantify_cell_cycle_phases_from_microscopy",
|
| 6 |
+
"optional_parameters": [
|
| 7 |
+
{
|
| 8 |
+
"default": "./results",
|
| 9 |
+
"description": "Directory to save results",
|
| 10 |
+
"name": "output_dir",
|
| 11 |
+
"type": "str",
|
| 12 |
+
}
|
| 13 |
+
],
|
| 14 |
+
"required_parameters": [
|
| 15 |
+
{
|
| 16 |
+
"default": None,
|
| 17 |
+
"description": "List of file paths to microscopy images of cells stained with Calcofluor white",
|
| 18 |
+
"name": "image_paths",
|
| 19 |
+
"type": "List[str]",
|
| 20 |
+
}
|
| 21 |
+
],
|
| 22 |
+
},
|
| 23 |
+
{
|
| 24 |
+
"description": "Quantify cell motility features from time-lapse microscopy "
|
| 25 |
+
"images and cluster cells based on motility patterns.",
|
| 26 |
+
"name": "quantify_and_cluster_cell_motility",
|
| 27 |
+
"optional_parameters": [
|
| 28 |
+
{
|
| 29 |
+
"default": "./results",
|
| 30 |
+
"description": "Directory to save output files",
|
| 31 |
+
"name": "output_dir",
|
| 32 |
+
"type": "str",
|
| 33 |
+
},
|
| 34 |
+
{
|
| 35 |
+
"default": 3,
|
| 36 |
+
"description": "Number of motility pattern clusters to identify",
|
| 37 |
+
"name": "num_clusters",
|
| 38 |
+
"type": "int",
|
| 39 |
+
},
|
| 40 |
+
],
|
| 41 |
+
"required_parameters": [
|
| 42 |
+
{
|
| 43 |
+
"default": None,
|
| 44 |
+
"description": "Path to directory containing time-lapse microscopy images in sequential order",
|
| 45 |
+
"name": "image_sequence_path",
|
| 46 |
+
"type": "str",
|
| 47 |
+
}
|
| 48 |
+
],
|
| 49 |
+
},
|
| 50 |
+
{
|
| 51 |
+
"description": "Performs Fluorescence-Activated Cell Sorting (FACS) to "
|
| 52 |
+
"enrich cell populations based on fluorescence "
|
| 53 |
+
"characteristics.",
|
| 54 |
+
"name": "perform_facs_cell_sorting",
|
| 55 |
+
"optional_parameters": [
|
| 56 |
+
{
|
| 57 |
+
"default": None,
|
| 58 |
+
"description": "Minimum threshold for the "
|
| 59 |
+
"fluorescence parameter. Cells below "
|
| 60 |
+
"this value will be excluded",
|
| 61 |
+
"name": "threshold_min",
|
| 62 |
+
"type": "float",
|
| 63 |
+
},
|
| 64 |
+
{
|
| 65 |
+
"default": None,
|
| 66 |
+
"description": "Maximum threshold for the "
|
| 67 |
+
"fluorescence parameter. Cells above "
|
| 68 |
+
"this value will be excluded",
|
| 69 |
+
"name": "threshold_max",
|
| 70 |
+
"type": "float",
|
| 71 |
+
},
|
| 72 |
+
{
|
| 73 |
+
"default": "sorted_cells.csv",
|
| 74 |
+
"description": "Filename to save the sorted cell population data",
|
| 75 |
+
"name": "output_file",
|
| 76 |
+
"type": "str",
|
| 77 |
+
},
|
| 78 |
+
],
|
| 79 |
+
"required_parameters": [
|
| 80 |
+
{
|
| 81 |
+
"default": None,
|
| 82 |
+
"description": "Path to the FCS file containing flow cytometry data",
|
| 83 |
+
"name": "cell_suspension_data",
|
| 84 |
+
"type": "str",
|
| 85 |
+
},
|
| 86 |
+
{
|
| 87 |
+
"default": None,
|
| 88 |
+
"description": "The fluorescence parameter to use for sorting (e.g., 'GFP', 'FITC', 'PE')",
|
| 89 |
+
"name": "fluorescence_parameter",
|
| 90 |
+
"type": "str",
|
| 91 |
+
},
|
| 92 |
+
],
|
| 93 |
+
},
|
| 94 |
+
{
|
| 95 |
+
"description": "Analyze flow cytometry data to identify and quantify "
|
| 96 |
+
"specific cell populations based on surface markers.",
|
| 97 |
+
"name": "analyze_flow_cytometry_immunophenotyping",
|
| 98 |
+
"optional_parameters": [
|
| 99 |
+
{
|
| 100 |
+
"default": None,
|
| 101 |
+
"description": "Spillover/compensation matrix to correct for fluorescence overlap",
|
| 102 |
+
"name": "compensation_matrix",
|
| 103 |
+
"type": "numpy.ndarray",
|
| 104 |
+
},
|
| 105 |
+
{
|
| 106 |
+
"default": "./results",
|
| 107 |
+
"description": "Directory to save the results",
|
| 108 |
+
"name": "output_dir",
|
| 109 |
+
"type": "str",
|
| 110 |
+
},
|
| 111 |
+
],
|
| 112 |
+
"required_parameters": [
|
| 113 |
+
{
|
| 114 |
+
"default": None,
|
| 115 |
+
"description": "Path to the FCS file containing flow cytometry data",
|
| 116 |
+
"name": "fcs_file_path",
|
| 117 |
+
"type": "str",
|
| 118 |
+
},
|
| 119 |
+
{
|
| 120 |
+
"default": None,
|
| 121 |
+
"description": "Dictionary defining the gating "
|
| 122 |
+
"strategy. Each key is a population "
|
| 123 |
+
"name, and each value is a list of "
|
| 124 |
+
"tuples (marker, operator, "
|
| 125 |
+
"threshold)",
|
| 126 |
+
"name": "gating_strategy",
|
| 127 |
+
"type": "dict",
|
| 128 |
+
},
|
| 129 |
+
],
|
| 130 |
+
},
|
| 131 |
+
{
|
| 132 |
+
"description": "Quantifies metrics of mitochondrial morphology and membrane "
|
| 133 |
+
"potential from fluorescence microscopy images.",
|
| 134 |
+
"name": "analyze_mitochondrial_morphology_and_potential",
|
| 135 |
+
"optional_parameters": [
|
| 136 |
+
{
|
| 137 |
+
"default": "./output",
|
| 138 |
+
"description": "Directory to save output files",
|
| 139 |
+
"name": "output_dir",
|
| 140 |
+
"type": "str",
|
| 141 |
+
}
|
| 142 |
+
],
|
| 143 |
+
"required_parameters": [
|
| 144 |
+
{
|
| 145 |
+
"default": None,
|
| 146 |
+
"description": "Path to the fluorescence microscopy "
|
| 147 |
+
"image showing mitochondrial "
|
| 148 |
+
"morphology (e.g., MTS-GFP)",
|
| 149 |
+
"name": "morphology_image_path",
|
| 150 |
+
"type": "str",
|
| 151 |
+
},
|
| 152 |
+
{
|
| 153 |
+
"default": None,
|
| 154 |
+
"description": "Path to the fluorescence microscopy "
|
| 155 |
+
"image showing mitochondrial "
|
| 156 |
+
"membrane potential (e.g., TMRE "
|
| 157 |
+
"staining)",
|
| 158 |
+
"name": "potential_image_path",
|
| 159 |
+
"type": "str",
|
| 160 |
+
},
|
| 161 |
+
],
|
| 162 |
+
},
|
| 163 |
+
]
|
Biomni/biomni/tool/tool_description/database.py
ADDED
|
@@ -0,0 +1,731 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
description = [
|
| 2 |
+
{
|
| 3 |
+
"description": "Query the UniProt REST API using either natural language or a direct endpoint.",
|
| 4 |
+
"name": "query_uniprot",
|
| 5 |
+
"optional_parameters": [
|
| 6 |
+
{
|
| 7 |
+
"default": None,
|
| 8 |
+
"description": "Full or partial UniProt API endpoint URL to query directly (e.g., 'https://rest.uniprot.org/uniprotkb/P01308')",
|
| 9 |
+
"name": "endpoint",
|
| 10 |
+
"type": "str",
|
| 11 |
+
},
|
| 12 |
+
{"default": 5, "description": "Maximum number of results to return", "name": "max_results", "type": "int"},
|
| 13 |
+
],
|
| 14 |
+
"required_parameters": [
|
| 15 |
+
{
|
| 16 |
+
"default": None,
|
| 17 |
+
"description": 'Natural language query about proteins (e.g., "Find information about human insulin")',
|
| 18 |
+
"name": "prompt",
|
| 19 |
+
"type": "str",
|
| 20 |
+
}
|
| 21 |
+
],
|
| 22 |
+
},
|
| 23 |
+
{
|
| 24 |
+
"description": "Query the AlphaFold Database API for protein structure predictions or metadata; optionally download structures.",
|
| 25 |
+
"name": "query_alphafold",
|
| 26 |
+
"optional_parameters": [
|
| 27 |
+
{
|
| 28 |
+
"name": "endpoint",
|
| 29 |
+
"type": "str",
|
| 30 |
+
"description": "Endpoint: 'prediction', 'summary', or 'annotations'",
|
| 31 |
+
"default": "prediction",
|
| 32 |
+
},
|
| 33 |
+
{"name": "residue_range", "type": "str", "description": "Residue range as 'start-end'", "default": None},
|
| 34 |
+
{"name": "download", "type": "bool", "description": "Whether to download structure file", "default": False},
|
| 35 |
+
{"name": "output_dir", "type": "str", "description": "Directory to save downloaded files", "default": None},
|
| 36 |
+
{"name": "file_format", "type": "str", "description": "Download format 'pdb' or 'cif'", "default": "pdb"},
|
| 37 |
+
{
|
| 38 |
+
"name": "model_version",
|
| 39 |
+
"type": "str",
|
| 40 |
+
"description": "AlphaFold model version (e.g., v4)",
|
| 41 |
+
"default": "v4",
|
| 42 |
+
},
|
| 43 |
+
{"name": "model_number", "type": "int", "description": "Model number (1-5)", "default": 1},
|
| 44 |
+
],
|
| 45 |
+
"required_parameters": [
|
| 46 |
+
{
|
| 47 |
+
"name": "uniprot_id",
|
| 48 |
+
"type": "str",
|
| 49 |
+
"description": "UniProt accession ID (e.g., 'P12345')",
|
| 50 |
+
"default": None,
|
| 51 |
+
}
|
| 52 |
+
],
|
| 53 |
+
},
|
| 54 |
+
{
|
| 55 |
+
"description": "Query the InterPro REST API using natural language or a direct endpoint.",
|
| 56 |
+
"name": "query_interpro",
|
| 57 |
+
"optional_parameters": [
|
| 58 |
+
{"name": "endpoint", "type": "str", "description": "Endpoint path or full URL", "default": None},
|
| 59 |
+
{"name": "max_results", "type": "int", "description": "Max results per page", "default": 3},
|
| 60 |
+
],
|
| 61 |
+
"required_parameters": [
|
| 62 |
+
{
|
| 63 |
+
"name": "prompt",
|
| 64 |
+
"type": "str",
|
| 65 |
+
"description": "Natural language query about protein domains/families",
|
| 66 |
+
"default": None,
|
| 67 |
+
}
|
| 68 |
+
],
|
| 69 |
+
},
|
| 70 |
+
{
|
| 71 |
+
"description": "Query the RCSB PDB database using natural language or a direct structured query.",
|
| 72 |
+
"name": "query_pdb",
|
| 73 |
+
"optional_parameters": [
|
| 74 |
+
{"name": "query", "type": "dict", "description": "Direct RCSB Search API query JSON", "default": None},
|
| 75 |
+
{"name": "max_results", "type": "int", "description": "Maximum results to return", "default": 3},
|
| 76 |
+
],
|
| 77 |
+
"required_parameters": [
|
| 78 |
+
{
|
| 79 |
+
"name": "prompt",
|
| 80 |
+
"type": "str",
|
| 81 |
+
"description": "Natural language query about protein structures",
|
| 82 |
+
"default": None,
|
| 83 |
+
}
|
| 84 |
+
],
|
| 85 |
+
},
|
| 86 |
+
{
|
| 87 |
+
"description": "Retrieve detailed data and/or download files for PDB identifiers.",
|
| 88 |
+
"name": "query_pdb_identifiers",
|
| 89 |
+
"optional_parameters": [
|
| 90 |
+
{
|
| 91 |
+
"name": "return_type",
|
| 92 |
+
"type": "str",
|
| 93 |
+
"description": "'entry', 'assembly', 'polymer_entity', etc.",
|
| 94 |
+
"default": "entry",
|
| 95 |
+
},
|
| 96 |
+
{"name": "download", "type": "bool", "description": "Download PDB structure files", "default": False},
|
| 97 |
+
{
|
| 98 |
+
"name": "attributes",
|
| 99 |
+
"type": "List[str]",
|
| 100 |
+
"description": "Specific attributes to retrieve",
|
| 101 |
+
"default": None,
|
| 102 |
+
},
|
| 103 |
+
],
|
| 104 |
+
"required_parameters": [
|
| 105 |
+
{"name": "identifiers", "type": "List[str]", "description": "List of PDB identifiers", "default": None}
|
| 106 |
+
],
|
| 107 |
+
},
|
| 108 |
+
{
|
| 109 |
+
"description": "Take a natural language prompt and convert it to a structured KEGG API query.",
|
| 110 |
+
"name": "query_kegg",
|
| 111 |
+
"optional_parameters": [
|
| 112 |
+
{"name": "endpoint", "type": "str", "description": "Direct KEGG endpoint to query", "default": None},
|
| 113 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 114 |
+
],
|
| 115 |
+
"required_parameters": [
|
| 116 |
+
{"name": "prompt", "type": "str", "description": "Natural language query about KEGG data", "default": None}
|
| 117 |
+
],
|
| 118 |
+
},
|
| 119 |
+
{
|
| 120 |
+
"description": "Query the STRING protein interaction database using natural language or direct endpoint.",
|
| 121 |
+
"name": "query_stringdb",
|
| 122 |
+
"optional_parameters": [
|
| 123 |
+
{"name": "endpoint", "type": "str", "description": "Full URL to query directly", "default": None},
|
| 124 |
+
{
|
| 125 |
+
"name": "download_image",
|
| 126 |
+
"type": "bool",
|
| 127 |
+
"description": "Download image results if endpoint is image",
|
| 128 |
+
"default": False,
|
| 129 |
+
},
|
| 130 |
+
{"name": "output_dir", "type": "str", "description": "Directory to save downloaded files", "default": None},
|
| 131 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 132 |
+
],
|
| 133 |
+
"required_parameters": [
|
| 134 |
+
{
|
| 135 |
+
"name": "prompt",
|
| 136 |
+
"type": "str",
|
| 137 |
+
"description": "Natural language query about protein interactions",
|
| 138 |
+
"default": None,
|
| 139 |
+
}
|
| 140 |
+
],
|
| 141 |
+
},
|
| 142 |
+
{
|
| 143 |
+
"description": "Query the IUCN Red List API using natural language or a direct endpoint.",
|
| 144 |
+
"name": "query_iucn",
|
| 145 |
+
"optional_parameters": [
|
| 146 |
+
{
|
| 147 |
+
"name": "prompt",
|
| 148 |
+
"type": "str",
|
| 149 |
+
"description": "Natural language query about species conservation status",
|
| 150 |
+
"default": None,
|
| 151 |
+
},
|
| 152 |
+
{"name": "endpoint", "type": "str", "description": "Endpoint name or full URL", "default": None},
|
| 153 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 154 |
+
],
|
| 155 |
+
"required_parameters": [{"name": "token", "type": "str", "description": "IUCN API token", "default": ""}],
|
| 156 |
+
},
|
| 157 |
+
{
|
| 158 |
+
"description": "Query the Paleobiology Database (PBDB) API using natural language or a direct endpoint.",
|
| 159 |
+
"name": "query_paleobiology",
|
| 160 |
+
"optional_parameters": [
|
| 161 |
+
{"name": "endpoint", "type": "str", "description": "API endpoint name or full URL", "default": None},
|
| 162 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 163 |
+
],
|
| 164 |
+
"required_parameters": [
|
| 165 |
+
{
|
| 166 |
+
"name": "prompt",
|
| 167 |
+
"type": "str",
|
| 168 |
+
"description": "Natural language query about fossil records",
|
| 169 |
+
"default": None,
|
| 170 |
+
}
|
| 171 |
+
],
|
| 172 |
+
},
|
| 173 |
+
{
|
| 174 |
+
"description": "Query the JASPAR REST API for transcription factor binding profiles.",
|
| 175 |
+
"name": "query_jaspar",
|
| 176 |
+
"optional_parameters": [
|
| 177 |
+
{"name": "endpoint", "type": "str", "description": "API endpoint path or full URL", "default": None},
|
| 178 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 179 |
+
],
|
| 180 |
+
"required_parameters": [
|
| 181 |
+
{
|
| 182 |
+
"name": "prompt",
|
| 183 |
+
"type": "str",
|
| 184 |
+
"description": "Natural language query about TF binding profiles",
|
| 185 |
+
"default": None,
|
| 186 |
+
}
|
| 187 |
+
],
|
| 188 |
+
},
|
| 189 |
+
{
|
| 190 |
+
"description": "Query the World Register of Marine Species (WoRMS) REST API using natural language or a direct endpoint.",
|
| 191 |
+
"name": "query_worms",
|
| 192 |
+
"optional_parameters": [
|
| 193 |
+
{"name": "endpoint", "type": "str", "description": "Full URL or endpoint specification", "default": None},
|
| 194 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 195 |
+
],
|
| 196 |
+
"required_parameters": [
|
| 197 |
+
{
|
| 198 |
+
"name": "prompt",
|
| 199 |
+
"type": "str",
|
| 200 |
+
"description": "Natural language query about marine species",
|
| 201 |
+
"default": None,
|
| 202 |
+
}
|
| 203 |
+
],
|
| 204 |
+
},
|
| 205 |
+
{
|
| 206 |
+
"description": "Query the cBioPortal REST API using natural language or a direct endpoint.",
|
| 207 |
+
"name": "query_cbioportal",
|
| 208 |
+
"optional_parameters": [
|
| 209 |
+
{"name": "endpoint", "type": "str", "description": "API endpoint path or full URL", "default": None},
|
| 210 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 211 |
+
],
|
| 212 |
+
"required_parameters": [
|
| 213 |
+
{
|
| 214 |
+
"name": "prompt",
|
| 215 |
+
"type": "str",
|
| 216 |
+
"description": "Natural language query about cancer genomics",
|
| 217 |
+
"default": None,
|
| 218 |
+
}
|
| 219 |
+
],
|
| 220 |
+
},
|
| 221 |
+
{
|
| 222 |
+
"description": "Convert a natural language prompt into a structured ClinVar search query and run it.",
|
| 223 |
+
"name": "query_clinvar",
|
| 224 |
+
"optional_parameters": [
|
| 225 |
+
{"name": "search_term", "type": "str", "description": "Direct ClinVar search term", "default": None},
|
| 226 |
+
{"name": "max_results", "type": "int", "description": "Maximum number of results", "default": 3},
|
| 227 |
+
],
|
| 228 |
+
"required_parameters": [
|
| 229 |
+
{
|
| 230 |
+
"name": "prompt",
|
| 231 |
+
"type": "str",
|
| 232 |
+
"description": "Natural language query about genetic variants",
|
| 233 |
+
"default": None,
|
| 234 |
+
}
|
| 235 |
+
],
|
| 236 |
+
},
|
| 237 |
+
{
|
| 238 |
+
"description": "Query the NCBI GEO database (GDS/GEOPROFILES) using natural language or direct search term.",
|
| 239 |
+
"name": "query_geo",
|
| 240 |
+
"optional_parameters": [
|
| 241 |
+
{"name": "search_term", "type": "str", "description": "Direct GEO search term", "default": None},
|
| 242 |
+
{"name": "max_results", "type": "int", "description": "Maximum number of results", "default": 3},
|
| 243 |
+
],
|
| 244 |
+
"required_parameters": [
|
| 245 |
+
{
|
| 246 |
+
"name": "prompt",
|
| 247 |
+
"type": "str",
|
| 248 |
+
"description": "Natural language query about expression data",
|
| 249 |
+
"default": None,
|
| 250 |
+
}
|
| 251 |
+
],
|
| 252 |
+
},
|
| 253 |
+
{
|
| 254 |
+
"description": "Query the NCBI dbSNP database using natural language or direct search term.",
|
| 255 |
+
"name": "query_dbsnp",
|
| 256 |
+
"optional_parameters": [
|
| 257 |
+
{"name": "search_term", "type": "str", "description": "Direct dbSNP search term", "default": None},
|
| 258 |
+
{"name": "max_results", "type": "int", "description": "Maximum number of results", "default": 3},
|
| 259 |
+
],
|
| 260 |
+
"required_parameters": [
|
| 261 |
+
{
|
| 262 |
+
"name": "prompt",
|
| 263 |
+
"type": "str",
|
| 264 |
+
"description": "Natural language query about SNPs/variants",
|
| 265 |
+
"default": None,
|
| 266 |
+
}
|
| 267 |
+
],
|
| 268 |
+
},
|
| 269 |
+
{
|
| 270 |
+
"description": "Query the UCSC Genome Browser API using natural language or a direct endpoint.",
|
| 271 |
+
"name": "query_ucsc",
|
| 272 |
+
"optional_parameters": [
|
| 273 |
+
{"name": "endpoint", "type": "str", "description": "Full URL or endpoint spec", "default": None},
|
| 274 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 275 |
+
],
|
| 276 |
+
"required_parameters": [
|
| 277 |
+
{
|
| 278 |
+
"name": "prompt",
|
| 279 |
+
"type": "str",
|
| 280 |
+
"description": "Natural language query about genomic data",
|
| 281 |
+
"default": None,
|
| 282 |
+
}
|
| 283 |
+
],
|
| 284 |
+
},
|
| 285 |
+
{
|
| 286 |
+
"description": "Query the Ensembl REST API using natural language or a direct endpoint.",
|
| 287 |
+
"name": "query_ensembl",
|
| 288 |
+
"optional_parameters": [
|
| 289 |
+
{"name": "endpoint", "type": "str", "description": "Direct Ensembl endpoint or full URL", "default": None},
|
| 290 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 291 |
+
],
|
| 292 |
+
"required_parameters": [
|
| 293 |
+
{
|
| 294 |
+
"name": "prompt",
|
| 295 |
+
"type": "str",
|
| 296 |
+
"description": "Natural language query about genomic data",
|
| 297 |
+
"default": None,
|
| 298 |
+
}
|
| 299 |
+
],
|
| 300 |
+
},
|
| 301 |
+
{
|
| 302 |
+
"description": "Query the OpenTargets Platform API using natural language or a direct GraphQL query.",
|
| 303 |
+
"name": "query_opentarget",
|
| 304 |
+
"optional_parameters": [
|
| 305 |
+
{"name": "query", "type": "str", "description": "Direct GraphQL query string", "default": None},
|
| 306 |
+
{"name": "variables", "type": "dict", "description": "Variables for GraphQL", "default": None},
|
| 307 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": False},
|
| 308 |
+
],
|
| 309 |
+
"required_parameters": [
|
| 310 |
+
{
|
| 311 |
+
"name": "prompt",
|
| 312 |
+
"type": "str",
|
| 313 |
+
"description": "Natural language query about targets/diseases",
|
| 314 |
+
"default": None,
|
| 315 |
+
}
|
| 316 |
+
],
|
| 317 |
+
},
|
| 318 |
+
{
|
| 319 |
+
"description": "Query the Monarch Initiative API using natural language or a direct endpoint.",
|
| 320 |
+
"name": "query_monarch",
|
| 321 |
+
"optional_parameters": [
|
| 322 |
+
{"name": "endpoint", "type": "str", "description": "Direct endpoint or full URL", "default": None},
|
| 323 |
+
{"name": "max_results", "type": "int", "description": "Max results (adds limit param)", "default": 2},
|
| 324 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": False},
|
| 325 |
+
],
|
| 326 |
+
"required_parameters": [
|
| 327 |
+
{
|
| 328 |
+
"name": "prompt",
|
| 329 |
+
"type": "str",
|
| 330 |
+
"description": "Natural language query about genes/diseases/phenotypes",
|
| 331 |
+
"default": None,
|
| 332 |
+
}
|
| 333 |
+
],
|
| 334 |
+
},
|
| 335 |
+
{
|
| 336 |
+
"description": "Query the OpenFDA API using natural language or direct parameters.",
|
| 337 |
+
"name": "query_openfda",
|
| 338 |
+
"optional_parameters": [
|
| 339 |
+
{"name": "endpoint", "type": "str", "description": "Direct endpoint or full URL", "default": None},
|
| 340 |
+
{"name": "max_results", "type": "int", "description": "Max results (limit)", "default": 100},
|
| 341 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 342 |
+
{"name": "search_params", "type": "dict", "description": "Search parameters mapping", "default": None},
|
| 343 |
+
{"name": "sort_params", "type": "dict", "description": "Sort parameters mapping", "default": None},
|
| 344 |
+
{"name": "count_params", "type": "str", "description": "Field to count", "default": None},
|
| 345 |
+
{"name": "skip_results", "type": "int", "description": "Skip for pagination", "default": 0},
|
| 346 |
+
],
|
| 347 |
+
"required_parameters": [
|
| 348 |
+
{
|
| 349 |
+
"name": "prompt",
|
| 350 |
+
"type": "str",
|
| 351 |
+
"description": "Natural language query about OpenFDA data",
|
| 352 |
+
"default": None,
|
| 353 |
+
}
|
| 354 |
+
],
|
| 355 |
+
},
|
| 356 |
+
{
|
| 357 |
+
"description": "Query the GWAS Catalog API using natural language or a direct endpoint.",
|
| 358 |
+
"name": "query_gwas_catalog",
|
| 359 |
+
"optional_parameters": [
|
| 360 |
+
{"name": "endpoint", "type": "str", "description": "Endpoint name (e.g., 'studies')", "default": None},
|
| 361 |
+
{"name": "max_results", "type": "int", "description": "Max results per page (size)", "default": 3},
|
| 362 |
+
],
|
| 363 |
+
"required_parameters": [
|
| 364 |
+
{"name": "prompt", "type": "str", "description": "Natural language query about GWAS data", "default": None}
|
| 365 |
+
],
|
| 366 |
+
},
|
| 367 |
+
{
|
| 368 |
+
"description": "Query gnomAD for variants in a gene using natural language or direct gene symbol.",
|
| 369 |
+
"name": "query_gnomad",
|
| 370 |
+
"optional_parameters": [
|
| 371 |
+
{"name": "gene_symbol", "type": "str", "description": "Gene symbol (e.g., 'BRCA1')", "default": None},
|
| 372 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 373 |
+
],
|
| 374 |
+
"required_parameters": [
|
| 375 |
+
{
|
| 376 |
+
"name": "prompt",
|
| 377 |
+
"type": "str",
|
| 378 |
+
"description": "Natural language query about genetic variants",
|
| 379 |
+
"default": None,
|
| 380 |
+
}
|
| 381 |
+
],
|
| 382 |
+
},
|
| 383 |
+
{
|
| 384 |
+
"description": "Identify a DNA or protein sequence using NCBI BLAST.",
|
| 385 |
+
"name": "blast_sequence",
|
| 386 |
+
"optional_parameters": [],
|
| 387 |
+
"required_parameters": [
|
| 388 |
+
{"name": "sequence", "type": "str", "description": "Query sequence", "default": None},
|
| 389 |
+
{"name": "database", "type": "str", "description": "BLAST database (e.g., core_nt or nr)", "default": None},
|
| 390 |
+
{"name": "program", "type": "str", "description": "BLAST program (blastn or blastp)", "default": None},
|
| 391 |
+
],
|
| 392 |
+
},
|
| 393 |
+
{
|
| 394 |
+
"description": "Query the Reactome database using natural language or a direct endpoint; optionally download pathway diagrams.",
|
| 395 |
+
"name": "query_reactome",
|
| 396 |
+
"optional_parameters": [
|
| 397 |
+
{"name": "endpoint", "type": "str", "description": "Direct endpoint or full URL", "default": None},
|
| 398 |
+
{
|
| 399 |
+
"name": "download",
|
| 400 |
+
"type": "bool",
|
| 401 |
+
"description": "Download pathway diagram if available",
|
| 402 |
+
"default": False,
|
| 403 |
+
},
|
| 404 |
+
{"name": "output_dir", "type": "str", "description": "Directory to save downloads", "default": None},
|
| 405 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 406 |
+
],
|
| 407 |
+
"required_parameters": [
|
| 408 |
+
{
|
| 409 |
+
"name": "prompt",
|
| 410 |
+
"type": "str",
|
| 411 |
+
"description": "Natural language query about biological pathways",
|
| 412 |
+
"default": None,
|
| 413 |
+
}
|
| 414 |
+
],
|
| 415 |
+
},
|
| 416 |
+
{
|
| 417 |
+
"description": "Query the RegulomeDB database using natural language or direct endpoint.",
|
| 418 |
+
"name": "query_regulomedb",
|
| 419 |
+
"optional_parameters": [
|
| 420 |
+
{"name": "endpoint", "type": "str", "description": "Direct RegulomeDB endpoint URL", "default": None},
|
| 421 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": False},
|
| 422 |
+
],
|
| 423 |
+
"required_parameters": [
|
| 424 |
+
{
|
| 425 |
+
"name": "prompt",
|
| 426 |
+
"type": "str",
|
| 427 |
+
"description": "Natural language query about regulatory elements",
|
| 428 |
+
"default": None,
|
| 429 |
+
}
|
| 430 |
+
],
|
| 431 |
+
},
|
| 432 |
+
{
|
| 433 |
+
"description": "Query the PRIDE proteomics database using natural language or a direct endpoint.",
|
| 434 |
+
"name": "query_pride",
|
| 435 |
+
"optional_parameters": [
|
| 436 |
+
{"name": "endpoint", "type": "str", "description": "Full endpoint to query", "default": None},
|
| 437 |
+
{"name": "max_results", "type": "int", "description": "Maximum number of results", "default": 3},
|
| 438 |
+
],
|
| 439 |
+
"required_parameters": [
|
| 440 |
+
{
|
| 441 |
+
"name": "prompt",
|
| 442 |
+
"type": "str",
|
| 443 |
+
"description": "Natural language query about proteomics data",
|
| 444 |
+
"default": None,
|
| 445 |
+
}
|
| 446 |
+
],
|
| 447 |
+
},
|
| 448 |
+
{
|
| 449 |
+
"description": "Query the Guide to PHARMACOLOGY (GtoPdb) database using natural language or a direct endpoint.",
|
| 450 |
+
"name": "query_gtopdb",
|
| 451 |
+
"optional_parameters": [
|
| 452 |
+
{"name": "endpoint", "type": "str", "description": "Full API endpoint to query", "default": None},
|
| 453 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 454 |
+
],
|
| 455 |
+
"required_parameters": [
|
| 456 |
+
{
|
| 457 |
+
"name": "prompt",
|
| 458 |
+
"type": "str",
|
| 459 |
+
"description": "Natural language query about drug targets/ligands/interactions",
|
| 460 |
+
"default": None,
|
| 461 |
+
}
|
| 462 |
+
],
|
| 463 |
+
},
|
| 464 |
+
{
|
| 465 |
+
"description": "Query the ReMap database for regulatory elements and transcription factor binding.",
|
| 466 |
+
"name": "query_remap",
|
| 467 |
+
"optional_parameters": [
|
| 468 |
+
{"name": "endpoint", "type": "str", "description": "Full API endpoint to query", "default": None},
|
| 469 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 470 |
+
],
|
| 471 |
+
"required_parameters": [
|
| 472 |
+
{
|
| 473 |
+
"name": "prompt",
|
| 474 |
+
"type": "str",
|
| 475 |
+
"description": "Natural language query about TF binding sites",
|
| 476 |
+
"default": None,
|
| 477 |
+
}
|
| 478 |
+
],
|
| 479 |
+
},
|
| 480 |
+
{
|
| 481 |
+
"description": "Query the Mouse Phenome Database (MPD) using natural language or a direct endpoint.",
|
| 482 |
+
"name": "query_mpd",
|
| 483 |
+
"optional_parameters": [
|
| 484 |
+
{"name": "endpoint", "type": "str", "description": "Full API endpoint to query", "default": None},
|
| 485 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 486 |
+
],
|
| 487 |
+
"required_parameters": [
|
| 488 |
+
{
|
| 489 |
+
"name": "prompt",
|
| 490 |
+
"type": "str",
|
| 491 |
+
"description": "Natural language query about mouse phenotypes/strains",
|
| 492 |
+
"default": None,
|
| 493 |
+
}
|
| 494 |
+
],
|
| 495 |
+
},
|
| 496 |
+
{
|
| 497 |
+
"description": "Query the Electron Microscopy Data Bank (EMDB) using natural language or a direct endpoint.",
|
| 498 |
+
"name": "query_emdb",
|
| 499 |
+
"optional_parameters": [
|
| 500 |
+
{"name": "endpoint", "type": "str", "description": "Full API endpoint to query", "default": None},
|
| 501 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 502 |
+
],
|
| 503 |
+
"required_parameters": [
|
| 504 |
+
{
|
| 505 |
+
"name": "prompt",
|
| 506 |
+
"type": "str",
|
| 507 |
+
"description": "Natural language query about EM structures",
|
| 508 |
+
"default": None,
|
| 509 |
+
}
|
| 510 |
+
],
|
| 511 |
+
},
|
| 512 |
+
{
|
| 513 |
+
"description": "Query Synapse REST API for biomedical datasets/files using natural language or structured search parameters. Supports optional authentication via SYNAPSE_AUTH_TOKEN.",
|
| 514 |
+
"name": "query_synapse",
|
| 515 |
+
"optional_parameters": [
|
| 516 |
+
{
|
| 517 |
+
"name": "query_term",
|
| 518 |
+
"type": "str|list[str]",
|
| 519 |
+
"description": "Search term(s) (AND logic across list)",
|
| 520 |
+
"default": None,
|
| 521 |
+
},
|
| 522 |
+
{
|
| 523 |
+
"name": "return_fields",
|
| 524 |
+
"type": "list[str]",
|
| 525 |
+
"description": "Fields to return",
|
| 526 |
+
"default": ["name", "node_type", "description"],
|
| 527 |
+
},
|
| 528 |
+
{"name": "max_results", "type": "int", "description": "Max results (20 typical, up to 50)", "default": 20},
|
| 529 |
+
{
|
| 530 |
+
"name": "query_type",
|
| 531 |
+
"type": "str",
|
| 532 |
+
"description": "'dataset', 'file', or 'folder'",
|
| 533 |
+
"default": "dataset",
|
| 534 |
+
},
|
| 535 |
+
{
|
| 536 |
+
"name": "verbose",
|
| 537 |
+
"type": "bool",
|
| 538 |
+
"description": "Return full API response or formatted",
|
| 539 |
+
"default": True,
|
| 540 |
+
},
|
| 541 |
+
],
|
| 542 |
+
"required_parameters": [
|
| 543 |
+
{
|
| 544 |
+
"name": "prompt",
|
| 545 |
+
"type": "str",
|
| 546 |
+
"description": "Natural language query about biomedical data",
|
| 547 |
+
"default": None,
|
| 548 |
+
}
|
| 549 |
+
],
|
| 550 |
+
},
|
| 551 |
+
{
|
| 552 |
+
"description": "Query the PubChem PUG-REST API using natural language or a direct endpoint.",
|
| 553 |
+
"name": "query_pubchem",
|
| 554 |
+
"optional_parameters": [
|
| 555 |
+
{
|
| 556 |
+
"name": "endpoint",
|
| 557 |
+
"type": "str",
|
| 558 |
+
"description": "Direct PubChem API endpoint or full URL",
|
| 559 |
+
"default": None,
|
| 560 |
+
},
|
| 561 |
+
{"name": "max_results", "type": "int", "description": "Max results (rate-limited to 5 rps)", "default": 5},
|
| 562 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 563 |
+
],
|
| 564 |
+
"required_parameters": [
|
| 565 |
+
{
|
| 566 |
+
"name": "prompt",
|
| 567 |
+
"type": "str",
|
| 568 |
+
"description": "Natural language query about chemical compounds",
|
| 569 |
+
"default": None,
|
| 570 |
+
}
|
| 571 |
+
],
|
| 572 |
+
},
|
| 573 |
+
{
|
| 574 |
+
"description": "Query the ChEMBL REST API via natural language, direct endpoint, or identifiers (chembl_id, smiles, molecule_name).",
|
| 575 |
+
"name": "query_chembl",
|
| 576 |
+
"optional_parameters": [
|
| 577 |
+
{
|
| 578 |
+
"name": "endpoint",
|
| 579 |
+
"type": "str",
|
| 580 |
+
"description": "Direct ChEMBL API endpoint or full URL",
|
| 581 |
+
"default": None,
|
| 582 |
+
},
|
| 583 |
+
{"name": "chembl_id", "type": "str", "description": "ChEMBL ID (e.g., 'CHEMBL25')", "default": None},
|
| 584 |
+
{"name": "smiles", "type": "str", "description": "SMILES for similarity/substructure", "default": None},
|
| 585 |
+
{"name": "molecule_name", "type": "str", "description": "Molecule name to search", "default": None},
|
| 586 |
+
{"name": "max_results", "type": "int", "description": "Max results", "default": 20},
|
| 587 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 588 |
+
],
|
| 589 |
+
"required_parameters": [
|
| 590 |
+
{
|
| 591 |
+
"name": "prompt",
|
| 592 |
+
"type": "str",
|
| 593 |
+
"description": "Natural language query about bioactivity data",
|
| 594 |
+
"default": None,
|
| 595 |
+
}
|
| 596 |
+
],
|
| 597 |
+
},
|
| 598 |
+
{
|
| 599 |
+
"description": "Query the UniChem 2.0 REST API using natural language or a direct endpoint.",
|
| 600 |
+
"name": "query_unichem",
|
| 601 |
+
"optional_parameters": [
|
| 602 |
+
{"name": "endpoint", "type": "str", "description": "Direct UniChem endpoint or full URL", "default": None},
|
| 603 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 604 |
+
],
|
| 605 |
+
"required_parameters": [
|
| 606 |
+
{
|
| 607 |
+
"name": "prompt",
|
| 608 |
+
"type": "str",
|
| 609 |
+
"description": "Natural language query about chemical cross-references",
|
| 610 |
+
"default": None,
|
| 611 |
+
}
|
| 612 |
+
],
|
| 613 |
+
},
|
| 614 |
+
{
|
| 615 |
+
"description": "Query the ClinicalTrials.gov API v2 using natural language or a direct endpoint.",
|
| 616 |
+
"name": "query_clinicaltrials",
|
| 617 |
+
"optional_parameters": [
|
| 618 |
+
{
|
| 619 |
+
"name": "endpoint",
|
| 620 |
+
"type": "str",
|
| 621 |
+
"description": "Direct ClinicalTrials.gov endpoint or full URL",
|
| 622 |
+
"default": None,
|
| 623 |
+
},
|
| 624 |
+
{"name": "max_results", "type": "int", "description": "Page size for results (pageSize)", "default": 10},
|
| 625 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 626 |
+
],
|
| 627 |
+
"required_parameters": [
|
| 628 |
+
{
|
| 629 |
+
"name": "prompt",
|
| 630 |
+
"type": "str",
|
| 631 |
+
"description": "Natural language query about clinical trials",
|
| 632 |
+
"default": None,
|
| 633 |
+
}
|
| 634 |
+
],
|
| 635 |
+
},
|
| 636 |
+
{
|
| 637 |
+
"description": "Query the DailyMed RESTful API using natural language or a direct endpoint.",
|
| 638 |
+
"name": "query_dailymed",
|
| 639 |
+
"optional_parameters": [
|
| 640 |
+
{"name": "endpoint", "type": "str", "description": "Direct DailyMed endpoint or full URL", "default": None},
|
| 641 |
+
{"name": "format", "type": "str", "description": "'json' or 'xml'", "default": "json"},
|
| 642 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 643 |
+
],
|
| 644 |
+
"required_parameters": [
|
| 645 |
+
{
|
| 646 |
+
"name": "prompt",
|
| 647 |
+
"type": "str",
|
| 648 |
+
"description": "Natural language query about drug labeling",
|
| 649 |
+
"default": None,
|
| 650 |
+
}
|
| 651 |
+
],
|
| 652 |
+
},
|
| 653 |
+
{
|
| 654 |
+
"description": "Query the QuickGO API using natural language or a direct endpoint.",
|
| 655 |
+
"name": "query_quickgo",
|
| 656 |
+
"optional_parameters": [
|
| 657 |
+
{"name": "endpoint", "type": "str", "description": "Direct QuickGO endpoint or full URL", "default": None},
|
| 658 |
+
{"name": "max_results", "type": "int", "description": "Max results (limit, up to 100)", "default": 25},
|
| 659 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 660 |
+
],
|
| 661 |
+
"required_parameters": [
|
| 662 |
+
{
|
| 663 |
+
"name": "prompt",
|
| 664 |
+
"type": "str",
|
| 665 |
+
"description": "Natural language query about GO terms/annotations",
|
| 666 |
+
"default": None,
|
| 667 |
+
}
|
| 668 |
+
],
|
| 669 |
+
},
|
| 670 |
+
{
|
| 671 |
+
"description": "Query the ENCODE Portal API to locate functional genomics data (experiments, files, biosamples, datasets).",
|
| 672 |
+
"name": "query_encode",
|
| 673 |
+
"optional_parameters": [
|
| 674 |
+
{
|
| 675 |
+
"name": "endpoint",
|
| 676 |
+
"type": "str",
|
| 677 |
+
"description": "Direct ENCODE Portal endpoint or full URL",
|
| 678 |
+
"default": None,
|
| 679 |
+
},
|
| 680 |
+
{
|
| 681 |
+
"name": "max_results",
|
| 682 |
+
"type": "int|str",
|
| 683 |
+
"description": "Limit for search endpoints (number or 'all')",
|
| 684 |
+
"default": 25,
|
| 685 |
+
},
|
| 686 |
+
{"name": "verbose", "type": "bool", "description": "Return detailed results", "default": True},
|
| 687 |
+
],
|
| 688 |
+
"required_parameters": [
|
| 689 |
+
{
|
| 690 |
+
"name": "prompt",
|
| 691 |
+
"type": "str",
|
| 692 |
+
"description": "Natural language query about functional genomics data",
|
| 693 |
+
"default": None,
|
| 694 |
+
}
|
| 695 |
+
],
|
| 696 |
+
},
|
| 697 |
+
{
|
| 698 |
+
"description": "Given genomic coordinates, retrieve intersecting ENCODE SCREEN cCREs.",
|
| 699 |
+
"name": "region_to_ccre_screen",
|
| 700 |
+
"optional_parameters": [
|
| 701 |
+
{"name": "assembly", "type": "str", "description": "Genome assembly (e.g., 'GRCh38')", "default": "GRCh38"}
|
| 702 |
+
],
|
| 703 |
+
"required_parameters": [
|
| 704 |
+
{"name": "coord_chrom", "type": "str", "description": "Chromosome (e.g., 'chr12')", "default": None},
|
| 705 |
+
{"name": "coord_start", "type": "int", "description": "Start coordinate", "default": None},
|
| 706 |
+
{"name": "coord_end", "type": "int", "description": "End coordinate", "default": None},
|
| 707 |
+
],
|
| 708 |
+
},
|
| 709 |
+
{
|
| 710 |
+
"description": "Given a cCRE accession, return k nearest genes sorted by distance.",
|
| 711 |
+
"name": "get_genes_near_ccre",
|
| 712 |
+
"optional_parameters": [
|
| 713 |
+
{"name": "k", "type": "int", "description": "Number of nearby genes to return", "default": 10}
|
| 714 |
+
],
|
| 715 |
+
"required_parameters": [
|
| 716 |
+
{
|
| 717 |
+
"name": "accession",
|
| 718 |
+
"type": "str",
|
| 719 |
+
"description": "ENCODE cCRE accession ID (e.g., 'EH38E1516980')",
|
| 720 |
+
"default": None,
|
| 721 |
+
},
|
| 722 |
+
{"name": "assembly", "type": "str", "description": "Genome assembly (e.g., 'GRCh38')", "default": None},
|
| 723 |
+
{
|
| 724 |
+
"name": "chromosome",
|
| 725 |
+
"type": "str",
|
| 726 |
+
"description": "Chromosome of the cCRE (e.g., 'chr12')",
|
| 727 |
+
"default": None,
|
| 728 |
+
},
|
| 729 |
+
],
|
| 730 |
+
},
|
| 731 |
+
]
|
Biomni/biomni/tool/tool_description/genetics.py
ADDED
|
@@ -0,0 +1,405 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
description = [
|
| 2 |
+
{
|
| 3 |
+
"description": "Perform liftover of genomic coordinates between hg19 and "
|
| 4 |
+
"hg38 formats with detailed intermediate steps.",
|
| 5 |
+
"name": "liftover_coordinates",
|
| 6 |
+
"optional_parameters": [],
|
| 7 |
+
"required_parameters": [
|
| 8 |
+
{
|
| 9 |
+
"default": None,
|
| 10 |
+
"description": "Chromosome number (e.g., '1', 'X')",
|
| 11 |
+
"name": "chromosome",
|
| 12 |
+
"type": "str",
|
| 13 |
+
},
|
| 14 |
+
{
|
| 15 |
+
"default": None,
|
| 16 |
+
"description": "Genomic position",
|
| 17 |
+
"name": "position",
|
| 18 |
+
"type": "int",
|
| 19 |
+
},
|
| 20 |
+
{
|
| 21 |
+
"default": None,
|
| 22 |
+
"description": "Input genome build ('hg19' or 'hg38')",
|
| 23 |
+
"name": "input_format",
|
| 24 |
+
"type": "str",
|
| 25 |
+
},
|
| 26 |
+
{
|
| 27 |
+
"default": None,
|
| 28 |
+
"description": "Output genome build ('hg19' or 'hg38')",
|
| 29 |
+
"name": "output_format",
|
| 30 |
+
"type": "str",
|
| 31 |
+
},
|
| 32 |
+
{
|
| 33 |
+
"default": None,
|
| 34 |
+
"description": "Path to liftover chain files",
|
| 35 |
+
"name": "data_path",
|
| 36 |
+
"type": "str",
|
| 37 |
+
},
|
| 38 |
+
],
|
| 39 |
+
},
|
| 40 |
+
{
|
| 41 |
+
"description": "Performs Bayesian fine-mapping from GWAS summary statistics "
|
| 42 |
+
"using deep variational inference to compute posterior "
|
| 43 |
+
"inclusion probabilities and credible sets for putative "
|
| 44 |
+
"causal variants.",
|
| 45 |
+
"name": "bayesian_finemapping_with_deep_vi",
|
| 46 |
+
"optional_parameters": [
|
| 47 |
+
{
|
| 48 |
+
"default": 5000,
|
| 49 |
+
"description": "Number of training iterations for the variational inference algorithm",
|
| 50 |
+
"name": "n_iterations",
|
| 51 |
+
"type": "int",
|
| 52 |
+
},
|
| 53 |
+
{
|
| 54 |
+
"default": 0.01,
|
| 55 |
+
"description": "Learning rate for the optimization algorithm",
|
| 56 |
+
"name": "learning_rate",
|
| 57 |
+
"type": "float",
|
| 58 |
+
},
|
| 59 |
+
{
|
| 60 |
+
"default": 64,
|
| 61 |
+
"description": "Hidden dimension size for the neural network",
|
| 62 |
+
"name": "hidden_dim",
|
| 63 |
+
"type": "int",
|
| 64 |
+
},
|
| 65 |
+
{
|
| 66 |
+
"default": 0.95,
|
| 67 |
+
"description": "Threshold for defining the credible set (e.g., 0.95 for a 95% credible set)",
|
| 68 |
+
"name": "credible_threshold",
|
| 69 |
+
"type": "float",
|
| 70 |
+
},
|
| 71 |
+
],
|
| 72 |
+
"required_parameters": [
|
| 73 |
+
{
|
| 74 |
+
"default": None,
|
| 75 |
+
"description": "Path to CSV or TSV file containing "
|
| 76 |
+
"GWAS summary statistics with "
|
| 77 |
+
"variant_id, effect_size, pvalue, "
|
| 78 |
+
"and optional se columns",
|
| 79 |
+
"name": "gwas_summary_path",
|
| 80 |
+
"type": "str",
|
| 81 |
+
},
|
| 82 |
+
{
|
| 83 |
+
"default": None,
|
| 84 |
+
"description": "Linkage disequilibrium matrix with pairwise correlations between variants",
|
| 85 |
+
"name": "ld_matrix",
|
| 86 |
+
"type": "numpy.ndarray",
|
| 87 |
+
},
|
| 88 |
+
],
|
| 89 |
+
},
|
| 90 |
+
{
|
| 91 |
+
"description": "Analyzes and categorizes mutations induced by Cas9 at target sites.",
|
| 92 |
+
"name": "analyze_cas9_mutation_outcomes",
|
| 93 |
+
"optional_parameters": [
|
| 94 |
+
{
|
| 95 |
+
"default": None,
|
| 96 |
+
"description": "Dictionary mapping sequence IDs to "
|
| 97 |
+
"cell line information (e.g., "
|
| 98 |
+
"wildtype, knockout gene)",
|
| 99 |
+
"name": "cell_line_info",
|
| 100 |
+
"type": "dict",
|
| 101 |
+
},
|
| 102 |
+
{
|
| 103 |
+
"default": "cas9_mutation_analysis",
|
| 104 |
+
"description": "Prefix for output files",
|
| 105 |
+
"name": "output_prefix",
|
| 106 |
+
"type": "str",
|
| 107 |
+
},
|
| 108 |
+
],
|
| 109 |
+
"required_parameters": [
|
| 110 |
+
{
|
| 111 |
+
"default": None,
|
| 112 |
+
"description": "Dictionary mapping sequence IDs to reference DNA sequences (strings)",
|
| 113 |
+
"name": "reference_sequences",
|
| 114 |
+
"type": "dict",
|
| 115 |
+
},
|
| 116 |
+
{
|
| 117 |
+
"default": None,
|
| 118 |
+
"description": "Nested dictionary: {sequence_id: "
|
| 119 |
+
"{read_id: sequence}} containing the "
|
| 120 |
+
"edited/mutated sequences for each "
|
| 121 |
+
"reference",
|
| 122 |
+
"name": "edited_sequences",
|
| 123 |
+
"type": "dict",
|
| 124 |
+
},
|
| 125 |
+
],
|
| 126 |
+
},
|
| 127 |
+
{
|
| 128 |
+
"description": "Analyzes CRISPR-Cas9 genome editing results by comparing original and edited sequences.",
|
| 129 |
+
"name": "analyze_crispr_genome_editing",
|
| 130 |
+
"optional_parameters": [
|
| 131 |
+
{
|
| 132 |
+
"default": None,
|
| 133 |
+
"description": "The homology-directed repair template sequence, if used",
|
| 134 |
+
"name": "repair_template",
|
| 135 |
+
"type": "str",
|
| 136 |
+
}
|
| 137 |
+
],
|
| 138 |
+
"required_parameters": [
|
| 139 |
+
{
|
| 140 |
+
"default": None,
|
| 141 |
+
"description": "The original DNA sequence before CRISPR-Cas9 editing",
|
| 142 |
+
"name": "original_sequence",
|
| 143 |
+
"type": "str",
|
| 144 |
+
},
|
| 145 |
+
{
|
| 146 |
+
"default": None,
|
| 147 |
+
"description": "The DNA sequence after CRISPR-Cas9 editing",
|
| 148 |
+
"name": "edited_sequence",
|
| 149 |
+
"type": "str",
|
| 150 |
+
},
|
| 151 |
+
{
|
| 152 |
+
"default": None,
|
| 153 |
+
"description": "The CRISPR guide RNA (crRNA) sequence used for targeting",
|
| 154 |
+
"name": "guide_rna",
|
| 155 |
+
"type": "str",
|
| 156 |
+
},
|
| 157 |
+
],
|
| 158 |
+
},
|
| 159 |
+
{
|
| 160 |
+
"description": "Simulate DNA sequences with specified demographic and coalescent histories using msprime.",
|
| 161 |
+
"name": "simulate_demographic_history",
|
| 162 |
+
"optional_parameters": [
|
| 163 |
+
{
|
| 164 |
+
"default": 10,
|
| 165 |
+
"description": "Number of sample sequences to simulate",
|
| 166 |
+
"name": "num_samples",
|
| 167 |
+
"type": "int",
|
| 168 |
+
},
|
| 169 |
+
{
|
| 170 |
+
"default": 100000,
|
| 171 |
+
"description": "Length of the simulated sequence in base pairs",
|
| 172 |
+
"name": "sequence_length",
|
| 173 |
+
"type": "int",
|
| 174 |
+
},
|
| 175 |
+
{
|
| 176 |
+
"default": 1e-08,
|
| 177 |
+
"description": "Per-base recombination rate",
|
| 178 |
+
"name": "recombination_rate",
|
| 179 |
+
"type": "float",
|
| 180 |
+
},
|
| 181 |
+
{
|
| 182 |
+
"default": 1e-08,
|
| 183 |
+
"description": "Per-base mutation rate",
|
| 184 |
+
"name": "mutation_rate",
|
| 185 |
+
"type": "float",
|
| 186 |
+
},
|
| 187 |
+
{
|
| 188 |
+
"default": "constant",
|
| 189 |
+
"description": "Type of demographic model to "
|
| 190 |
+
"simulate (constant, bottleneck, "
|
| 191 |
+
"expansion, contraction, sawtooth)",
|
| 192 |
+
"name": "demographic_model",
|
| 193 |
+
"type": "str",
|
| 194 |
+
},
|
| 195 |
+
{
|
| 196 |
+
"default": None,
|
| 197 |
+
"description": "Parameters specific to the chosen demographic model",
|
| 198 |
+
"name": "demographic_params",
|
| 199 |
+
"type": "dict",
|
| 200 |
+
},
|
| 201 |
+
{
|
| 202 |
+
"default": "kingman",
|
| 203 |
+
"description": "Type of coalescent model to use (kingman, beta)",
|
| 204 |
+
"name": "coalescent_model",
|
| 205 |
+
"type": "str",
|
| 206 |
+
},
|
| 207 |
+
{
|
| 208 |
+
"default": None,
|
| 209 |
+
"description": "Parameter for beta-coalescent model",
|
| 210 |
+
"name": "beta_coalescent_param",
|
| 211 |
+
"type": "float",
|
| 212 |
+
},
|
| 213 |
+
{
|
| 214 |
+
"default": None,
|
| 215 |
+
"description": "Seed for random number generator",
|
| 216 |
+
"name": "random_seed",
|
| 217 |
+
"type": "int",
|
| 218 |
+
},
|
| 219 |
+
{
|
| 220 |
+
"default": "simulated_sequences.vcf",
|
| 221 |
+
"description": "Filename to save the simulated sequences in VCF format",
|
| 222 |
+
"name": "output_file",
|
| 223 |
+
"type": "str",
|
| 224 |
+
},
|
| 225 |
+
],
|
| 226 |
+
"required_parameters": [],
|
| 227 |
+
},
|
| 228 |
+
{
|
| 229 |
+
"description": "Identifies binding sites for a specific transcription factor in a genomic sequence.",
|
| 230 |
+
"name": "identify_transcription_factor_binding_sites",
|
| 231 |
+
"optional_parameters": [
|
| 232 |
+
{
|
| 233 |
+
"default": 0.8,
|
| 234 |
+
"description": "Minimum score threshold for reporting binding sites (0.0-1.0)",
|
| 235 |
+
"name": "threshold",
|
| 236 |
+
"type": "float",
|
| 237 |
+
},
|
| 238 |
+
{
|
| 239 |
+
"default": None,
|
| 240 |
+
"description": "Path to save the results",
|
| 241 |
+
"name": "output_file",
|
| 242 |
+
"type": "str",
|
| 243 |
+
},
|
| 244 |
+
],
|
| 245 |
+
"required_parameters": [
|
| 246 |
+
{
|
| 247 |
+
"default": None,
|
| 248 |
+
"description": "The genomic DNA sequence to analyze",
|
| 249 |
+
"name": "sequence",
|
| 250 |
+
"type": "str",
|
| 251 |
+
},
|
| 252 |
+
{
|
| 253 |
+
"default": None,
|
| 254 |
+
"description": "Name of the transcription factor to search for (e.g., 'Hsf1', 'GATA1')",
|
| 255 |
+
"name": "tf_name",
|
| 256 |
+
"type": "str",
|
| 257 |
+
},
|
| 258 |
+
],
|
| 259 |
+
},
|
| 260 |
+
{
|
| 261 |
+
"description": "Fit a linear mixed model for genomic prediction using genotype and phenotype data.",
|
| 262 |
+
"name": "fit_genomic_prediction_model",
|
| 263 |
+
"optional_parameters": [
|
| 264 |
+
{
|
| 265 |
+
"default": None,
|
| 266 |
+
"description": "Matrix of fixed effects (e.g., "
|
| 267 |
+
"environment, management), with "
|
| 268 |
+
"individuals in rows and effects in "
|
| 269 |
+
"columns.",
|
| 270 |
+
"name": "fixed_effects",
|
| 271 |
+
"type": "numpy.ndarray",
|
| 272 |
+
},
|
| 273 |
+
{
|
| 274 |
+
"default": "additive",
|
| 275 |
+
"description": 'Type of genetic model to fit: "additive" or "additive_dominance".',
|
| 276 |
+
"name": "model_type",
|
| 277 |
+
"type": "str",
|
| 278 |
+
},
|
| 279 |
+
{
|
| 280 |
+
"default": "genomic_prediction_results.csv",
|
| 281 |
+
"description": "File name to save the results.",
|
| 282 |
+
"name": "output_file",
|
| 283 |
+
"type": "str",
|
| 284 |
+
},
|
| 285 |
+
],
|
| 286 |
+
"required_parameters": [
|
| 287 |
+
{
|
| 288 |
+
"default": None,
|
| 289 |
+
"description": "Matrix of genotype data, with "
|
| 290 |
+
"individuals in rows and markers in "
|
| 291 |
+
"columns. Values are typically coded "
|
| 292 |
+
"as 0, 1, 2 for additive models or "
|
| 293 |
+
"with specific encoding for "
|
| 294 |
+
"dominance effects.",
|
| 295 |
+
"name": "genotypes",
|
| 296 |
+
"type": "numpy.ndarray",
|
| 297 |
+
},
|
| 298 |
+
{
|
| 299 |
+
"default": None,
|
| 300 |
+
"description": "Vector or matrix of phenotype data, with individuals in rows and traits in columns.",
|
| 301 |
+
"name": "phenotypes",
|
| 302 |
+
"type": "numpy.ndarray",
|
| 303 |
+
},
|
| 304 |
+
],
|
| 305 |
+
},
|
| 306 |
+
{
|
| 307 |
+
"description": "Performs PCR amplification of a target transgene and "
|
| 308 |
+
"visualizes results using agarose gel electrophoresis.",
|
| 309 |
+
"name": "perform_pcr_and_gel_electrophoresis",
|
| 310 |
+
"optional_parameters": [
|
| 311 |
+
{
|
| 312 |
+
"default": None,
|
| 313 |
+
"description": "Forward primer sequence. If not provided, will be designed based on target_region",
|
| 314 |
+
"name": "forward_primer",
|
| 315 |
+
"type": "str",
|
| 316 |
+
},
|
| 317 |
+
{
|
| 318 |
+
"default": None,
|
| 319 |
+
"description": "Reverse primer sequence. If not provided, will be designed based on target_region",
|
| 320 |
+
"name": "reverse_primer",
|
| 321 |
+
"type": "str",
|
| 322 |
+
},
|
| 323 |
+
{
|
| 324 |
+
"default": None,
|
| 325 |
+
"description": "Tuple of (start, end) positions for the target region in the genomic DNA",
|
| 326 |
+
"name": "target_region",
|
| 327 |
+
"type": "tuple",
|
| 328 |
+
},
|
| 329 |
+
{
|
| 330 |
+
"default": 58,
|
| 331 |
+
"description": "Annealing temperature for PCR in °C",
|
| 332 |
+
"name": "annealing_temp",
|
| 333 |
+
"type": "float",
|
| 334 |
+
},
|
| 335 |
+
{
|
| 336 |
+
"default": 30,
|
| 337 |
+
"description": "Extension time in seconds",
|
| 338 |
+
"name": "extension_time",
|
| 339 |
+
"type": "int",
|
| 340 |
+
},
|
| 341 |
+
{
|
| 342 |
+
"default": 35,
|
| 343 |
+
"description": "Number of PCR cycles",
|
| 344 |
+
"name": "cycles",
|
| 345 |
+
"type": "int",
|
| 346 |
+
},
|
| 347 |
+
{
|
| 348 |
+
"default": 2.0,
|
| 349 |
+
"description": "Percentage of agarose gel",
|
| 350 |
+
"name": "gel_percentage",
|
| 351 |
+
"type": "float",
|
| 352 |
+
},
|
| 353 |
+
{
|
| 354 |
+
"default": "pcr_result",
|
| 355 |
+
"description": "Prefix for output files",
|
| 356 |
+
"name": "output_prefix",
|
| 357 |
+
"type": "str",
|
| 358 |
+
},
|
| 359 |
+
],
|
| 360 |
+
"required_parameters": [
|
| 361 |
+
{
|
| 362 |
+
"default": None,
|
| 363 |
+
"description": "Path to file containing genomic DNA sequence in FASTA format or the sequence itself",
|
| 364 |
+
"name": "genomic_dna",
|
| 365 |
+
"type": "str",
|
| 366 |
+
}
|
| 367 |
+
],
|
| 368 |
+
},
|
| 369 |
+
{
|
| 370 |
+
"description": "Perform phylogenetic analysis on a set of protein sequences. "
|
| 371 |
+
"This function aligns sequences, constructs a phylogenetic "
|
| 372 |
+
"tree, and visualizes evolutionary relationships.",
|
| 373 |
+
"name": "analyze_protein_phylogeny",
|
| 374 |
+
"optional_parameters": [
|
| 375 |
+
{
|
| 376 |
+
"default": "./",
|
| 377 |
+
"description": "Directory to save output files",
|
| 378 |
+
"name": "output_dir",
|
| 379 |
+
"type": "str",
|
| 380 |
+
},
|
| 381 |
+
{
|
| 382 |
+
"default": "clustalw",
|
| 383 |
+
"description": 'Method for sequence alignment: "clustalw", "muscle", or "pre-aligned"',
|
| 384 |
+
"name": "alignment_method",
|
| 385 |
+
"type": "str",
|
| 386 |
+
},
|
| 387 |
+
{
|
| 388 |
+
"default": "fasttree",
|
| 389 |
+
"description": 'Method for tree construction: "iqtree" or fallback to neighbor-joining',
|
| 390 |
+
"name": "tree_method",
|
| 391 |
+
"type": "str",
|
| 392 |
+
},
|
| 393 |
+
],
|
| 394 |
+
"required_parameters": [
|
| 395 |
+
{
|
| 396 |
+
"default": None,
|
| 397 |
+
"description": "Path to a FASTA file containing "
|
| 398 |
+
"protein sequences or a string with "
|
| 399 |
+
"FASTA-formatted sequences",
|
| 400 |
+
"name": "fasta_sequences",
|
| 401 |
+
"type": "str",
|
| 402 |
+
}
|
| 403 |
+
],
|
| 404 |
+
},
|
| 405 |
+
]
|
Biomni/biomni/tool/tool_description/genomics.py
ADDED
|
@@ -0,0 +1,840 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
description = [
|
| 2 |
+
{
|
| 3 |
+
"description": "Annotate cell types based on gene markers and transferred "
|
| 4 |
+
"labels using LLM. After leiden clustering, annotate clusters "
|
| 5 |
+
"using differentially expressed genes and optionally "
|
| 6 |
+
"incorporate transferred labels from reference datasets.",
|
| 7 |
+
"name": "annotate_celltype_scRNA",
|
| 8 |
+
"optional_parameters": [
|
| 9 |
+
{
|
| 10 |
+
"default": "leiden",
|
| 11 |
+
"description": "Clustering method to use for cell type annotation",
|
| 12 |
+
"name": "cluster",
|
| 13 |
+
"type": "str",
|
| 14 |
+
},
|
| 15 |
+
{
|
| 16 |
+
"default": "claude-3-5-sonnet-20241022",
|
| 17 |
+
"description": "Language model instance for cell type prediction",
|
| 18 |
+
"name": "llm",
|
| 19 |
+
"type": "str",
|
| 20 |
+
},
|
| 21 |
+
{
|
| 22 |
+
"default": None,
|
| 23 |
+
"description": "Transferred cell type composition for each cluster",
|
| 24 |
+
"name": "composition",
|
| 25 |
+
"type": "pd.DataFrame",
|
| 26 |
+
},
|
| 27 |
+
],
|
| 28 |
+
"required_parameters": [
|
| 29 |
+
{
|
| 30 |
+
"default": None,
|
| 31 |
+
"description": "Name of the AnnData file containing scRNA-seq data",
|
| 32 |
+
"name": "adata_filename",
|
| 33 |
+
"type": "str",
|
| 34 |
+
},
|
| 35 |
+
{
|
| 36 |
+
"default": None,
|
| 37 |
+
"description": "Directory containing the data files",
|
| 38 |
+
"name": "data_dir",
|
| 39 |
+
"type": "str",
|
| 40 |
+
},
|
| 41 |
+
{
|
| 42 |
+
"default": None,
|
| 43 |
+
"description": 'Information about the scRNA-seq data (e.g., "homo sapiens, brain tissue, normal")',
|
| 44 |
+
"name": "data_info",
|
| 45 |
+
"type": "str",
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"default": None,
|
| 49 |
+
"description": "Path to the data lake",
|
| 50 |
+
"name": "data_lake_path",
|
| 51 |
+
"type": "str",
|
| 52 |
+
},
|
| 53 |
+
],
|
| 54 |
+
},
|
| 55 |
+
{
|
| 56 |
+
"description": "Perform cell type annotation of single-cell RNA-seq data using Panhuman Azimuth Neural Network. "
|
| 57 |
+
"This function implements the Panhuman Azimuth workflow for cell type annotation using the "
|
| 58 |
+
"panhumanpy package, providing hierarchical cell type labels for tissues across the human body. ",
|
| 59 |
+
"name": "annotate_celltype_with_panhumanpy",
|
| 60 |
+
"optional_parameters": [
|
| 61 |
+
{
|
| 62 |
+
"default": None,
|
| 63 |
+
"description": "Column name in adata.var containing gene symbols (default: None, uses index)",
|
| 64 |
+
"name": "feature_names_col",
|
| 65 |
+
"type": "str",
|
| 66 |
+
},
|
| 67 |
+
{
|
| 68 |
+
"default": True,
|
| 69 |
+
"description": "Whether to perform additional label refinement for consistent granularity",
|
| 70 |
+
"name": "refine",
|
| 71 |
+
"type": "bool",
|
| 72 |
+
},
|
| 73 |
+
{
|
| 74 |
+
"default": True,
|
| 75 |
+
"description": "Whether to generate ANN embeddings and UMAP",
|
| 76 |
+
"name": "umap",
|
| 77 |
+
"type": "bool",
|
| 78 |
+
},
|
| 79 |
+
{
|
| 80 |
+
"default": "./output",
|
| 81 |
+
"description": "Directory to save results",
|
| 82 |
+
"name": "output_dir",
|
| 83 |
+
"type": "str",
|
| 84 |
+
},
|
| 85 |
+
],
|
| 86 |
+
"required_parameters": [
|
| 87 |
+
{
|
| 88 |
+
"default": None,
|
| 89 |
+
"description": "Path to the AnnData file containing scRNA-seq data",
|
| 90 |
+
"name": "adata_path",
|
| 91 |
+
"type": "str",
|
| 92 |
+
},
|
| 93 |
+
],
|
| 94 |
+
},
|
| 95 |
+
{
|
| 96 |
+
"description": "Create scVI and scANVI embeddings for single-cell RNA-seq "
|
| 97 |
+
"data, saving the results to an AnnData object.",
|
| 98 |
+
"name": "create_scvi_embeddings_scRNA",
|
| 99 |
+
"optional_parameters": [],
|
| 100 |
+
"required_parameters": [
|
| 101 |
+
{
|
| 102 |
+
"default": None,
|
| 103 |
+
"description": "Filename of the AnnData object to load",
|
| 104 |
+
"name": "adata_filename",
|
| 105 |
+
"type": "str",
|
| 106 |
+
},
|
| 107 |
+
{
|
| 108 |
+
"default": None,
|
| 109 |
+
"description": "Column name in adata.obs for batch information",
|
| 110 |
+
"name": "batch_key",
|
| 111 |
+
"type": "str",
|
| 112 |
+
},
|
| 113 |
+
{
|
| 114 |
+
"default": None,
|
| 115 |
+
"description": "Column name in adata.obs for cell type labels",
|
| 116 |
+
"name": "label_key",
|
| 117 |
+
"type": "str",
|
| 118 |
+
},
|
| 119 |
+
{
|
| 120 |
+
"default": None,
|
| 121 |
+
"description": "Directory path where the AnnData file is located and where output will be saved",
|
| 122 |
+
"name": "data_dir",
|
| 123 |
+
"type": "str",
|
| 124 |
+
},
|
| 125 |
+
],
|
| 126 |
+
},
|
| 127 |
+
{
|
| 128 |
+
"description": "Performs batch integration on single-cell RNA-seq data using "
|
| 129 |
+
"Harmony and saves the integrated embeddings.",
|
| 130 |
+
"name": "create_harmony_embeddings_scRNA",
|
| 131 |
+
"optional_parameters": [],
|
| 132 |
+
"required_parameters": [
|
| 133 |
+
{
|
| 134 |
+
"default": None,
|
| 135 |
+
"description": "Filename of the AnnData object to load",
|
| 136 |
+
"name": "adata_filename",
|
| 137 |
+
"type": "str",
|
| 138 |
+
},
|
| 139 |
+
{
|
| 140 |
+
"default": None,
|
| 141 |
+
"description": "Column name in adata.obs that defines the batch variable for integration",
|
| 142 |
+
"name": "batch_key",
|
| 143 |
+
"type": "str",
|
| 144 |
+
},
|
| 145 |
+
{
|
| 146 |
+
"default": None,
|
| 147 |
+
"description": "Directory path where the input file is located and output will be saved",
|
| 148 |
+
"name": "data_dir",
|
| 149 |
+
"type": "str",
|
| 150 |
+
},
|
| 151 |
+
],
|
| 152 |
+
},
|
| 153 |
+
{
|
| 154 |
+
"description": "Generate UCE embeddings for single-cell RNA-seq data and map "
|
| 155 |
+
"them to a reference dataset for cell type annotation.",
|
| 156 |
+
"name": "get_uce_embeddings_scRNA",
|
| 157 |
+
"optional_parameters": [
|
| 158 |
+
{
|
| 159 |
+
"default": "/dfs/project/bioagentos/data/singlecell/",
|
| 160 |
+
"description": "Root directory for single-cell data storage",
|
| 161 |
+
"name": "DATA_ROOT",
|
| 162 |
+
"type": "str",
|
| 163 |
+
},
|
| 164 |
+
{
|
| 165 |
+
"default": None,
|
| 166 |
+
"description": "Custom command line arguments to pass to the UCE script",
|
| 167 |
+
"name": "custom_args",
|
| 168 |
+
"type": "List[str]",
|
| 169 |
+
},
|
| 170 |
+
],
|
| 171 |
+
"required_parameters": [
|
| 172 |
+
{
|
| 173 |
+
"default": None,
|
| 174 |
+
"description": "Filename of the AnnData object to process",
|
| 175 |
+
"name": "adata_filename",
|
| 176 |
+
"type": "str",
|
| 177 |
+
},
|
| 178 |
+
{
|
| 179 |
+
"default": None,
|
| 180 |
+
"description": "Directory where the input data is stored and output will be saved",
|
| 181 |
+
"name": "data_dir",
|
| 182 |
+
"type": "str",
|
| 183 |
+
},
|
| 184 |
+
],
|
| 185 |
+
},
|
| 186 |
+
{
|
| 187 |
+
"description": "Map cell embeddings from the input dataset to the Integrated "
|
| 188 |
+
"Megascale Atlas reference dataset using UCE embeddings.",
|
| 189 |
+
"name": "map_to_ima_interpret_scRNA",
|
| 190 |
+
"optional_parameters": [
|
| 191 |
+
{
|
| 192 |
+
"default": None,
|
| 193 |
+
"description": "Dictionary of custom arguments "
|
| 194 |
+
"including 'n_neighbors' and "
|
| 195 |
+
"'metric' for nearest neighbor "
|
| 196 |
+
"search",
|
| 197 |
+
"name": "custom_args",
|
| 198 |
+
"type": "dict",
|
| 199 |
+
}
|
| 200 |
+
],
|
| 201 |
+
"required_parameters": [
|
| 202 |
+
{
|
| 203 |
+
"default": None,
|
| 204 |
+
"description": "Filename of the AnnData object to be mapped",
|
| 205 |
+
"name": "adata_filename",
|
| 206 |
+
"type": "str",
|
| 207 |
+
},
|
| 208 |
+
{
|
| 209 |
+
"default": None,
|
| 210 |
+
"description": "Directory containing the AnnData file",
|
| 211 |
+
"name": "data_dir",
|
| 212 |
+
"type": "str",
|
| 213 |
+
},
|
| 214 |
+
],
|
| 215 |
+
},
|
| 216 |
+
{
|
| 217 |
+
"description": "Given a gene name, fetch RNA-seq expression data showing the "
|
| 218 |
+
"top K tissues with highest transcripts-per-million (TPM) "
|
| 219 |
+
"values.",
|
| 220 |
+
"name": "get_rna_seq_archs4",
|
| 221 |
+
"optional_parameters": [
|
| 222 |
+
{
|
| 223 |
+
"default": 10,
|
| 224 |
+
"description": "The number of tissues to return",
|
| 225 |
+
"name": "K",
|
| 226 |
+
"type": "int",
|
| 227 |
+
}
|
| 228 |
+
],
|
| 229 |
+
"required_parameters": [
|
| 230 |
+
{
|
| 231 |
+
"default": None,
|
| 232 |
+
"description": "The gene name for which RNA-seq data is being fetched",
|
| 233 |
+
"name": "gene_name",
|
| 234 |
+
"type": "str",
|
| 235 |
+
}
|
| 236 |
+
],
|
| 237 |
+
},
|
| 238 |
+
{
|
| 239 |
+
"description": "Returns a list of supported databases for gene set enrichment analysis.",
|
| 240 |
+
"name": "get_gene_set_enrichment_analysis_supported_database_list",
|
| 241 |
+
"optional_parameters": [],
|
| 242 |
+
"required_parameters": [],
|
| 243 |
+
},
|
| 244 |
+
{
|
| 245 |
+
"description": "Perform enrichment analysis for a list of genes, with "
|
| 246 |
+
"optional background gene set and plotting functionality.",
|
| 247 |
+
"name": "gene_set_enrichment_analysis",
|
| 248 |
+
"optional_parameters": [
|
| 249 |
+
{
|
| 250 |
+
"default": 10,
|
| 251 |
+
"description": "Number of top pathways to return",
|
| 252 |
+
"name": "top_k",
|
| 253 |
+
"type": "int",
|
| 254 |
+
},
|
| 255 |
+
{
|
| 256 |
+
"default": "ontology",
|
| 257 |
+
"description": "Database to use for enrichment analysis (e.g., pathway, transcription, ontology)",
|
| 258 |
+
"name": "database",
|
| 259 |
+
"type": "str",
|
| 260 |
+
},
|
| 261 |
+
{
|
| 262 |
+
"default": None,
|
| 263 |
+
"description": "List of background genes to use for enrichment analysis",
|
| 264 |
+
"name": "background_list",
|
| 265 |
+
"type": "list",
|
| 266 |
+
},
|
| 267 |
+
{
|
| 268 |
+
"default": False,
|
| 269 |
+
"description": "Generate a bar plot of the top K enrichment results",
|
| 270 |
+
"name": "plot",
|
| 271 |
+
"type": "bool",
|
| 272 |
+
},
|
| 273 |
+
],
|
| 274 |
+
"required_parameters": [
|
| 275 |
+
{
|
| 276 |
+
"default": None,
|
| 277 |
+
"description": "List of gene symbols to analyze",
|
| 278 |
+
"name": "genes",
|
| 279 |
+
"type": "list",
|
| 280 |
+
}
|
| 281 |
+
],
|
| 282 |
+
},
|
| 283 |
+
{
|
| 284 |
+
"description": "Analyze chromatin interactions from Hi-C data to identify "
|
| 285 |
+
"enhancer-promoter interactions and TADs.",
|
| 286 |
+
"name": "analyze_chromatin_interactions",
|
| 287 |
+
"optional_parameters": [
|
| 288 |
+
{
|
| 289 |
+
"default": "./output",
|
| 290 |
+
"description": "Directory to save output files",
|
| 291 |
+
"name": "output_dir",
|
| 292 |
+
"type": "str",
|
| 293 |
+
}
|
| 294 |
+
],
|
| 295 |
+
"required_parameters": [
|
| 296 |
+
{
|
| 297 |
+
"default": None,
|
| 298 |
+
"description": "Path to the Hi-C data file (.cool or .hic format)",
|
| 299 |
+
"name": "hic_file_path",
|
| 300 |
+
"type": "str",
|
| 301 |
+
},
|
| 302 |
+
{
|
| 303 |
+
"default": None,
|
| 304 |
+
"description": "Path to BED file containing genomic "
|
| 305 |
+
"coordinates of regulatory elements "
|
| 306 |
+
"(enhancers, promoters, CTCF sites, "
|
| 307 |
+
"etc.)",
|
| 308 |
+
"name": "regulatory_elements_bed",
|
| 309 |
+
"type": "str",
|
| 310 |
+
},
|
| 311 |
+
],
|
| 312 |
+
},
|
| 313 |
+
{
|
| 314 |
+
"description": "Perform comparative genomics and haplotype analysis on "
|
| 315 |
+
"multiple genome samples. Aligns genome samples to a "
|
| 316 |
+
"reference, identifies variants, analyzes shared and unique "
|
| 317 |
+
"genomic regions, and determines haplotype structure.",
|
| 318 |
+
"name": "analyze_comparative_genomics_and_haplotypes",
|
| 319 |
+
"optional_parameters": [
|
| 320 |
+
{
|
| 321 |
+
"default": "./output",
|
| 322 |
+
"description": "Directory to store output files",
|
| 323 |
+
"name": "output_dir",
|
| 324 |
+
"type": "str",
|
| 325 |
+
}
|
| 326 |
+
],
|
| 327 |
+
"required_parameters": [
|
| 328 |
+
{
|
| 329 |
+
"default": None,
|
| 330 |
+
"description": "Paths to FASTA files containing whole-genome sequences to be analyzed",
|
| 331 |
+
"name": "sample_fasta_files",
|
| 332 |
+
"type": "List[str]",
|
| 333 |
+
},
|
| 334 |
+
{
|
| 335 |
+
"default": None,
|
| 336 |
+
"description": "Path to the reference genome FASTA file",
|
| 337 |
+
"name": "reference_genome_path",
|
| 338 |
+
"type": "str",
|
| 339 |
+
},
|
| 340 |
+
],
|
| 341 |
+
},
|
| 342 |
+
{
|
| 343 |
+
"description": "Perform ChIP-seq peak calling using MACS2 to identify "
|
| 344 |
+
"genomic regions with significant binding.",
|
| 345 |
+
"name": "perform_chipseq_peak_calling_with_macs2",
|
| 346 |
+
"optional_parameters": [
|
| 347 |
+
{
|
| 348 |
+
"default": "macs2_output",
|
| 349 |
+
"description": "Prefix for output files",
|
| 350 |
+
"name": "output_name",
|
| 351 |
+
"type": "str",
|
| 352 |
+
},
|
| 353 |
+
{
|
| 354 |
+
"default": "hs",
|
| 355 |
+
"description": "Effective genome size shorthand: 'hs' for human, 'mm' for mouse, etc.",
|
| 356 |
+
"name": "genome_size",
|
| 357 |
+
"type": "str",
|
| 358 |
+
},
|
| 359 |
+
{
|
| 360 |
+
"default": 0.05,
|
| 361 |
+
"description": "q-value (minimum FDR) cutoff for peak calling",
|
| 362 |
+
"name": "q_value",
|
| 363 |
+
"type": "float",
|
| 364 |
+
},
|
| 365 |
+
],
|
| 366 |
+
"required_parameters": [
|
| 367 |
+
{
|
| 368 |
+
"default": None,
|
| 369 |
+
"description": "Path to the ChIP-seq read data file (BAM, BED, or other supported format)",
|
| 370 |
+
"name": "chip_seq_file",
|
| 371 |
+
"type": "str",
|
| 372 |
+
},
|
| 373 |
+
{
|
| 374 |
+
"default": None,
|
| 375 |
+
"description": "Path to the control/input data file (BAM, BED, or other supported format)",
|
| 376 |
+
"name": "control_file",
|
| 377 |
+
"type": "str",
|
| 378 |
+
},
|
| 379 |
+
],
|
| 380 |
+
},
|
| 381 |
+
{
|
| 382 |
+
"description": "Find DNA sequence motifs enriched in genomic regions using the HOMER motif discovery software.",
|
| 383 |
+
"name": "find_enriched_motifs_with_homer",
|
| 384 |
+
"optional_parameters": [
|
| 385 |
+
{
|
| 386 |
+
"default": "hg38",
|
| 387 |
+
"description": "Reference genome for sequence extraction",
|
| 388 |
+
"name": "genome",
|
| 389 |
+
"type": "str",
|
| 390 |
+
},
|
| 391 |
+
{
|
| 392 |
+
"default": None,
|
| 393 |
+
"description": "Path to BED file with background "
|
| 394 |
+
"regions for comparison. If None, "
|
| 395 |
+
"HOMER will generate random "
|
| 396 |
+
"background sequences automatically",
|
| 397 |
+
"name": "background_file",
|
| 398 |
+
"type": "str",
|
| 399 |
+
},
|
| 400 |
+
{
|
| 401 |
+
"default": "8,10,12",
|
| 402 |
+
"description": "Comma-separated list of motif lengths to discover",
|
| 403 |
+
"name": "motif_length",
|
| 404 |
+
"type": "str",
|
| 405 |
+
},
|
| 406 |
+
{
|
| 407 |
+
"default": "./homer_motifs",
|
| 408 |
+
"description": "Directory to save output files",
|
| 409 |
+
"name": "output_dir",
|
| 410 |
+
"type": "str",
|
| 411 |
+
},
|
| 412 |
+
{
|
| 413 |
+
"default": 10,
|
| 414 |
+
"description": "Number of motifs to find",
|
| 415 |
+
"name": "num_motifs",
|
| 416 |
+
"type": "int",
|
| 417 |
+
},
|
| 418 |
+
{
|
| 419 |
+
"default": 4,
|
| 420 |
+
"description": "Number of CPU threads to use",
|
| 421 |
+
"name": "threads",
|
| 422 |
+
"type": "int",
|
| 423 |
+
},
|
| 424 |
+
],
|
| 425 |
+
"required_parameters": [
|
| 426 |
+
{
|
| 427 |
+
"default": None,
|
| 428 |
+
"description": "Path to peak file in BED format "
|
| 429 |
+
"containing genomic regions to "
|
| 430 |
+
"analyze for motif enrichment",
|
| 431 |
+
"name": "peak_file",
|
| 432 |
+
"type": "str",
|
| 433 |
+
}
|
| 434 |
+
],
|
| 435 |
+
},
|
| 436 |
+
{
|
| 437 |
+
"description": "Analyze overlaps between two or more sets of genomic regions.",
|
| 438 |
+
"name": "analyze_genomic_region_overlap",
|
| 439 |
+
"optional_parameters": [
|
| 440 |
+
{
|
| 441 |
+
"default": "overlap_analysis",
|
| 442 |
+
"description": "Prefix for output files",
|
| 443 |
+
"name": "output_prefix",
|
| 444 |
+
"type": "str",
|
| 445 |
+
}
|
| 446 |
+
],
|
| 447 |
+
"required_parameters": [
|
| 448 |
+
{
|
| 449 |
+
"default": None,
|
| 450 |
+
"description": "List of genomic region sets. Each "
|
| 451 |
+
"item can be either a string path to "
|
| 452 |
+
"a BED file or a list of "
|
| 453 |
+
"tuples/lists with format (chrom, "
|
| 454 |
+
"start, end) or (chrom, start, end, "
|
| 455 |
+
"name)",
|
| 456 |
+
"name": "region_sets",
|
| 457 |
+
"type": "list",
|
| 458 |
+
}
|
| 459 |
+
],
|
| 460 |
+
},
|
| 461 |
+
{
|
| 462 |
+
"description": "Transfer cell type labels from an annotated reference scRNA-seq dataset to an unannotated query dataset using popV. Loads both AnnData .h5ad files, prepares count layers for scVI, processes the query against the reference, and runs selected annotation methods (default: SCANVI_POPV). Saves predictions to 'output_folder/popv_output/predictions.csv'. This function allows you to use different annotaiton methods i.e. CELLTYPIST, KNN_BBKNN, KNN_HARMONY, KNN_SCANORAMA, KNN_SCVI, ONCLASS, Random_Forest, SCANVI_POPV, Support_Vector, XGboost. Based on you transfer task you can select the multiple best annotation methods. Beware each annotation method adds computational requirements for running the tool. By default it uses SCANVI_POPV method.",
|
| 463 |
+
"name": "unsupervised_celltype_transfer_between_scRNA_datasets",
|
| 464 |
+
"optional_parameters": [
|
| 465 |
+
{
|
| 466 |
+
"default": None,
|
| 467 |
+
"description": "Column in query adata.obs with batch information, most likely you will get this from user",
|
| 468 |
+
"name": "query_batch_key",
|
| 469 |
+
"type": "str",
|
| 470 |
+
},
|
| 471 |
+
{
|
| 472 |
+
"default": None,
|
| 473 |
+
"description": "Column in reference adata.obs with batch information, most likely you will get this from user",
|
| 474 |
+
"name": "ref_batch_key",
|
| 475 |
+
"type": "str",
|
| 476 |
+
},
|
| 477 |
+
{
|
| 478 |
+
"default": False,
|
| 479 |
+
"description": "Enable CELLTYPiST (reference-based classifier). How it works: regularized logistic regression trained on curated references predicts per-cell probabilities; optional neighbor correction refines labels. Strengths: fast, scalable, strong on common human/mouse types. Weaknesses: depends on reference coverage; limited for novel or out-of-distribution cell types.",
|
| 480 |
+
"name": "CELLTYPIST",
|
| 481 |
+
"type": "bool",
|
| 482 |
+
},
|
| 483 |
+
{
|
| 484 |
+
"default": False,
|
| 485 |
+
"description": "Enable KNN with BBKNN integration. How it works: builds a batch-balanced kNN graph by enforcing a fixed number of neighbors per batch, then uses this graph for downstream analyses. Strengths: simple, fast, preserves local neighborhood structure across batches. Weaknesses: limited global alignment; residual batch effects when shared cell types are sparse; sensitive to k/neighbor parameters.",
|
| 486 |
+
"name": "KNN_BBKNN",
|
| 487 |
+
"type": "bool",
|
| 488 |
+
},
|
| 489 |
+
{
|
| 490 |
+
"default": False,
|
| 491 |
+
"description": "Enable KNN with Harmony integration. How it works: iteratively adjusts PCA embeddings via soft clustering and linear correction to minimize batch effects while preserving structure. Strengths: scalable, effective batch correction in low-D space, often preserves biology. Weaknesses: can overcorrect and merge true biological differences; depends on PCA/parameters.",
|
| 492 |
+
"name": "KNN_HARMONY",
|
| 493 |
+
"type": "bool",
|
| 494 |
+
},
|
| 495 |
+
{
|
| 496 |
+
"default": False,
|
| 497 |
+
"description": "Enable KNN with Scanorama integration. How it works: identifies mutual nearest neighbors across datasets and performs manifold alignment/low-rank correction to merge 'panoramas'. Strengths: strong cross-dataset alignment for shared populations. Weaknesses: slower and more memory-intensive on large data; may distort rare or unique populations.",
|
| 498 |
+
"name": "KNN_SCANORAMA",
|
| 499 |
+
"type": "bool",
|
| 500 |
+
},
|
| 501 |
+
{
|
| 502 |
+
"default": False,
|
| 503 |
+
"description": "Enable KNN with scVI integration (KNN in scVI latent space). How it works: trains a variational autoencoder (negative binomial likelihood) to learn a batch-corrected latent space; runs KNN in this space to transfer labels. Strengths: robust probabilistic embedding that models counts and batch; good transfer performance. Weaknesses: requires training (GPU preferred); sensitive to embedding quality and k.",
|
| 504 |
+
"name": "KNN_SCVI",
|
| 505 |
+
"type": "bool",
|
| 506 |
+
},
|
| 507 |
+
{
|
| 508 |
+
"default": False,
|
| 509 |
+
"description": "Enable OnClass (ontology-aware classifier). How it works: embeds the Cell Ontology graph and trains a classifier over ontology nodes; uses semantic similarity to generalize to unseen labels (zero-shot). Strengths: leverages Cell Ontology; can map to unseen/fine-grained types; interpretable. Weaknesses: dependent on ontology completeness and mapping quality; may assign overly generic labels.",
|
| 510 |
+
"name": "ONCLASS",
|
| 511 |
+
"type": "bool",
|
| 512 |
+
},
|
| 513 |
+
{
|
| 514 |
+
"default": False,
|
| 515 |
+
"description": "Enable Random Forest classifier. How it works: ensemble of decision trees trained on bootstrap samples with feature subsampling; predictions aggregated by majority vote/probabilities. Strengths: robust to noise and nonlinear signals; quick to train; feature importance available. Weaknesses: probability calibration can be poor; needs feature selection with sparse data; sensitive to class imbalance.",
|
| 516 |
+
"name": "Random_Forest",
|
| 517 |
+
"type": "bool",
|
| 518 |
+
},
|
| 519 |
+
{
|
| 520 |
+
"default": True,
|
| 521 |
+
"description": "Enable scANVI via popV (default). How it works: extends scVI with a classification head to learn from labeled reference and unlabeled query (semi-supervised), yielding latent embeddings and probabilistic labels with uncertainty. Strengths: semi-supervised; models batch, label noise; leverages unlabeled data; provides uncertainty. Weaknesses: higher training time; GPU recommended; can degrade with severe label shift or noisy references.",
|
| 522 |
+
"name": "SCANVI_POPV",
|
| 523 |
+
"type": "bool",
|
| 524 |
+
},
|
| 525 |
+
{
|
| 526 |
+
"default": False,
|
| 527 |
+
"description": "Enable Support Vector classifier. How it works: finds a maximum-margin hyperplane; with kernels (e.g., RBF) to model nonlinear boundaries. Strengths: effective in high-dimensional, small-sample settings; kernel flexibility. Weaknesses: hyperparameter tuning needed; not probabilistic by default; scales poorly to very large datasets.",
|
| 528 |
+
"name": "Support_Vector",
|
| 529 |
+
"type": "bool",
|
| 530 |
+
},
|
| 531 |
+
{
|
| 532 |
+
"default": False,
|
| 533 |
+
"description": "Enable XGBoost classifier. How it works: gradient-boosted decision trees trained sequentially with second-order optimization and regularization to minimize loss. Strengths: high accuracy; captures nonlinear interactions; built-in regularization. Weaknesses: many hyperparameters; risk of overfitting noisy, sparse counts; less interpretable.",
|
| 534 |
+
"name": "XGboost",
|
| 535 |
+
"type": "bool",
|
| 536 |
+
},
|
| 537 |
+
{
|
| 538 |
+
"default": 1,
|
| 539 |
+
"description": "Number of parallel jobs for popV",
|
| 540 |
+
"name": "n_jobs",
|
| 541 |
+
"type": "int",
|
| 542 |
+
},
|
| 543 |
+
{
|
| 544 |
+
"default": "./tmp/",
|
| 545 |
+
"description": "Directory to save trained models and predictions",
|
| 546 |
+
"name": "output_folder",
|
| 547 |
+
"type": "str",
|
| 548 |
+
},
|
| 549 |
+
{
|
| 550 |
+
"default": 10,
|
| 551 |
+
"description": "Number of samples per label (currently unused)",
|
| 552 |
+
"name": "n_samples_per_label",
|
| 553 |
+
"type": "int",
|
| 554 |
+
},
|
| 555 |
+
],
|
| 556 |
+
"required_parameters": [
|
| 557 |
+
{
|
| 558 |
+
"default": None,
|
| 559 |
+
"description": "Path to annotated reference AnnData (.h5ad)",
|
| 560 |
+
"name": "path_to_annotated_h5ad",
|
| 561 |
+
"type": "str",
|
| 562 |
+
},
|
| 563 |
+
{
|
| 564 |
+
"default": None,
|
| 565 |
+
"description": "Path to unannotated query AnnData (.h5ad)",
|
| 566 |
+
"name": "path_to_not_annotated_h5ad",
|
| 567 |
+
"type": "str",
|
| 568 |
+
},
|
| 569 |
+
{
|
| 570 |
+
"default": None,
|
| 571 |
+
"description": "Column in reference adata.obs with cell type labels",
|
| 572 |
+
"name": "ref_labels_key",
|
| 573 |
+
"type": "str",
|
| 574 |
+
},
|
| 575 |
+
],
|
| 576 |
+
},
|
| 577 |
+
{
|
| 578 |
+
"description": "Generate State embeddings for single-cell RNA-seq data using the SE-600M model. "
|
| 579 |
+
"This function downloads the SE-600M model from Hugging Face, installs required dependencies "
|
| 580 |
+
"(git-lfs, uv, arc-state), and generates embeddings for the input AnnData object. "
|
| 581 |
+
"The SE-600M model is a state-of-the-art embedding model for single-cell data that can capture "
|
| 582 |
+
"complex biological patterns and cell states. Features include real-time streaming output, "
|
| 583 |
+
"automatic retry with reduced batch size on failure, GPU detection and warnings, and input validation.",
|
| 584 |
+
"name": "generate_embeddings_with_state",
|
| 585 |
+
"optional_parameters": [
|
| 586 |
+
{
|
| 587 |
+
"default": None,
|
| 588 |
+
"description": "Name of the output embeddings file. If None, will use input filename with '_state_embeddings' suffix",
|
| 589 |
+
"name": "output_filename",
|
| 590 |
+
"type": "str",
|
| 591 |
+
},
|
| 592 |
+
{
|
| 593 |
+
"default": None,
|
| 594 |
+
"description": "Path to the specific model checkpoint. If None, uses the latest checkpoint in model_folder",
|
| 595 |
+
"name": "checkpoint",
|
| 596 |
+
"type": "str",
|
| 597 |
+
},
|
| 598 |
+
{
|
| 599 |
+
"default": "X_state",
|
| 600 |
+
"description": "Name of key to store embeddings in the output AnnData object",
|
| 601 |
+
"name": "embed_key",
|
| 602 |
+
"type": "str",
|
| 603 |
+
},
|
| 604 |
+
{
|
| 605 |
+
"default": None,
|
| 606 |
+
"description": "Path to protein embeddings override (.pt). If omitted, auto-detects in model folder",
|
| 607 |
+
"name": "protein_embeddings",
|
| 608 |
+
"type": "str",
|
| 609 |
+
},
|
| 610 |
+
{
|
| 611 |
+
"default": 500,
|
| 612 |
+
"description": "Batch size for embedding forward pass. Increase to use more VRAM and speed up embedding",
|
| 613 |
+
"name": "batch_size",
|
| 614 |
+
"type": "int",
|
| 615 |
+
},
|
| 616 |
+
],
|
| 617 |
+
"required_parameters": [
|
| 618 |
+
{
|
| 619 |
+
"default": None,
|
| 620 |
+
"description": "Name of the input AnnData file (.h5ad format)",
|
| 621 |
+
"name": "adata_filename",
|
| 622 |
+
"type": "str",
|
| 623 |
+
},
|
| 624 |
+
{
|
| 625 |
+
"default": None,
|
| 626 |
+
"description": "Directory containing the input data file",
|
| 627 |
+
"name": "data_dir",
|
| 628 |
+
"type": "str",
|
| 629 |
+
},
|
| 630 |
+
{
|
| 631 |
+
"default": None,
|
| 632 |
+
"description": "Directory where the SE-600M model will be downloaded and stored",
|
| 633 |
+
"name": "model_folder",
|
| 634 |
+
"type": "str",
|
| 635 |
+
},
|
| 636 |
+
],
|
| 637 |
+
},
|
| 638 |
+
{
|
| 639 |
+
"description": "Convert ENSEMBL gene IDs between different species using BioMart homology mapping. "
|
| 640 |
+
"This function converts a list of ENSEMBL gene IDs from one species to their "
|
| 641 |
+
"homologous counterparts in another species using the Ensembl BioMart database. "
|
| 642 |
+
"The conversion is based on one-to-one ortholog mappings between species.",
|
| 643 |
+
"name": "interspecies_gene_conversion",
|
| 644 |
+
"optional_parameters": [],
|
| 645 |
+
"required_parameters": [
|
| 646 |
+
{
|
| 647 |
+
"default": None,
|
| 648 |
+
"description": "List of ENSEMBL gene IDs to convert (e.g., ['ENSG00000007372', 'ENSG00000181449'])",
|
| 649 |
+
"name": "gene_list",
|
| 650 |
+
"type": "list[str]",
|
| 651 |
+
},
|
| 652 |
+
{
|
| 653 |
+
"default": None,
|
| 654 |
+
"description": "Source species name. Supported species: human, mouse, rat, zebrafish, fly, "
|
| 655 |
+
"drosophila, worm, yeast, chicken, pig, cow, dog, macaque",
|
| 656 |
+
"name": "source_species",
|
| 657 |
+
"type": "str",
|
| 658 |
+
},
|
| 659 |
+
{
|
| 660 |
+
"default": None,
|
| 661 |
+
"description": "Target species name. Same supported species as source_species",
|
| 662 |
+
"name": "target_species",
|
| 663 |
+
"type": "str",
|
| 664 |
+
},
|
| 665 |
+
],
|
| 666 |
+
},
|
| 667 |
+
{
|
| 668 |
+
"description": "Generate average protein embeddings for a list of Ensembl gene IDs using ESM (Evolutionary Scale Modeling) "
|
| 669 |
+
"protein language models. This function fetches all protein isoform sequences for each gene, "
|
| 670 |
+
"computes embeddings for each isoform using the specified ESM model and layer, then averages "
|
| 671 |
+
"the embeddings across all isoforms to create a single representative embedding per gene. "
|
| 672 |
+
"The embeddings are saved as PyTorch tensors for future use. "
|
| 673 |
+
"Memory-friendly implementation with rolling averages, small batch processing, and automatic memory "
|
| 674 |
+
"management. Automatically handles GPU/CPU device selection and includes error recovery for out-of-memory "
|
| 675 |
+
"situations by falling back to single-sequence processing.",
|
| 676 |
+
"name": "generate_gene_embeddings_with_ESM_models",
|
| 677 |
+
"optional_parameters": [
|
| 678 |
+
{
|
| 679 |
+
"default": "esm2_t6_8M_UR50D",
|
| 680 |
+
"description": "ESM model name to use for generating embeddings",
|
| 681 |
+
"name": "model_name",
|
| 682 |
+
"type": "str",
|
| 683 |
+
},
|
| 684 |
+
{
|
| 685 |
+
"default": 6,
|
| 686 |
+
"description": "Which layer of the ESM model to extract embeddings from, generally use last layer",
|
| 687 |
+
"name": "layer",
|
| 688 |
+
"type": "int",
|
| 689 |
+
},
|
| 690 |
+
{
|
| 691 |
+
"default": None,
|
| 692 |
+
"description": "Optional path to save embeddings as PyTorch dictionary",
|
| 693 |
+
"name": "save_path",
|
| 694 |
+
"type": "str",
|
| 695 |
+
},
|
| 696 |
+
{
|
| 697 |
+
"default": 1,
|
| 698 |
+
"description": "Number of sequences to process at once to manage memory usage",
|
| 699 |
+
"name": "batch_size",
|
| 700 |
+
"type": "int",
|
| 701 |
+
},
|
| 702 |
+
{
|
| 703 |
+
"default": 1024,
|
| 704 |
+
"description": "Maximum sequence length to process, longer sequences are filtered out",
|
| 705 |
+
"name": "max_sequence_length",
|
| 706 |
+
"type": "int",
|
| 707 |
+
},
|
| 708 |
+
],
|
| 709 |
+
"required_parameters": [
|
| 710 |
+
{
|
| 711 |
+
"default": None,
|
| 712 |
+
"description": "List of Ensembl gene IDs (e.g., ['ENSG00000012048', 'ENSG00000012049'])",
|
| 713 |
+
"name": "ensembl_gene_ids",
|
| 714 |
+
"type": "List[str]",
|
| 715 |
+
}
|
| 716 |
+
],
|
| 717 |
+
},
|
| 718 |
+
{
|
| 719 |
+
"description": "Generate Transcriptformer embeddings for single-cell RNA-seq data. "
|
| 720 |
+
"This function downloads model checkpoints, prepares the AnnData object with required fields "
|
| 721 |
+
"(ensembl_id, raw counts, assay metadata), and runs inference to generate cell or gene embeddings. "
|
| 722 |
+
"Transcriptformer is a transformer-based model that can learn rich representations of "
|
| 723 |
+
"single-cell gene expression data. The function automatically handles Ensembl ID pattern "
|
| 724 |
+
"detection, model downloading, data preprocessing, and creates missing assay metadata columns "
|
| 725 |
+
"with 'unknown' values if needed.",
|
| 726 |
+
"name": "generate_transcriptformer_embeddings",
|
| 727 |
+
"optional_parameters": [
|
| 728 |
+
{
|
| 729 |
+
"default": None,
|
| 730 |
+
"description": "Name of the output embeddings file. If None, will use input filename with '_transcriptformer_embeddings' suffix",
|
| 731 |
+
"name": "output_filename",
|
| 732 |
+
"type": "str",
|
| 733 |
+
},
|
| 734 |
+
{
|
| 735 |
+
"default": "tf-sapiens",
|
| 736 |
+
"description": "Type of transcriptformer model to download and use. Options: 'tf-sapiens', 'tf-exemplar', 'tf-metazoa'",
|
| 737 |
+
"name": "model_type",
|
| 738 |
+
"type": "str",
|
| 739 |
+
},
|
| 740 |
+
{
|
| 741 |
+
"default": None,
|
| 742 |
+
"description": "Path to the transcriptformer checkpoint directory. If None, will use './checkpoints/{model_type}'",
|
| 743 |
+
"name": "checkpoint_path",
|
| 744 |
+
"type": "str",
|
| 745 |
+
},
|
| 746 |
+
{
|
| 747 |
+
"default": 8,
|
| 748 |
+
"description": "Batch size for inference",
|
| 749 |
+
"name": "batch_size",
|
| 750 |
+
"type": "int",
|
| 751 |
+
},
|
| 752 |
+
{
|
| 753 |
+
"default": "16-mixed",
|
| 754 |
+
"description": "Precision for inference. Options: '16-mixed', '32'",
|
| 755 |
+
"name": "precision",
|
| 756 |
+
"type": "str",
|
| 757 |
+
},
|
| 758 |
+
{
|
| 759 |
+
"default": 30,
|
| 760 |
+
"description": "Maximum count value to clip to",
|
| 761 |
+
"name": "clip_counts",
|
| 762 |
+
"type": "int",
|
| 763 |
+
},
|
| 764 |
+
{
|
| 765 |
+
"default": -1,
|
| 766 |
+
"description": "Which layer to extract embeddings from (-1 for last layer)",
|
| 767 |
+
"name": "embedding_layer_index",
|
| 768 |
+
"type": "int",
|
| 769 |
+
},
|
| 770 |
+
{
|
| 771 |
+
"default": 1,
|
| 772 |
+
"description": "Number of GPUs to use",
|
| 773 |
+
"name": "num_gpus",
|
| 774 |
+
"type": "int",
|
| 775 |
+
},
|
| 776 |
+
{
|
| 777 |
+
"default": 0,
|
| 778 |
+
"description": "Number of data loading workers",
|
| 779 |
+
"name": "n_data_workers",
|
| 780 |
+
"type": "int",
|
| 781 |
+
},
|
| 782 |
+
{
|
| 783 |
+
"default": "ensembl_id",
|
| 784 |
+
"description": "Column name in AnnData.var containing gene identifiers",
|
| 785 |
+
"name": "gene_col_name",
|
| 786 |
+
"type": "str",
|
| 787 |
+
},
|
| 788 |
+
{
|
| 789 |
+
"default": None,
|
| 790 |
+
"description": "Path to pretrained embeddings for out-of-distribution species",
|
| 791 |
+
"name": "pretrained_embedding",
|
| 792 |
+
"type": "str",
|
| 793 |
+
},
|
| 794 |
+
{
|
| 795 |
+
"default": True,
|
| 796 |
+
"description": "Whether to filter genes to only those in the vocabulary",
|
| 797 |
+
"name": "filter_to_vocabs",
|
| 798 |
+
"type": "bool",
|
| 799 |
+
},
|
| 800 |
+
{
|
| 801 |
+
"default": "None",
|
| 802 |
+
"description": "Whether to use raw counts from AnnData.raw.X (True), adata.X (False), or auto-detect (None/auto)",
|
| 803 |
+
"name": "use_raw",
|
| 804 |
+
"type": "str",
|
| 805 |
+
},
|
| 806 |
+
{
|
| 807 |
+
"default": "cell",
|
| 808 |
+
"description": "Type of embeddings to extract: 'cell' for mean-pooled cell embeddings or 'cge' for contextual gene embeddings",
|
| 809 |
+
"name": "emb_type",
|
| 810 |
+
"type": "str",
|
| 811 |
+
},
|
| 812 |
+
{
|
| 813 |
+
"default": False,
|
| 814 |
+
"description": "Remove duplicate genes if found instead of raising an error",
|
| 815 |
+
"name": "remove_duplicate_genes",
|
| 816 |
+
"type": "bool",
|
| 817 |
+
},
|
| 818 |
+
{
|
| 819 |
+
"default": False,
|
| 820 |
+
"description": "Use map-style out-of-memory DataLoader (DistributedSampler-friendly)",
|
| 821 |
+
"name": "oom_dataloader",
|
| 822 |
+
"type": "bool",
|
| 823 |
+
},
|
| 824 |
+
],
|
| 825 |
+
"required_parameters": [
|
| 826 |
+
{
|
| 827 |
+
"default": None,
|
| 828 |
+
"description": "Name of the input AnnData file (.h5ad format)",
|
| 829 |
+
"name": "adata_filename",
|
| 830 |
+
"type": "str",
|
| 831 |
+
},
|
| 832 |
+
{
|
| 833 |
+
"default": None,
|
| 834 |
+
"description": "Directory containing the input data file",
|
| 835 |
+
"name": "data_dir",
|
| 836 |
+
"type": "str",
|
| 837 |
+
},
|
| 838 |
+
],
|
| 839 |
+
},
|
| 840 |
+
]
|
Biomni/biomni/tool/tool_description/glycoengineering.py
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
description = [
|
| 2 |
+
{
|
| 3 |
+
"name": "find_n_glycosylation_motifs",
|
| 4 |
+
"description": "Scan a protein sequence for canonical N-glycosylation sequons (N-X-[S/T], X≠P). Returns positions and motifs.",
|
| 5 |
+
"required_parameters": [
|
| 6 |
+
{
|
| 7 |
+
"name": "sequence",
|
| 8 |
+
"type": "str",
|
| 9 |
+
"description": "Protein sequence (one-letter AA codes)",
|
| 10 |
+
"default": None,
|
| 11 |
+
}
|
| 12 |
+
],
|
| 13 |
+
"optional_parameters": [
|
| 14 |
+
{
|
| 15 |
+
"name": "allow_overlap",
|
| 16 |
+
"type": "bool",
|
| 17 |
+
"description": "Allow overlapping motif detections",
|
| 18 |
+
"default": False,
|
| 19 |
+
}
|
| 20 |
+
],
|
| 21 |
+
},
|
| 22 |
+
{
|
| 23 |
+
"name": "predict_o_glycosylation_hotspots",
|
| 24 |
+
"description": "Heuristic O-glycosite hotspot prediction using local S/T density (lightweight baseline; see NetOGlyc 4.0 for SOTA).",
|
| 25 |
+
"required_parameters": [
|
| 26 |
+
{
|
| 27 |
+
"name": "sequence",
|
| 28 |
+
"type": "str",
|
| 29 |
+
"description": "Protein sequence (one-letter AA codes)",
|
| 30 |
+
"default": None,
|
| 31 |
+
}
|
| 32 |
+
],
|
| 33 |
+
"optional_parameters": [
|
| 34 |
+
{"name": "window", "type": "int", "description": "Odd-sized window for local density (>=3)", "default": 7},
|
| 35 |
+
{
|
| 36 |
+
"name": "min_st_fraction",
|
| 37 |
+
"type": "float",
|
| 38 |
+
"description": "Min S/T fraction in window to flag site",
|
| 39 |
+
"default": 0.4,
|
| 40 |
+
},
|
| 41 |
+
{
|
| 42 |
+
"name": "disallow_proline_next",
|
| 43 |
+
"type": "bool",
|
| 44 |
+
"description": "Avoid S/T immediately followed by Proline",
|
| 45 |
+
"default": True,
|
| 46 |
+
},
|
| 47 |
+
],
|
| 48 |
+
},
|
| 49 |
+
{
|
| 50 |
+
"name": "list_glycoengineering_resources",
|
| 51 |
+
"description": "Curated list of external glycoengineering tools and resources (links and notes) as referenced in issue #198.",
|
| 52 |
+
"required_parameters": [],
|
| 53 |
+
"optional_parameters": [],
|
| 54 |
+
},
|
| 55 |
+
]
|
Biomni/biomni/tool/tool_description/immunology.py
ADDED
|
@@ -0,0 +1,326 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
description = [
|
| 2 |
+
{
|
| 3 |
+
"description": "Perform ATAC-seq peak calling and differential accessibility analysis using MACS2.",
|
| 4 |
+
"name": "analyze_atac_seq_differential_accessibility",
|
| 5 |
+
"optional_parameters": [
|
| 6 |
+
{
|
| 7 |
+
"default": "./atac_results",
|
| 8 |
+
"description": "Directory to save output files",
|
| 9 |
+
"name": "output_dir",
|
| 10 |
+
"type": "str",
|
| 11 |
+
},
|
| 12 |
+
{
|
| 13 |
+
"default": "hs",
|
| 14 |
+
"description": "Genome size parameter for MACS2",
|
| 15 |
+
"name": "genome_size",
|
| 16 |
+
"type": "str",
|
| 17 |
+
},
|
| 18 |
+
{
|
| 19 |
+
"default": 0.05,
|
| 20 |
+
"description": "q-value cutoff for peak detection",
|
| 21 |
+
"name": "q_value",
|
| 22 |
+
"type": "float",
|
| 23 |
+
},
|
| 24 |
+
{
|
| 25 |
+
"default": "atac",
|
| 26 |
+
"description": "Prefix for output file names",
|
| 27 |
+
"name": "name_prefix",
|
| 28 |
+
"type": "str",
|
| 29 |
+
},
|
| 30 |
+
],
|
| 31 |
+
"required_parameters": [
|
| 32 |
+
{
|
| 33 |
+
"default": None,
|
| 34 |
+
"description": "Path to the treatment condition BAM file with aligned ATAC-seq reads",
|
| 35 |
+
"name": "treatment_bam",
|
| 36 |
+
"type": "str",
|
| 37 |
+
},
|
| 38 |
+
{
|
| 39 |
+
"default": None,
|
| 40 |
+
"description": "Path to the control condition BAM file with aligned ATAC-seq reads",
|
| 41 |
+
"name": "control_bam",
|
| 42 |
+
"type": "str",
|
| 43 |
+
},
|
| 44 |
+
],
|
| 45 |
+
},
|
| 46 |
+
{
|
| 47 |
+
"description": "Analyzes bacterial growth curve data to determine growth "
|
| 48 |
+
"parameters such as doubling time, growth rate, and lag "
|
| 49 |
+
"phase.",
|
| 50 |
+
"name": "analyze_bacterial_growth_curve",
|
| 51 |
+
"optional_parameters": [
|
| 52 |
+
{
|
| 53 |
+
"default": ".",
|
| 54 |
+
"description": "Directory where output files will be saved",
|
| 55 |
+
"name": "output_dir",
|
| 56 |
+
"type": "str",
|
| 57 |
+
}
|
| 58 |
+
],
|
| 59 |
+
"required_parameters": [
|
| 60 |
+
{
|
| 61 |
+
"default": None,
|
| 62 |
+
"description": "Time points of measurements in hours",
|
| 63 |
+
"name": "time_points",
|
| 64 |
+
"type": "List or numpy.ndarray",
|
| 65 |
+
},
|
| 66 |
+
{
|
| 67 |
+
"default": None,
|
| 68 |
+
"description": "Optical density measurements corresponding to each time point",
|
| 69 |
+
"name": "od_values",
|
| 70 |
+
"type": "List or numpy.ndarray",
|
| 71 |
+
},
|
| 72 |
+
{
|
| 73 |
+
"default": None,
|
| 74 |
+
"description": "Name of the bacterial strain being analyzed",
|
| 75 |
+
"name": "strain_name",
|
| 76 |
+
"type": "str",
|
| 77 |
+
},
|
| 78 |
+
],
|
| 79 |
+
},
|
| 80 |
+
{
|
| 81 |
+
"description": "Simulates the isolation and purification of immune cells from tissue samples.",
|
| 82 |
+
"name": "isolate_purify_immune_cells",
|
| 83 |
+
"optional_parameters": [
|
| 84 |
+
{
|
| 85 |
+
"default": "collagenase",
|
| 86 |
+
"description": "The enzyme used for tissue digestion",
|
| 87 |
+
"name": "enzyme_type",
|
| 88 |
+
"type": "str",
|
| 89 |
+
},
|
| 90 |
+
{
|
| 91 |
+
"default": None,
|
| 92 |
+
"description": "Specific antibody for magnetic-assisted cell sorting",
|
| 93 |
+
"name": "macs_antibody",
|
| 94 |
+
"type": "str",
|
| 95 |
+
},
|
| 96 |
+
{
|
| 97 |
+
"default": 45,
|
| 98 |
+
"description": "Digestion time in minutes",
|
| 99 |
+
"name": "digestion_time_min",
|
| 100 |
+
"type": "int",
|
| 101 |
+
},
|
| 102 |
+
],
|
| 103 |
+
"required_parameters": [
|
| 104 |
+
{
|
| 105 |
+
"default": None,
|
| 106 |
+
"description": "The type of tissue sample (e.g., 'adipose', 'kidney', 'liver', 'lung', 'spleen')",
|
| 107 |
+
"name": "tissue_type",
|
| 108 |
+
"type": "str",
|
| 109 |
+
},
|
| 110 |
+
{
|
| 111 |
+
"default": None,
|
| 112 |
+
"description": "The immune cell population to isolate (e.g., 'macrophages', 'leukocytes', 'T cells')",
|
| 113 |
+
"name": "target_cell_type",
|
| 114 |
+
"type": "str",
|
| 115 |
+
},
|
| 116 |
+
],
|
| 117 |
+
},
|
| 118 |
+
{
|
| 119 |
+
"description": "Estimate cell cycle phase durations using dual-nucleoside "
|
| 120 |
+
"pulse labeling data and mathematical modeling.",
|
| 121 |
+
"name": "estimate_cell_cycle_phase_durations",
|
| 122 |
+
"optional_parameters": [],
|
| 123 |
+
"required_parameters": [
|
| 124 |
+
{
|
| 125 |
+
"default": None,
|
| 126 |
+
"description": "Dictionary containing experimental "
|
| 127 |
+
"data from flow cytometry with EdU "
|
| 128 |
+
"and BrdU labeling, including time "
|
| 129 |
+
"points and percentages of labeled "
|
| 130 |
+
"cells",
|
| 131 |
+
"name": "flow_cytometry_data",
|
| 132 |
+
"type": "dict",
|
| 133 |
+
},
|
| 134 |
+
{
|
| 135 |
+
"default": None,
|
| 136 |
+
"description": "Initial estimates for cell cycle phase durations and death rates",
|
| 137 |
+
"name": "initial_estimates",
|
| 138 |
+
"type": "dict",
|
| 139 |
+
},
|
| 140 |
+
],
|
| 141 |
+
},
|
| 142 |
+
{
|
| 143 |
+
"description": "Track immune cells under flow conditions and classify their behaviors.",
|
| 144 |
+
"name": "track_immune_cells_under_flow",
|
| 145 |
+
"optional_parameters": [
|
| 146 |
+
{
|
| 147 |
+
"default": "./output",
|
| 148 |
+
"description": "Directory to save output files",
|
| 149 |
+
"name": "output_dir",
|
| 150 |
+
"type": "str",
|
| 151 |
+
},
|
| 152 |
+
{
|
| 153 |
+
"default": 1.0,
|
| 154 |
+
"description": "Pixel size in micrometers",
|
| 155 |
+
"name": "pixel_size_um",
|
| 156 |
+
"type": "float",
|
| 157 |
+
},
|
| 158 |
+
{
|
| 159 |
+
"default": 1.0,
|
| 160 |
+
"description": "Time interval between frames in seconds",
|
| 161 |
+
"name": "time_interval_sec",
|
| 162 |
+
"type": "float",
|
| 163 |
+
},
|
| 164 |
+
{
|
| 165 |
+
"default": "right",
|
| 166 |
+
"description": "Direction of flow ('right', 'left', 'up', 'down')",
|
| 167 |
+
"name": "flow_direction",
|
| 168 |
+
"type": "str",
|
| 169 |
+
},
|
| 170 |
+
],
|
| 171 |
+
"required_parameters": [
|
| 172 |
+
{
|
| 173 |
+
"default": None,
|
| 174 |
+
"description": "Path to image sequence directory or video file",
|
| 175 |
+
"name": "image_sequence_path",
|
| 176 |
+
"type": "str",
|
| 177 |
+
}
|
| 178 |
+
],
|
| 179 |
+
},
|
| 180 |
+
{
|
| 181 |
+
"description": "Analyze CFSE-labeled cell samples to quantify cell division and proliferation.",
|
| 182 |
+
"name": "analyze_cfse_cell_proliferation",
|
| 183 |
+
"optional_parameters": [
|
| 184 |
+
{
|
| 185 |
+
"default": "FL1-A",
|
| 186 |
+
"description": "Name of the channel containing CFSE fluorescence data",
|
| 187 |
+
"name": "cfse_channel",
|
| 188 |
+
"type": "str",
|
| 189 |
+
},
|
| 190 |
+
{
|
| 191 |
+
"default": None,
|
| 192 |
+
"description": "Tuple of (min_fsc, max_fsc, min_ssc, max_ssc) for lymphocyte gating",
|
| 193 |
+
"name": "lymphocyte_gate",
|
| 194 |
+
"type": "tuple or None",
|
| 195 |
+
},
|
| 196 |
+
],
|
| 197 |
+
"required_parameters": [
|
| 198 |
+
{
|
| 199 |
+
"default": None,
|
| 200 |
+
"description": "Path to the FCS file containing flow cytometry data from CFSE-labeled cells",
|
| 201 |
+
"name": "fcs_file_path",
|
| 202 |
+
"type": "str",
|
| 203 |
+
}
|
| 204 |
+
],
|
| 205 |
+
},
|
| 206 |
+
{
|
| 207 |
+
"description": "Analyze cytokine production (IFN-γ, IL-17) in CD4+ T cells after antigen stimulation.",
|
| 208 |
+
"name": "analyze_cytokine_production_in_cd4_tcells",
|
| 209 |
+
"optional_parameters": [
|
| 210 |
+
{
|
| 211 |
+
"default": "./results",
|
| 212 |
+
"description": "Directory to save the results file",
|
| 213 |
+
"name": "output_dir",
|
| 214 |
+
"type": "str",
|
| 215 |
+
}
|
| 216 |
+
],
|
| 217 |
+
"required_parameters": [
|
| 218 |
+
{
|
| 219 |
+
"default": None,
|
| 220 |
+
"description": "Dictionary mapping stimulation "
|
| 221 |
+
"conditions to FCS file paths. "
|
| 222 |
+
"Expected keys: 'unstimulated', "
|
| 223 |
+
"'Mtb300', 'CMV', 'SEB'",
|
| 224 |
+
"name": "fcs_files_dict",
|
| 225 |
+
"type": "dict",
|
| 226 |
+
}
|
| 227 |
+
],
|
| 228 |
+
},
|
| 229 |
+
{
|
| 230 |
+
"description": "Analyze ELISA data to quantify EBV antibody titers in plasma/serum samples.",
|
| 231 |
+
"name": "analyze_ebv_antibody_titers",
|
| 232 |
+
"optional_parameters": [
|
| 233 |
+
{
|
| 234 |
+
"default": "./",
|
| 235 |
+
"description": "Directory to save output files.",
|
| 236 |
+
"name": "output_dir",
|
| 237 |
+
"type": "str",
|
| 238 |
+
}
|
| 239 |
+
],
|
| 240 |
+
"required_parameters": [
|
| 241 |
+
{
|
| 242 |
+
"default": None,
|
| 243 |
+
"description": "Dictionary containing optical "
|
| 244 |
+
"density (OD) readings for each "
|
| 245 |
+
"sample. Format: {sample_id: "
|
| 246 |
+
"{'VCA_IgG': float, 'VCA_IgM': "
|
| 247 |
+
"float, 'EA_IgG': float, 'EA_IgM': "
|
| 248 |
+
"float, 'EBNA1_IgG': float, "
|
| 249 |
+
"'EBNA1_IgM': float}}",
|
| 250 |
+
"name": "raw_od_data",
|
| 251 |
+
"type": "dict",
|
| 252 |
+
},
|
| 253 |
+
{
|
| 254 |
+
"default": None,
|
| 255 |
+
"description": "Dictionary containing standard "
|
| 256 |
+
"curve data for each antibody type. "
|
| 257 |
+
"Format: {antibody_type: "
|
| 258 |
+
"[(concentration, OD), ...]}",
|
| 259 |
+
"name": "standard_curve_data",
|
| 260 |
+
"type": "dict",
|
| 261 |
+
},
|
| 262 |
+
{
|
| 263 |
+
"default": None,
|
| 264 |
+
"description": "Dictionary containing metadata for "
|
| 265 |
+
"each sample. Format: {sample_id: "
|
| 266 |
+
"{'group': str, 'collection_date': "
|
| 267 |
+
"str}}",
|
| 268 |
+
"name": "sample_metadata",
|
| 269 |
+
"type": "dict",
|
| 270 |
+
},
|
| 271 |
+
],
|
| 272 |
+
},
|
| 273 |
+
{
|
| 274 |
+
"description": "Analyzes histological images of CNS lesions to quantify "
|
| 275 |
+
"immune cell infiltration, demyelination, and tissue damage.",
|
| 276 |
+
"name": "analyze_cns_lesion_histology",
|
| 277 |
+
"optional_parameters": [
|
| 278 |
+
{
|
| 279 |
+
"default": "./output",
|
| 280 |
+
"description": "Directory to save output files",
|
| 281 |
+
"name": "output_dir",
|
| 282 |
+
"type": "str",
|
| 283 |
+
},
|
| 284 |
+
{
|
| 285 |
+
"default": "H&E",
|
| 286 |
+
"description": 'Type of histological stain used (options: "H&E", "LFB", "IHC")',
|
| 287 |
+
"name": "stain_type",
|
| 288 |
+
"type": "str",
|
| 289 |
+
},
|
| 290 |
+
],
|
| 291 |
+
"required_parameters": [
|
| 292 |
+
{
|
| 293 |
+
"default": None,
|
| 294 |
+
"description": "Path to the microscopy image file of brain or spinal cord tissue section",
|
| 295 |
+
"name": "image_path",
|
| 296 |
+
"type": "str",
|
| 297 |
+
}
|
| 298 |
+
],
|
| 299 |
+
},
|
| 300 |
+
{
|
| 301 |
+
"description": "Analyzes immunohistochemistry images to quantify protein expression and spatial distribution.",
|
| 302 |
+
"name": "analyze_immunohistochemistry_image",
|
| 303 |
+
"optional_parameters": [
|
| 304 |
+
{
|
| 305 |
+
"default": "Unknown",
|
| 306 |
+
"description": "Name of the protein being analyzed",
|
| 307 |
+
"name": "protein_name",
|
| 308 |
+
"type": "str",
|
| 309 |
+
},
|
| 310 |
+
{
|
| 311 |
+
"default": "./ihc_results/",
|
| 312 |
+
"description": "Directory to save output files",
|
| 313 |
+
"name": "output_dir",
|
| 314 |
+
"type": "str",
|
| 315 |
+
},
|
| 316 |
+
],
|
| 317 |
+
"required_parameters": [
|
| 318 |
+
{
|
| 319 |
+
"default": None,
|
| 320 |
+
"description": "Path to the microscopy image of tissue section stained with antibodies",
|
| 321 |
+
"name": "image_path",
|
| 322 |
+
"type": "str",
|
| 323 |
+
}
|
| 324 |
+
],
|
| 325 |
+
},
|
| 326 |
+
]
|
Biomni/biomni/tool/tool_description/literature.py
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
description = [
|
| 2 |
+
{
|
| 3 |
+
"description": "Fetches supplementary information for a paper given its DOI "
|
| 4 |
+
"and saves it to a specified directory.",
|
| 5 |
+
"name": "fetch_supplementary_info_from_doi",
|
| 6 |
+
"optional_parameters": [
|
| 7 |
+
{
|
| 8 |
+
"default": "supplementary_info",
|
| 9 |
+
"description": "Directory to save supplementary files",
|
| 10 |
+
"name": "output_dir",
|
| 11 |
+
"type": "str",
|
| 12 |
+
}
|
| 13 |
+
],
|
| 14 |
+
"required_parameters": [
|
| 15 |
+
{
|
| 16 |
+
"default": None,
|
| 17 |
+
"description": "The paper DOI",
|
| 18 |
+
"name": "doi",
|
| 19 |
+
"type": "str",
|
| 20 |
+
}
|
| 21 |
+
],
|
| 22 |
+
},
|
| 23 |
+
{
|
| 24 |
+
"description": "Query arXiv for papers based on the provided search query.",
|
| 25 |
+
"name": "query_arxiv",
|
| 26 |
+
"optional_parameters": [
|
| 27 |
+
{
|
| 28 |
+
"default": 10,
|
| 29 |
+
"description": "The maximum number of papers to retrieve.",
|
| 30 |
+
"name": "max_papers",
|
| 31 |
+
"type": "int",
|
| 32 |
+
}
|
| 33 |
+
],
|
| 34 |
+
"required_parameters": [
|
| 35 |
+
{
|
| 36 |
+
"default": None,
|
| 37 |
+
"description": "The search query string.",
|
| 38 |
+
"name": "query",
|
| 39 |
+
"type": "str",
|
| 40 |
+
}
|
| 41 |
+
],
|
| 42 |
+
},
|
| 43 |
+
{
|
| 44 |
+
"description": "Query Google Scholar for papers based on the provided search "
|
| 45 |
+
"query and return the first search result.",
|
| 46 |
+
"name": "query_scholar",
|
| 47 |
+
"optional_parameters": [],
|
| 48 |
+
"required_parameters": [
|
| 49 |
+
{
|
| 50 |
+
"default": None,
|
| 51 |
+
"description": "The search query string.",
|
| 52 |
+
"name": "query",
|
| 53 |
+
"type": "str",
|
| 54 |
+
}
|
| 55 |
+
],
|
| 56 |
+
},
|
| 57 |
+
{
|
| 58 |
+
"description": "Query PubMed for papers based on the provided search query.",
|
| 59 |
+
"name": "query_pubmed",
|
| 60 |
+
"optional_parameters": [
|
| 61 |
+
{
|
| 62 |
+
"default": 10,
|
| 63 |
+
"description": "The maximum number of papers to retrieve.",
|
| 64 |
+
"name": "max_papers",
|
| 65 |
+
"type": "int",
|
| 66 |
+
},
|
| 67 |
+
{
|
| 68 |
+
"default": 3,
|
| 69 |
+
"description": "Maximum number of retry attempts with modified queries.",
|
| 70 |
+
"name": "max_retries",
|
| 71 |
+
"type": "int",
|
| 72 |
+
},
|
| 73 |
+
],
|
| 74 |
+
"required_parameters": [
|
| 75 |
+
{
|
| 76 |
+
"default": None,
|
| 77 |
+
"description": "The search query string.",
|
| 78 |
+
"name": "query",
|
| 79 |
+
"type": "str",
|
| 80 |
+
}
|
| 81 |
+
],
|
| 82 |
+
},
|
| 83 |
+
{
|
| 84 |
+
"description": "Search using Google search and return formatted results.",
|
| 85 |
+
"name": "search_google",
|
| 86 |
+
"optional_parameters": [
|
| 87 |
+
{
|
| 88 |
+
"default": 3,
|
| 89 |
+
"description": "Number of results to return",
|
| 90 |
+
"name": "num_results",
|
| 91 |
+
"type": "int",
|
| 92 |
+
},
|
| 93 |
+
{
|
| 94 |
+
"default": "en",
|
| 95 |
+
"description": "Language code for search results",
|
| 96 |
+
"name": "language",
|
| 97 |
+
"type": "str",
|
| 98 |
+
},
|
| 99 |
+
],
|
| 100 |
+
"required_parameters": [
|
| 101 |
+
{
|
| 102 |
+
"default": None,
|
| 103 |
+
"description": 'The search query (e.g., "protocol text or search question")',
|
| 104 |
+
"name": "query",
|
| 105 |
+
"type": "str",
|
| 106 |
+
}
|
| 107 |
+
],
|
| 108 |
+
},
|
| 109 |
+
{
|
| 110 |
+
"description": "Extract the text content of a webpage using requests and BeautifulSoup.",
|
| 111 |
+
"name": "extract_url_content",
|
| 112 |
+
"optional_parameters": [],
|
| 113 |
+
"required_parameters": [
|
| 114 |
+
{
|
| 115 |
+
"default": None,
|
| 116 |
+
"description": "Webpage URL to extract content from",
|
| 117 |
+
"name": "url",
|
| 118 |
+
"type": "str",
|
| 119 |
+
}
|
| 120 |
+
],
|
| 121 |
+
},
|
| 122 |
+
{
|
| 123 |
+
"description": "Extract text content from a PDF file.",
|
| 124 |
+
"name": "extract_pdf_content",
|
| 125 |
+
"optional_parameters": [],
|
| 126 |
+
"required_parameters": [
|
| 127 |
+
{
|
| 128 |
+
"default": None,
|
| 129 |
+
"description": "URL of the PDF file",
|
| 130 |
+
"name": "url",
|
| 131 |
+
"type": "str",
|
| 132 |
+
}
|
| 133 |
+
],
|
| 134 |
+
},
|
| 135 |
+
{
|
| 136 |
+
"description": "Initiate an advanced web search by launching a specialized agent to collect relevant information and citations through multiple rounds of web searches for a given query.",
|
| 137 |
+
"name": "advanced_web_search_claude",
|
| 138 |
+
"optional_parameters": [
|
| 139 |
+
{
|
| 140 |
+
"default": 1,
|
| 141 |
+
"description": "Maximum number of searches",
|
| 142 |
+
"name": "max_searches",
|
| 143 |
+
"type": "int",
|
| 144 |
+
},
|
| 145 |
+
{
|
| 146 |
+
"default": 3,
|
| 147 |
+
"description": "Maximum number of retry attempts with modified queries.",
|
| 148 |
+
"name": "max_retries",
|
| 149 |
+
"type": "int",
|
| 150 |
+
},
|
| 151 |
+
],
|
| 152 |
+
"required_parameters": [
|
| 153 |
+
{
|
| 154 |
+
"default": None,
|
| 155 |
+
"description": "The search query string.",
|
| 156 |
+
"name": "query",
|
| 157 |
+
"type": "str",
|
| 158 |
+
}
|
| 159 |
+
],
|
| 160 |
+
},
|
| 161 |
+
]
|
Biomni/biomni/tool/tool_description/molecular_biology.py
ADDED
|
@@ -0,0 +1,560 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
description = [
|
| 2 |
+
{
|
| 3 |
+
"description": "Find all Open Reading Frames (ORFs) in a DNA sequence using "
|
| 4 |
+
"Biopython, searching both forward and reverse complement "
|
| 5 |
+
"strands.",
|
| 6 |
+
"name": "annotate_open_reading_frames",
|
| 7 |
+
"optional_parameters": [
|
| 8 |
+
{
|
| 9 |
+
"default": False,
|
| 10 |
+
"description": "Whether to search the reverse complement strand",
|
| 11 |
+
"name": "search_reverse",
|
| 12 |
+
"type": "bool",
|
| 13 |
+
},
|
| 14 |
+
{
|
| 15 |
+
"default": False,
|
| 16 |
+
"description": "Whether to filter out ORFs with same end but later start",
|
| 17 |
+
"name": "filter_subsets",
|
| 18 |
+
"type": "bool",
|
| 19 |
+
},
|
| 20 |
+
],
|
| 21 |
+
"required_parameters": [
|
| 22 |
+
{
|
| 23 |
+
"default": None,
|
| 24 |
+
"description": "DNA sequence to analyze",
|
| 25 |
+
"name": "sequence",
|
| 26 |
+
"type": "str",
|
| 27 |
+
},
|
| 28 |
+
{
|
| 29 |
+
"default": None,
|
| 30 |
+
"description": "Minimum length of ORF in nucleotides",
|
| 31 |
+
"name": "min_length",
|
| 32 |
+
"type": "int",
|
| 33 |
+
},
|
| 34 |
+
],
|
| 35 |
+
},
|
| 36 |
+
{
|
| 37 |
+
"description": "Annotate a DNA sequence using pLannotate's command-line interface.",
|
| 38 |
+
"name": "annotate_plasmid",
|
| 39 |
+
"optional_parameters": [
|
| 40 |
+
{
|
| 41 |
+
"default": True,
|
| 42 |
+
"description": "Whether the sequence is circular",
|
| 43 |
+
"name": "is_circular",
|
| 44 |
+
"type": "bool",
|
| 45 |
+
}
|
| 46 |
+
],
|
| 47 |
+
"required_parameters": [
|
| 48 |
+
{
|
| 49 |
+
"default": None,
|
| 50 |
+
"description": "The DNA sequence to annotate",
|
| 51 |
+
"name": "sequence",
|
| 52 |
+
"type": "str",
|
| 53 |
+
}
|
| 54 |
+
],
|
| 55 |
+
},
|
| 56 |
+
{
|
| 57 |
+
"description": "Retrieves the coding sequence(s) of a specified gene from NCBI Entrez.",
|
| 58 |
+
"name": "get_gene_coding_sequence",
|
| 59 |
+
"optional_parameters": [
|
| 60 |
+
{
|
| 61 |
+
"default": None,
|
| 62 |
+
"description": "Email address for NCBI Entrez (recommended)",
|
| 63 |
+
"name": "email",
|
| 64 |
+
"type": "str",
|
| 65 |
+
}
|
| 66 |
+
],
|
| 67 |
+
"required_parameters": [
|
| 68 |
+
{
|
| 69 |
+
"default": None,
|
| 70 |
+
"description": "Name of the gene",
|
| 71 |
+
"name": "gene_name",
|
| 72 |
+
"type": "str",
|
| 73 |
+
},
|
| 74 |
+
{
|
| 75 |
+
"default": None,
|
| 76 |
+
"description": "Name of the organism",
|
| 77 |
+
"name": "organism",
|
| 78 |
+
"type": "str",
|
| 79 |
+
},
|
| 80 |
+
],
|
| 81 |
+
},
|
| 82 |
+
{
|
| 83 |
+
"description": "Unified function to retrieve plasmid sequences from either "
|
| 84 |
+
"Addgene or NCBI. If is_addgene is True or identifier is "
|
| 85 |
+
"numeric, uses Addgene. Otherwise searches NCBI using the "
|
| 86 |
+
"plasmid name.",
|
| 87 |
+
"name": "get_plasmid_sequence",
|
| 88 |
+
"optional_parameters": [
|
| 89 |
+
{
|
| 90 |
+
"default": None,
|
| 91 |
+
"description": "Force Addgene lookup if True, force "
|
| 92 |
+
"NCBI if False. If None, attempts to "
|
| 93 |
+
"auto-detect based on identifier "
|
| 94 |
+
"format.",
|
| 95 |
+
"name": "is_addgene",
|
| 96 |
+
"type": "bool",
|
| 97 |
+
}
|
| 98 |
+
],
|
| 99 |
+
"required_parameters": [
|
| 100 |
+
{
|
| 101 |
+
"default": None,
|
| 102 |
+
"description": "Either an Addgene ID or plasmid name",
|
| 103 |
+
"name": "identifier",
|
| 104 |
+
"type": "str",
|
| 105 |
+
}
|
| 106 |
+
],
|
| 107 |
+
},
|
| 108 |
+
{
|
| 109 |
+
"description": "Align short sequences (primers) to a longer sequence, "
|
| 110 |
+
"allowing for one mismatch. Checks both forward and reverse "
|
| 111 |
+
"complement strands.",
|
| 112 |
+
"name": "align_sequences",
|
| 113 |
+
"optional_parameters": [],
|
| 114 |
+
"required_parameters": [
|
| 115 |
+
{
|
| 116 |
+
"default": None,
|
| 117 |
+
"description": "Target DNA sequence",
|
| 118 |
+
"name": "long_seq",
|
| 119 |
+
"type": "str",
|
| 120 |
+
},
|
| 121 |
+
{
|
| 122 |
+
"default": None,
|
| 123 |
+
"description": "Single primer or list of primers",
|
| 124 |
+
"name": "short_seqs",
|
| 125 |
+
"type": "Union[str, List[str]]",
|
| 126 |
+
},
|
| 127 |
+
],
|
| 128 |
+
},
|
| 129 |
+
{
|
| 130 |
+
"description": "Simulate PCR amplification with given primers and sequence.",
|
| 131 |
+
"name": "pcr_simple",
|
| 132 |
+
"optional_parameters": [
|
| 133 |
+
{
|
| 134 |
+
"default": False,
|
| 135 |
+
"description": "Whether the sequence is circular",
|
| 136 |
+
"name": "circular",
|
| 137 |
+
"type": "bool",
|
| 138 |
+
}
|
| 139 |
+
],
|
| 140 |
+
"required_parameters": [
|
| 141 |
+
{
|
| 142 |
+
"default": None,
|
| 143 |
+
"description": "Either a sequence string or path to plasmid file",
|
| 144 |
+
"name": "sequence",
|
| 145 |
+
"type": "str",
|
| 146 |
+
},
|
| 147 |
+
{
|
| 148 |
+
"default": None,
|
| 149 |
+
"description": "Forward primer sequence (5' to 3')",
|
| 150 |
+
"name": "forward_primer",
|
| 151 |
+
"type": "str",
|
| 152 |
+
},
|
| 153 |
+
{
|
| 154 |
+
"default": None,
|
| 155 |
+
"description": "Reverse primer sequence (5' to 3')",
|
| 156 |
+
"name": "reverse_primer",
|
| 157 |
+
"type": "str",
|
| 158 |
+
},
|
| 159 |
+
],
|
| 160 |
+
},
|
| 161 |
+
{
|
| 162 |
+
"description": "Simulates restriction enzyme digestion of a DNA sequence and "
|
| 163 |
+
"returns the resulting fragments with their properties.",
|
| 164 |
+
"name": "digest_sequence",
|
| 165 |
+
"optional_parameters": [
|
| 166 |
+
{
|
| 167 |
+
"default": True,
|
| 168 |
+
"description": "Whether the DNA sequence is circular (True) or linear (False)",
|
| 169 |
+
"name": "is_circular",
|
| 170 |
+
"type": "bool",
|
| 171 |
+
}
|
| 172 |
+
],
|
| 173 |
+
"required_parameters": [
|
| 174 |
+
{
|
| 175 |
+
"default": None,
|
| 176 |
+
"description": "Input DNA sequence to be digested",
|
| 177 |
+
"name": "dna_sequence",
|
| 178 |
+
"type": "str",
|
| 179 |
+
},
|
| 180 |
+
{
|
| 181 |
+
"default": None,
|
| 182 |
+
"description": "Names of restriction enzymes to use for digestion",
|
| 183 |
+
"name": "enzyme_names",
|
| 184 |
+
"type": "List[str]",
|
| 185 |
+
},
|
| 186 |
+
],
|
| 187 |
+
},
|
| 188 |
+
{
|
| 189 |
+
"description": "Identifies restriction enzyme sites in a given DNA sequence for specified enzymes.",
|
| 190 |
+
"name": "find_restriction_sites",
|
| 191 |
+
"optional_parameters": [
|
| 192 |
+
{
|
| 193 |
+
"default": True,
|
| 194 |
+
"description": "Whether the DNA sequence is circular (True) or linear (False)",
|
| 195 |
+
"name": "is_circular",
|
| 196 |
+
"type": "bool",
|
| 197 |
+
}
|
| 198 |
+
],
|
| 199 |
+
"required_parameters": [
|
| 200 |
+
{
|
| 201 |
+
"default": None,
|
| 202 |
+
"description": "Complete input DNA sequence",
|
| 203 |
+
"name": "dna_sequence",
|
| 204 |
+
"type": "str",
|
| 205 |
+
},
|
| 206 |
+
{
|
| 207 |
+
"default": None,
|
| 208 |
+
"description": "List of restriction enzyme names to check",
|
| 209 |
+
"name": "enzymes",
|
| 210 |
+
"type": "List[str]",
|
| 211 |
+
},
|
| 212 |
+
],
|
| 213 |
+
},
|
| 214 |
+
{
|
| 215 |
+
"description": "Finds common restriction enzyme sites in a DNA sequence and returns their cut positions.",
|
| 216 |
+
"name": "find_restriction_enzymes",
|
| 217 |
+
"optional_parameters": [
|
| 218 |
+
{
|
| 219 |
+
"default": False,
|
| 220 |
+
"description": "Whether the sequence is circular",
|
| 221 |
+
"name": "is_circular",
|
| 222 |
+
"type": "bool",
|
| 223 |
+
}
|
| 224 |
+
],
|
| 225 |
+
"required_parameters": [
|
| 226 |
+
{
|
| 227 |
+
"default": None,
|
| 228 |
+
"description": "DNA sequence to analyze",
|
| 229 |
+
"name": "sequence",
|
| 230 |
+
"type": "str",
|
| 231 |
+
}
|
| 232 |
+
],
|
| 233 |
+
},
|
| 234 |
+
{
|
| 235 |
+
"description": "Compare query sequence against reference sequence to identify mutations.",
|
| 236 |
+
"name": "find_sequence_mutations",
|
| 237 |
+
"optional_parameters": [
|
| 238 |
+
{
|
| 239 |
+
"default": 1,
|
| 240 |
+
"description": "The start position of the query sequence",
|
| 241 |
+
"name": "query_start",
|
| 242 |
+
"type": "int",
|
| 243 |
+
}
|
| 244 |
+
],
|
| 245 |
+
"required_parameters": [
|
| 246 |
+
{
|
| 247 |
+
"default": None,
|
| 248 |
+
"description": "The sequence being analyzed",
|
| 249 |
+
"name": "query_sequence",
|
| 250 |
+
"type": "str",
|
| 251 |
+
},
|
| 252 |
+
{
|
| 253 |
+
"default": None,
|
| 254 |
+
"description": "The reference sequence to compare against",
|
| 255 |
+
"name": "reference_sequence",
|
| 256 |
+
"type": "str",
|
| 257 |
+
},
|
| 258 |
+
],
|
| 259 |
+
},
|
| 260 |
+
{
|
| 261 |
+
"description": "Design sgRNAs for CRISPR knockout by searching pre-computed "
|
| 262 |
+
"sgRNA libraries. Returns optimized guide RNAs for targeting "
|
| 263 |
+
"a specific gene.",
|
| 264 |
+
"name": "design_knockout_sgrna",
|
| 265 |
+
"optional_parameters": [
|
| 266 |
+
{
|
| 267 |
+
"default": "human",
|
| 268 |
+
"description": "Target organism species",
|
| 269 |
+
"name": "species",
|
| 270 |
+
"type": "str",
|
| 271 |
+
},
|
| 272 |
+
{
|
| 273 |
+
"default": 1,
|
| 274 |
+
"description": "Number of guides to return",
|
| 275 |
+
"name": "num_guides",
|
| 276 |
+
"type": "int",
|
| 277 |
+
},
|
| 278 |
+
],
|
| 279 |
+
"required_parameters": [
|
| 280 |
+
{
|
| 281 |
+
"default": None,
|
| 282 |
+
"description": 'Target gene symbol/name (e.g., "EGFR", "TP53")',
|
| 283 |
+
"name": "gene_name",
|
| 284 |
+
"type": "str",
|
| 285 |
+
},
|
| 286 |
+
{
|
| 287 |
+
"default": None,
|
| 288 |
+
"description": "Path to the data lake",
|
| 289 |
+
"name": "data_lake_path",
|
| 290 |
+
"type": "str",
|
| 291 |
+
},
|
| 292 |
+
],
|
| 293 |
+
},
|
| 294 |
+
{
|
| 295 |
+
"description": "Return a standard protocol for annealing oligonucleotides without phosphorylation.",
|
| 296 |
+
"name": "get_oligo_annealing_protocol",
|
| 297 |
+
"optional_parameters": [],
|
| 298 |
+
"required_parameters": [],
|
| 299 |
+
},
|
| 300 |
+
{
|
| 301 |
+
"description": "Return a customized protocol for Golden Gate assembly based "
|
| 302 |
+
"on the number of inserts and specific DNA sequences.",
|
| 303 |
+
"name": "get_golden_gate_assembly_protocol",
|
| 304 |
+
"optional_parameters": [
|
| 305 |
+
{
|
| 306 |
+
"default": 1,
|
| 307 |
+
"description": "Number of inserts to be assembled",
|
| 308 |
+
"name": "num_inserts",
|
| 309 |
+
"type": "int",
|
| 310 |
+
},
|
| 311 |
+
{
|
| 312 |
+
"default": 75.0,
|
| 313 |
+
"description": "Amount of vector to use in ng",
|
| 314 |
+
"name": "vector_amount_ng",
|
| 315 |
+
"type": "float",
|
| 316 |
+
},
|
| 317 |
+
{
|
| 318 |
+
"default": None,
|
| 319 |
+
"description": "List of insert lengths in bp",
|
| 320 |
+
"name": "insert_lengths",
|
| 321 |
+
"type": "List[int]",
|
| 322 |
+
},
|
| 323 |
+
{
|
| 324 |
+
"default": False,
|
| 325 |
+
"description": "Whether this is for library preparation",
|
| 326 |
+
"name": "is_library_prep",
|
| 327 |
+
"type": "bool",
|
| 328 |
+
},
|
| 329 |
+
],
|
| 330 |
+
"required_parameters": [
|
| 331 |
+
{
|
| 332 |
+
"default": None,
|
| 333 |
+
"description": "Type IIS restriction enzyme to be used",
|
| 334 |
+
"name": "enzyme_name",
|
| 335 |
+
"type": "str",
|
| 336 |
+
},
|
| 337 |
+
{
|
| 338 |
+
"default": None,
|
| 339 |
+
"description": "Length of the destination vector in bp",
|
| 340 |
+
"name": "vector_length",
|
| 341 |
+
"type": "int",
|
| 342 |
+
},
|
| 343 |
+
],
|
| 344 |
+
},
|
| 345 |
+
{
|
| 346 |
+
"description": "Return a standard protocol for bacterial transformation.",
|
| 347 |
+
"name": "get_bacterial_transformation_protocol",
|
| 348 |
+
"optional_parameters": [
|
| 349 |
+
{
|
| 350 |
+
"default": "ampicillin",
|
| 351 |
+
"description": "Selection antibiotic",
|
| 352 |
+
"name": "antibiotic",
|
| 353 |
+
"type": "str",
|
| 354 |
+
},
|
| 355 |
+
{
|
| 356 |
+
"default": False,
|
| 357 |
+
"description": "Whether the sequence contains repetitive elements",
|
| 358 |
+
"name": "is_repetitive",
|
| 359 |
+
"type": "bool",
|
| 360 |
+
},
|
| 361 |
+
],
|
| 362 |
+
"required_parameters": [],
|
| 363 |
+
},
|
| 364 |
+
{
|
| 365 |
+
"description": "Design a single primer within the given sequence window.",
|
| 366 |
+
"name": "design_primer",
|
| 367 |
+
"optional_parameters": [
|
| 368 |
+
{
|
| 369 |
+
"default": 20,
|
| 370 |
+
"description": "Length of the primer to design",
|
| 371 |
+
"name": "primer_length",
|
| 372 |
+
"type": "int",
|
| 373 |
+
},
|
| 374 |
+
{
|
| 375 |
+
"default": 0.4,
|
| 376 |
+
"description": "Minimum GC content",
|
| 377 |
+
"name": "min_gc",
|
| 378 |
+
"type": "float",
|
| 379 |
+
},
|
| 380 |
+
{
|
| 381 |
+
"default": 0.6,
|
| 382 |
+
"description": "Maximum GC content",
|
| 383 |
+
"name": "max_gc",
|
| 384 |
+
"type": "float",
|
| 385 |
+
},
|
| 386 |
+
{
|
| 387 |
+
"default": 55.0,
|
| 388 |
+
"description": "Minimum melting temperature in °C",
|
| 389 |
+
"name": "min_tm",
|
| 390 |
+
"type": "float",
|
| 391 |
+
},
|
| 392 |
+
{
|
| 393 |
+
"default": 65.0,
|
| 394 |
+
"description": "Maximum melting temperature in °C",
|
| 395 |
+
"name": "max_tm",
|
| 396 |
+
"type": "float",
|
| 397 |
+
},
|
| 398 |
+
{
|
| 399 |
+
"default": 100,
|
| 400 |
+
"description": "Size of window to search for primers",
|
| 401 |
+
"name": "search_window",
|
| 402 |
+
"type": "int",
|
| 403 |
+
},
|
| 404 |
+
],
|
| 405 |
+
"required_parameters": [
|
| 406 |
+
{
|
| 407 |
+
"default": None,
|
| 408 |
+
"description": "Target DNA sequence",
|
| 409 |
+
"name": "sequence",
|
| 410 |
+
"type": "str",
|
| 411 |
+
},
|
| 412 |
+
{
|
| 413 |
+
"default": None,
|
| 414 |
+
"description": "Starting position for primer search",
|
| 415 |
+
"name": "start_pos",
|
| 416 |
+
"type": "int",
|
| 417 |
+
},
|
| 418 |
+
],
|
| 419 |
+
},
|
| 420 |
+
{
|
| 421 |
+
"description": "Design Sanger sequencing primers to verify a specific region "
|
| 422 |
+
"in a plasmid. First tries to use primers from an existing "
|
| 423 |
+
"primer pool. If they cannot fully cover the region, designs "
|
| 424 |
+
"additional primers as needed.",
|
| 425 |
+
"name": "design_verification_primers",
|
| 426 |
+
"optional_parameters": [
|
| 427 |
+
{
|
| 428 |
+
"default": None,
|
| 429 |
+
"description": "List of existing primers with their sequences and optional names",
|
| 430 |
+
"name": "existing_primers",
|
| 431 |
+
"type": "Optional[List[Dict[str, str]]]",
|
| 432 |
+
},
|
| 433 |
+
{
|
| 434 |
+
"default": True,
|
| 435 |
+
"description": "Whether the plasmid is circular",
|
| 436 |
+
"name": "is_circular",
|
| 437 |
+
"type": "bool",
|
| 438 |
+
},
|
| 439 |
+
{
|
| 440 |
+
"default": 800,
|
| 441 |
+
"description": "Typical read length for each primer in base pairs",
|
| 442 |
+
"name": "coverage_length",
|
| 443 |
+
"type": "int",
|
| 444 |
+
},
|
| 445 |
+
{
|
| 446 |
+
"default": 20,
|
| 447 |
+
"description": "Length of newly designed primers",
|
| 448 |
+
"name": "primer_length",
|
| 449 |
+
"type": "int",
|
| 450 |
+
},
|
| 451 |
+
{
|
| 452 |
+
"default": 0.4,
|
| 453 |
+
"description": "Minimum GC content for new primers",
|
| 454 |
+
"name": "min_gc",
|
| 455 |
+
"type": "float",
|
| 456 |
+
},
|
| 457 |
+
{
|
| 458 |
+
"default": 0.6,
|
| 459 |
+
"description": "Maximum GC content for new primers",
|
| 460 |
+
"name": "max_gc",
|
| 461 |
+
"type": "float",
|
| 462 |
+
},
|
| 463 |
+
{
|
| 464 |
+
"default": 55.0,
|
| 465 |
+
"description": "Minimum melting temperature in °C",
|
| 466 |
+
"name": "min_tm",
|
| 467 |
+
"type": "float",
|
| 468 |
+
},
|
| 469 |
+
{
|
| 470 |
+
"default": 65.0,
|
| 471 |
+
"description": "Maximum melting temperature in °C",
|
| 472 |
+
"name": "max_tm",
|
| 473 |
+
"type": "float",
|
| 474 |
+
},
|
| 475 |
+
],
|
| 476 |
+
"required_parameters": [
|
| 477 |
+
{
|
| 478 |
+
"default": None,
|
| 479 |
+
"description": "The complete plasmid sequence",
|
| 480 |
+
"name": "plasmid_sequence",
|
| 481 |
+
"type": "str",
|
| 482 |
+
},
|
| 483 |
+
{
|
| 484 |
+
"default": None,
|
| 485 |
+
"description": "Start and end positions to verify (0-based indexing)",
|
| 486 |
+
"name": "target_region",
|
| 487 |
+
"type": "Tuple[int, int]",
|
| 488 |
+
},
|
| 489 |
+
],
|
| 490 |
+
},
|
| 491 |
+
{
|
| 492 |
+
"description": "Design complementary oligonucleotides with Type IIS "
|
| 493 |
+
"restriction enzyme overhangs for Golden Gate assembly based "
|
| 494 |
+
"on restriction site analysis of the backbone.",
|
| 495 |
+
"name": "design_golden_gate_oligos",
|
| 496 |
+
"optional_parameters": [
|
| 497 |
+
{
|
| 498 |
+
"default": True,
|
| 499 |
+
"description": "Whether the backbone is circular",
|
| 500 |
+
"name": "is_circular",
|
| 501 |
+
"type": "bool",
|
| 502 |
+
}
|
| 503 |
+
],
|
| 504 |
+
"required_parameters": [
|
| 505 |
+
{
|
| 506 |
+
"default": None,
|
| 507 |
+
"description": "Complete backbone sequence",
|
| 508 |
+
"name": "backbone_sequence",
|
| 509 |
+
"type": "str",
|
| 510 |
+
},
|
| 511 |
+
{
|
| 512 |
+
"default": None,
|
| 513 |
+
"description": "Sequence to be inserted (e.g., sgRNA target sequence)",
|
| 514 |
+
"name": "insert_sequence",
|
| 515 |
+
"type": "str",
|
| 516 |
+
},
|
| 517 |
+
{
|
| 518 |
+
"default": None,
|
| 519 |
+
"description": "Type IIS restriction enzyme to be used",
|
| 520 |
+
"name": "enzyme_name",
|
| 521 |
+
"type": "str",
|
| 522 |
+
},
|
| 523 |
+
],
|
| 524 |
+
},
|
| 525 |
+
{
|
| 526 |
+
"description": "Simulate Golden Gate assembly to predict final construct "
|
| 527 |
+
"sequences from backbone and fragment sequences.",
|
| 528 |
+
"name": "golden_gate_assembly",
|
| 529 |
+
"optional_parameters": [
|
| 530 |
+
{
|
| 531 |
+
"default": True,
|
| 532 |
+
"description": "Whether the backbone is circular",
|
| 533 |
+
"name": "is_circular",
|
| 534 |
+
"type": "bool",
|
| 535 |
+
}
|
| 536 |
+
],
|
| 537 |
+
"required_parameters": [
|
| 538 |
+
{
|
| 539 |
+
"default": None,
|
| 540 |
+
"description": "Complete backbone sequence",
|
| 541 |
+
"name": "backbone_sequence",
|
| 542 |
+
"type": "str",
|
| 543 |
+
},
|
| 544 |
+
{
|
| 545 |
+
"default": None,
|
| 546 |
+
"description": 'Type IIS restriction enzyme to be used (e.g., "BsmBI", "BsaI")',
|
| 547 |
+
"name": "enzyme_name",
|
| 548 |
+
"type": "str",
|
| 549 |
+
},
|
| 550 |
+
{
|
| 551 |
+
"default": None,
|
| 552 |
+
"description": "List of fragments to insert, containing one of: "
|
| 553 |
+
"name + fwd_oligo + rev_oligo (oligo pair with matching overhangs) or "
|
| 554 |
+
"name + sequence (double-stranded DNA fragment containing restriction sites)",
|
| 555 |
+
"name": "fragments",
|
| 556 |
+
"type": "List[Dict[str, str]]",
|
| 557 |
+
},
|
| 558 |
+
],
|
| 559 |
+
},
|
| 560 |
+
]
|
Biomni/biomni/tool/tool_description/pathology.py
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
description = [
|
| 2 |
+
{
|
| 3 |
+
"description": "Analyze aortic diameter and geometry from cardiovascular "
|
| 4 |
+
"imaging data to measure aortic root diameter, ascending "
|
| 5 |
+
"aorta diameter, and calculate geometric parameters such as "
|
| 6 |
+
"tortuosity and dilation indices.",
|
| 7 |
+
"name": "analyze_aortic_diameter_and_geometry",
|
| 8 |
+
"optional_parameters": [
|
| 9 |
+
{
|
| 10 |
+
"default": "./output",
|
| 11 |
+
"description": "Directory to save output files",
|
| 12 |
+
"name": "output_dir",
|
| 13 |
+
"type": "str",
|
| 14 |
+
}
|
| 15 |
+
],
|
| 16 |
+
"required_parameters": [
|
| 17 |
+
{
|
| 18 |
+
"default": None,
|
| 19 |
+
"description": "Path to the cardiovascular imaging data (DICOM, JPG, PNG)",
|
| 20 |
+
"name": "image_path",
|
| 21 |
+
"type": "str",
|
| 22 |
+
}
|
| 23 |
+
],
|
| 24 |
+
},
|
| 25 |
+
{
|
| 26 |
+
"description": "Analyze luminescence-based ATP assay data to determine intracellular ATP concentration.",
|
| 27 |
+
"name": "analyze_atp_luminescence_assay",
|
| 28 |
+
"optional_parameters": [
|
| 29 |
+
{
|
| 30 |
+
"default": "cell_count",
|
| 31 |
+
"description": "Method used to normalize ATP values, either cell_count or protein_content",
|
| 32 |
+
"name": "normalization_method",
|
| 33 |
+
"type": "str",
|
| 34 |
+
},
|
| 35 |
+
{
|
| 36 |
+
"default": None,
|
| 37 |
+
"description": "Path to CSV file with normalization "
|
| 38 |
+
"data or dictionary with sample IDs "
|
| 39 |
+
"as keys and normalization values",
|
| 40 |
+
"name": "normalization_data",
|
| 41 |
+
"type": "str or dict",
|
| 42 |
+
},
|
| 43 |
+
],
|
| 44 |
+
"required_parameters": [
|
| 45 |
+
{
|
| 46 |
+
"default": None,
|
| 47 |
+
"description": "Path to CSV file containing "
|
| 48 |
+
"luminescence readings from samples "
|
| 49 |
+
"with columns for Sample_ID and "
|
| 50 |
+
"Luminescence_Value",
|
| 51 |
+
"name": "data_file",
|
| 52 |
+
"type": "str",
|
| 53 |
+
},
|
| 54 |
+
{
|
| 55 |
+
"default": None,
|
| 56 |
+
"description": "Path to CSV file containing "
|
| 57 |
+
"standard curve data with columns "
|
| 58 |
+
"for ATP_Concentration (in nM) and "
|
| 59 |
+
"Luminescence_Value",
|
| 60 |
+
"name": "standard_curve_file",
|
| 61 |
+
"type": "str",
|
| 62 |
+
},
|
| 63 |
+
],
|
| 64 |
+
},
|
| 65 |
+
{
|
| 66 |
+
"description": "Analyze histological images of thrombus samples stained with "
|
| 67 |
+
"H&E to identify and quantify different thrombus components "
|
| 68 |
+
"(fresh, cellular lysis, endothelialization, fibroblastic "
|
| 69 |
+
"reaction).",
|
| 70 |
+
"name": "analyze_thrombus_histology",
|
| 71 |
+
"optional_parameters": [
|
| 72 |
+
{
|
| 73 |
+
"default": "./output",
|
| 74 |
+
"description": "Directory to save output files",
|
| 75 |
+
"name": "output_dir",
|
| 76 |
+
"type": "str",
|
| 77 |
+
}
|
| 78 |
+
],
|
| 79 |
+
"required_parameters": [
|
| 80 |
+
{
|
| 81 |
+
"default": None,
|
| 82 |
+
"description": "Path to the histological image of thrombus sample stained with H&E",
|
| 83 |
+
"name": "image_path",
|
| 84 |
+
"type": "str",
|
| 85 |
+
}
|
| 86 |
+
],
|
| 87 |
+
},
|
| 88 |
+
{
|
| 89 |
+
"description": "Analyzes intracellular calcium concentration using Rhod-2 "
|
| 90 |
+
"fluorescent indicator from microscopy images.",
|
| 91 |
+
"name": "analyze_intracellular_calcium_with_rhod2",
|
| 92 |
+
"optional_parameters": [
|
| 93 |
+
{
|
| 94 |
+
"default": "./output",
|
| 95 |
+
"description": "Directory to save output files",
|
| 96 |
+
"name": "output_dir",
|
| 97 |
+
"type": "str",
|
| 98 |
+
}
|
| 99 |
+
],
|
| 100 |
+
"required_parameters": [
|
| 101 |
+
{
|
| 102 |
+
"default": None,
|
| 103 |
+
"description": "Path to the background image (no cells, just media)",
|
| 104 |
+
"name": "background_image_path",
|
| 105 |
+
"type": "str",
|
| 106 |
+
},
|
| 107 |
+
{
|
| 108 |
+
"default": None,
|
| 109 |
+
"description": "Path to the control image (cells without calcium stimulus)",
|
| 110 |
+
"name": "control_image_path",
|
| 111 |
+
"type": "str",
|
| 112 |
+
},
|
| 113 |
+
{
|
| 114 |
+
"default": None,
|
| 115 |
+
"description": "Path to the sample image (cells with calcium stimulus)",
|
| 116 |
+
"name": "sample_image_path",
|
| 117 |
+
"type": "str",
|
| 118 |
+
},
|
| 119 |
+
],
|
| 120 |
+
},
|
| 121 |
+
{
|
| 122 |
+
"description": "Quantify the volume/density of immunofluorescence-labeled corneal nerve fibers.",
|
| 123 |
+
"name": "quantify_corneal_nerve_fibers",
|
| 124 |
+
"optional_parameters": [
|
| 125 |
+
{
|
| 126 |
+
"default": "./output",
|
| 127 |
+
"description": "Directory to save output files",
|
| 128 |
+
"name": "output_dir",
|
| 129 |
+
"type": "str",
|
| 130 |
+
},
|
| 131 |
+
{
|
| 132 |
+
"default": "otsu",
|
| 133 |
+
"description": "Method for thresholding ('otsu', 'adaptive', 'manual')",
|
| 134 |
+
"name": "threshold_method",
|
| 135 |
+
"type": "str",
|
| 136 |
+
},
|
| 137 |
+
],
|
| 138 |
+
"required_parameters": [
|
| 139 |
+
{
|
| 140 |
+
"default": None,
|
| 141 |
+
"description": "Path to the immunofluorescence microscopy image file",
|
| 142 |
+
"name": "image_path",
|
| 143 |
+
"type": "str",
|
| 144 |
+
},
|
| 145 |
+
{
|
| 146 |
+
"default": None,
|
| 147 |
+
"description": "Type of nerve fiber marker (e.g., 'βIII-tubulin', 'SP', 'L1CAM')",
|
| 148 |
+
"name": "marker_type",
|
| 149 |
+
"type": "str",
|
| 150 |
+
},
|
| 151 |
+
],
|
| 152 |
+
},
|
| 153 |
+
{
|
| 154 |
+
"description": "Segment cells and quantify protein expression levels from multichannel tissue images.",
|
| 155 |
+
"name": "segment_and_quantify_cells_in_multiplexed_images",
|
| 156 |
+
"optional_parameters": [
|
| 157 |
+
{
|
| 158 |
+
"default": 0,
|
| 159 |
+
"description": "Index of the nuclear marker channel (typically DAPI)",
|
| 160 |
+
"name": "nuclear_channel_index",
|
| 161 |
+
"type": "int",
|
| 162 |
+
},
|
| 163 |
+
{
|
| 164 |
+
"default": "./output",
|
| 165 |
+
"description": "Directory to save output files",
|
| 166 |
+
"name": "output_dir",
|
| 167 |
+
"type": "str",
|
| 168 |
+
},
|
| 169 |
+
],
|
| 170 |
+
"required_parameters": [
|
| 171 |
+
{
|
| 172 |
+
"default": None,
|
| 173 |
+
"description": "Path to the multichannel image file (tiff stack or similar format)",
|
| 174 |
+
"name": "image_path",
|
| 175 |
+
"type": "str",
|
| 176 |
+
},
|
| 177 |
+
{
|
| 178 |
+
"default": None,
|
| 179 |
+
"description": "List of marker names corresponding to each channel in the image",
|
| 180 |
+
"name": "markers_list",
|
| 181 |
+
"type": "List[str]",
|
| 182 |
+
},
|
| 183 |
+
],
|
| 184 |
+
},
|
| 185 |
+
{
|
| 186 |
+
"description": "Analyze bone microarchitecture parameters from 3D micro-CT "
|
| 187 |
+
"images to calculate bone mineral density, bone volume, "
|
| 188 |
+
"trabecular number, thickness, and separation.",
|
| 189 |
+
"name": "analyze_bone_microct_morphometry",
|
| 190 |
+
"optional_parameters": [
|
| 191 |
+
{
|
| 192 |
+
"default": "./results",
|
| 193 |
+
"description": "Directory to save output files",
|
| 194 |
+
"name": "output_dir",
|
| 195 |
+
"type": "str",
|
| 196 |
+
},
|
| 197 |
+
{
|
| 198 |
+
"default": None,
|
| 199 |
+
"description": "Threshold value for bone segmentation. If None, Otsu's method will be used",
|
| 200 |
+
"name": "threshold_value",
|
| 201 |
+
"type": "float",
|
| 202 |
+
},
|
| 203 |
+
],
|
| 204 |
+
"required_parameters": [
|
| 205 |
+
{
|
| 206 |
+
"default": None,
|
| 207 |
+
"description": "Path to the micro-CT scan data file (TIFF stack or similar 3D format)",
|
| 208 |
+
"name": "input_file_path",
|
| 209 |
+
"type": "str",
|
| 210 |
+
}
|
| 211 |
+
],
|
| 212 |
+
},
|
| 213 |
+
]
|
Biomni/biomni/tool/tool_description/pharmacology.py
ADDED
|
@@ -0,0 +1,774 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
description = [
|
| 2 |
+
{
|
| 3 |
+
"description": "Run DiffDock molecular docking using a protein PDB file and "
|
| 4 |
+
"a SMILES string for the ligand, executing the process in a "
|
| 5 |
+
"Docker container.",
|
| 6 |
+
"name": "run_diffdock_with_smiles",
|
| 7 |
+
"optional_parameters": [
|
| 8 |
+
{
|
| 9 |
+
"default": 0,
|
| 10 |
+
"description": "GPU device ID to use for computation",
|
| 11 |
+
"name": "gpu_device",
|
| 12 |
+
"type": "int",
|
| 13 |
+
},
|
| 14 |
+
{
|
| 15 |
+
"default": True,
|
| 16 |
+
"description": "Whether to use GPU acceleration for docking",
|
| 17 |
+
"name": "use_gpu",
|
| 18 |
+
"type": "bool",
|
| 19 |
+
},
|
| 20 |
+
],
|
| 21 |
+
"required_parameters": [
|
| 22 |
+
{
|
| 23 |
+
"default": None,
|
| 24 |
+
"description": "Path to the protein PDB file for docking",
|
| 25 |
+
"name": "pdb_path",
|
| 26 |
+
"type": "str",
|
| 27 |
+
},
|
| 28 |
+
{
|
| 29 |
+
"default": None,
|
| 30 |
+
"description": "SMILES string representation of the ligand molecule",
|
| 31 |
+
"name": "smiles_string",
|
| 32 |
+
"type": "str",
|
| 33 |
+
},
|
| 34 |
+
{
|
| 35 |
+
"default": None,
|
| 36 |
+
"description": "Local directory path where docking results will be saved",
|
| 37 |
+
"name": "local_output_dir",
|
| 38 |
+
"type": "str",
|
| 39 |
+
},
|
| 40 |
+
],
|
| 41 |
+
},
|
| 42 |
+
{
|
| 43 |
+
"description": "Performs molecular docking using AutoDock Vina to predict "
|
| 44 |
+
"binding affinities between small molecules and a receptor "
|
| 45 |
+
"protein.",
|
| 46 |
+
"name": "docking_autodock_vina",
|
| 47 |
+
"optional_parameters": [
|
| 48 |
+
{
|
| 49 |
+
"default": 1,
|
| 50 |
+
"description": "Number of CPU cores to use for docking",
|
| 51 |
+
"name": "ncpu",
|
| 52 |
+
"type": "int",
|
| 53 |
+
}
|
| 54 |
+
],
|
| 55 |
+
"required_parameters": [
|
| 56 |
+
{
|
| 57 |
+
"default": None,
|
| 58 |
+
"description": "List of SMILES strings representing small molecules to dock",
|
| 59 |
+
"name": "smiles_list",
|
| 60 |
+
"type": "List[str]",
|
| 61 |
+
},
|
| 62 |
+
{
|
| 63 |
+
"default": None,
|
| 64 |
+
"description": "Path to the receptor protein structure PDB file",
|
| 65 |
+
"name": "receptor_pdb_file",
|
| 66 |
+
"type": "str",
|
| 67 |
+
},
|
| 68 |
+
{
|
| 69 |
+
"default": None,
|
| 70 |
+
"description": "3D coordinates [x, y, z] of the docking box center",
|
| 71 |
+
"name": "box_center",
|
| 72 |
+
"type": "List[float]",
|
| 73 |
+
},
|
| 74 |
+
{
|
| 75 |
+
"default": None,
|
| 76 |
+
"description": "Dimensions [x, y, z] of the docking box",
|
| 77 |
+
"name": "box_size",
|
| 78 |
+
"type": "List[float]",
|
| 79 |
+
},
|
| 80 |
+
],
|
| 81 |
+
},
|
| 82 |
+
{
|
| 83 |
+
"description": "Runs AutoSite on a PDB file to identify potential binding "
|
| 84 |
+
"sites and returns a research log with the results.",
|
| 85 |
+
"name": "run_autosite",
|
| 86 |
+
"optional_parameters": [
|
| 87 |
+
{
|
| 88 |
+
"default": 1.0,
|
| 89 |
+
"description": "Grid spacing parameter for AutoSite calculation",
|
| 90 |
+
"name": "spacing",
|
| 91 |
+
"type": "float",
|
| 92 |
+
}
|
| 93 |
+
],
|
| 94 |
+
"required_parameters": [
|
| 95 |
+
{
|
| 96 |
+
"default": None,
|
| 97 |
+
"description": "Path to the input PDB file",
|
| 98 |
+
"name": "pdb_file",
|
| 99 |
+
"type": "str",
|
| 100 |
+
},
|
| 101 |
+
{
|
| 102 |
+
"default": None,
|
| 103 |
+
"description": "Directory where AutoSite results will be saved",
|
| 104 |
+
"name": "output_dir",
|
| 105 |
+
"type": "str",
|
| 106 |
+
},
|
| 107 |
+
],
|
| 108 |
+
},
|
| 109 |
+
{
|
| 110 |
+
"description": "Computes TxGNN model predictions for drug repurposing and "
|
| 111 |
+
"returns the top predicted drugs with their scores for a "
|
| 112 |
+
"given disease.",
|
| 113 |
+
"name": "retrieve_topk_repurposing_drugs_from_disease_txgnn",
|
| 114 |
+
"optional_parameters": [
|
| 115 |
+
{
|
| 116 |
+
"default": 5,
|
| 117 |
+
"description": "The number of top drug predictions to return",
|
| 118 |
+
"name": "k",
|
| 119 |
+
"type": "int",
|
| 120 |
+
}
|
| 121 |
+
],
|
| 122 |
+
"required_parameters": [
|
| 123 |
+
{
|
| 124 |
+
"default": None,
|
| 125 |
+
"description": "The name of the disease for which to retrieve drug predictions",
|
| 126 |
+
"name": "disease_name",
|
| 127 |
+
"type": "str",
|
| 128 |
+
},
|
| 129 |
+
{
|
| 130 |
+
"default": None,
|
| 131 |
+
"description": "Path to the data lake",
|
| 132 |
+
"name": "data_lake_path",
|
| 133 |
+
"type": "str",
|
| 134 |
+
},
|
| 135 |
+
],
|
| 136 |
+
},
|
| 137 |
+
{
|
| 138 |
+
"description": "Predicts ADMET (Absorption, Distribution, Metabolism, "
|
| 139 |
+
"Excretion, Toxicity) properties for a list of compounds "
|
| 140 |
+
"using pretrained models.",
|
| 141 |
+
"name": "predict_admet_properties",
|
| 142 |
+
"optional_parameters": [
|
| 143 |
+
{
|
| 144 |
+
"default": "MPNN",
|
| 145 |
+
"description": "Type of model to use for ADMET prediction (options: 'MPNN', 'CNN', 'Morgan')",
|
| 146 |
+
"name": "ADMET_model_type",
|
| 147 |
+
"type": "str",
|
| 148 |
+
}
|
| 149 |
+
],
|
| 150 |
+
"required_parameters": [
|
| 151 |
+
{
|
| 152 |
+
"default": None,
|
| 153 |
+
"description": "List of SMILES strings representing chemical compounds to analyze",
|
| 154 |
+
"name": "smiles_list",
|
| 155 |
+
"type": "List[str]",
|
| 156 |
+
}
|
| 157 |
+
],
|
| 158 |
+
},
|
| 159 |
+
{
|
| 160 |
+
"description": "Predicts binding affinity between small molecules and a "
|
| 161 |
+
"protein sequence using pre-trained deep learning models.",
|
| 162 |
+
"name": "predict_binding_affinity_protein_1d_sequence",
|
| 163 |
+
"optional_parameters": [
|
| 164 |
+
{
|
| 165 |
+
"default": "MPNN-CNN",
|
| 166 |
+
"description": "Deep learning model architecture to "
|
| 167 |
+
"use for binding affinity prediction "
|
| 168 |
+
"(options: CNN-CNN, MPNN-CNN, "
|
| 169 |
+
"Morgan-CNN, Morgan-AAC, "
|
| 170 |
+
"Daylight-AAC)",
|
| 171 |
+
"name": "affinity_model_type",
|
| 172 |
+
"type": "str",
|
| 173 |
+
}
|
| 174 |
+
],
|
| 175 |
+
"required_parameters": [
|
| 176 |
+
{
|
| 177 |
+
"default": None,
|
| 178 |
+
"description": "List of SMILES strings representing chemical compounds",
|
| 179 |
+
"name": "smiles_list",
|
| 180 |
+
"type": "List[str]",
|
| 181 |
+
},
|
| 182 |
+
{
|
| 183 |
+
"default": None,
|
| 184 |
+
"description": "Protein sequence in amino acid format",
|
| 185 |
+
"name": "amino_acid_sequence",
|
| 186 |
+
"type": "str",
|
| 187 |
+
},
|
| 188 |
+
],
|
| 189 |
+
},
|
| 190 |
+
{
|
| 191 |
+
"description": "Analyzes the stability of pharmaceutical formulations under accelerated storage conditions.",
|
| 192 |
+
"name": "analyze_accelerated_stability_of_pharmaceutical_formulations",
|
| 193 |
+
"optional_parameters": [],
|
| 194 |
+
"required_parameters": [
|
| 195 |
+
{
|
| 196 |
+
"default": None,
|
| 197 |
+
"description": "List of formulation dictionaries "
|
| 198 |
+
"containing name, active ingredient, "
|
| 199 |
+
"concentration, and excipients",
|
| 200 |
+
"name": "formulations",
|
| 201 |
+
"type": "List[dict]",
|
| 202 |
+
},
|
| 203 |
+
{
|
| 204 |
+
"default": None,
|
| 205 |
+
"description": "List of storage condition "
|
| 206 |
+
"dictionaries containing "
|
| 207 |
+
"temperature, humidity (optional), "
|
| 208 |
+
"and description",
|
| 209 |
+
"name": "storage_conditions",
|
| 210 |
+
"type": "List[dict]",
|
| 211 |
+
},
|
| 212 |
+
{
|
| 213 |
+
"default": None,
|
| 214 |
+
"description": "List of time points in days to evaluate stability",
|
| 215 |
+
"name": "time_points",
|
| 216 |
+
"type": "List[int]",
|
| 217 |
+
},
|
| 218 |
+
],
|
| 219 |
+
},
|
| 220 |
+
{
|
| 221 |
+
"description": "Generates a detailed protocol for performing a 3D "
|
| 222 |
+
"chondrogenic aggregate culture assay to evaluate compounds' "
|
| 223 |
+
"effects on chondrogenesis.",
|
| 224 |
+
"name": "run_3d_chondrogenic_aggregate_assay",
|
| 225 |
+
"optional_parameters": [
|
| 226 |
+
{
|
| 227 |
+
"default": 21,
|
| 228 |
+
"description": "Total duration of the culture period in days",
|
| 229 |
+
"name": "culture_duration_days",
|
| 230 |
+
"type": "int",
|
| 231 |
+
},
|
| 232 |
+
{
|
| 233 |
+
"default": 7,
|
| 234 |
+
"description": "Interval in days between measurements",
|
| 235 |
+
"name": "measurement_intervals",
|
| 236 |
+
"type": "int",
|
| 237 |
+
},
|
| 238 |
+
],
|
| 239 |
+
"required_parameters": [
|
| 240 |
+
{
|
| 241 |
+
"default": None,
|
| 242 |
+
"description": "Dictionary with cell information "
|
| 243 |
+
"including 'source', "
|
| 244 |
+
"'passage_number', and "
|
| 245 |
+
"'cell_density'",
|
| 246 |
+
"name": "chondrocyte_cells",
|
| 247 |
+
"type": "dict",
|
| 248 |
+
},
|
| 249 |
+
{
|
| 250 |
+
"default": None,
|
| 251 |
+
"description": "List of compounds to test, each with 'name', 'concentration', and 'vehicle' keys",
|
| 252 |
+
"name": "test_compounds",
|
| 253 |
+
"type": "list of dict",
|
| 254 |
+
},
|
| 255 |
+
],
|
| 256 |
+
},
|
| 257 |
+
{
|
| 258 |
+
"description": "Grade and monitor adverse events in animal studies using the VCOG-CTCAE standard.",
|
| 259 |
+
"name": "grade_adverse_events_using_vcog_ctcae",
|
| 260 |
+
"optional_parameters": [],
|
| 261 |
+
"required_parameters": [
|
| 262 |
+
{
|
| 263 |
+
"default": None,
|
| 264 |
+
"description": "Path to a CSV file containing "
|
| 265 |
+
"clinical evaluation data with "
|
| 266 |
+
"columns: subject_id, time_point, "
|
| 267 |
+
"symptom, severity, measurement "
|
| 268 |
+
"(optional)",
|
| 269 |
+
"name": "clinical_data_file",
|
| 270 |
+
"type": "str",
|
| 271 |
+
}
|
| 272 |
+
],
|
| 273 |
+
},
|
| 274 |
+
{
|
| 275 |
+
"description": "Analyze biodistribution and pharmacokinetic profile of radiolabeled antibodies.",
|
| 276 |
+
"name": "analyze_radiolabeled_antibody_biodistribution",
|
| 277 |
+
"optional_parameters": [],
|
| 278 |
+
"required_parameters": [
|
| 279 |
+
{
|
| 280 |
+
"default": None,
|
| 281 |
+
"description": "Time points (hours) at which measurements were taken",
|
| 282 |
+
"name": "time_points",
|
| 283 |
+
"type": "List[float] or numpy.ndarray",
|
| 284 |
+
},
|
| 285 |
+
{
|
| 286 |
+
"default": None,
|
| 287 |
+
"description": "Dictionary where keys are tissue "
|
| 288 |
+
"names and values are lists/arrays "
|
| 289 |
+
"of %IA/g measurements corresponding "
|
| 290 |
+
"to time_points. Must include "
|
| 291 |
+
"'tumor' as one of the keys",
|
| 292 |
+
"name": "tissue_data",
|
| 293 |
+
"type": "dict",
|
| 294 |
+
},
|
| 295 |
+
],
|
| 296 |
+
},
|
| 297 |
+
{
|
| 298 |
+
"description": "Estimate radiation absorbed doses to tumor and normal organs "
|
| 299 |
+
"for alpha-particle radiotherapeutics using the Medical "
|
| 300 |
+
"Internal Radiation Dose (MIRD) schema.",
|
| 301 |
+
"name": "estimate_alpha_particle_radiotherapy_dosimetry",
|
| 302 |
+
"optional_parameters": [
|
| 303 |
+
{
|
| 304 |
+
"default": "dosimetry_results.csv",
|
| 305 |
+
"description": "Filename to save the dosimetry results",
|
| 306 |
+
"name": "output_file",
|
| 307 |
+
"type": "str",
|
| 308 |
+
}
|
| 309 |
+
],
|
| 310 |
+
"required_parameters": [
|
| 311 |
+
{
|
| 312 |
+
"default": None,
|
| 313 |
+
"description": "Dictionary containing organ/tissue "
|
| 314 |
+
"names as keys and a list of "
|
| 315 |
+
"time-activity measurements as "
|
| 316 |
+
"values. Each measurement should be "
|
| 317 |
+
"a tuple of (time_hours, "
|
| 318 |
+
"percent_injected_activity). Must "
|
| 319 |
+
"include entries for all relevant "
|
| 320 |
+
"organs including 'tumor'.",
|
| 321 |
+
"name": "biodistribution_data",
|
| 322 |
+
"type": "dict",
|
| 323 |
+
},
|
| 324 |
+
{
|
| 325 |
+
"default": None,
|
| 326 |
+
"description": "Dictionary containing radiation "
|
| 327 |
+
"parameters for the alpha-emitting "
|
| 328 |
+
"radionuclide including "
|
| 329 |
+
"'radionuclide', 'half_life_hours', "
|
| 330 |
+
"'energy_per_decay_MeV', "
|
| 331 |
+
"'radiation_weighting_factor', and "
|
| 332 |
+
"'S_factors'.",
|
| 333 |
+
"name": "radiation_parameters",
|
| 334 |
+
"type": "dict",
|
| 335 |
+
},
|
| 336 |
+
],
|
| 337 |
+
},
|
| 338 |
+
{
|
| 339 |
+
"description": "Perform a Methylome-wide Association Study (MWAS) to "
|
| 340 |
+
"identify CpG sites significantly associated with CYP2C19 "
|
| 341 |
+
"metabolizer status.",
|
| 342 |
+
"name": "perform_mwas_cyp2c19_metabolizer_status",
|
| 343 |
+
"optional_parameters": [
|
| 344 |
+
{
|
| 345 |
+
"default": None,
|
| 346 |
+
"description": "Path to CSV or TSV file containing "
|
| 347 |
+
"covariates to adjust for in the "
|
| 348 |
+
"regression model (e.g., age, sex, "
|
| 349 |
+
"smoking status).",
|
| 350 |
+
"name": "covariates_path",
|
| 351 |
+
"type": "str",
|
| 352 |
+
},
|
| 353 |
+
{
|
| 354 |
+
"default": 0.05,
|
| 355 |
+
"description": "P-value threshold for significance after multiple testing correction.",
|
| 356 |
+
"name": "pvalue_threshold",
|
| 357 |
+
"type": "float",
|
| 358 |
+
},
|
| 359 |
+
{
|
| 360 |
+
"default": "significant_cpg_sites.csv",
|
| 361 |
+
"description": "Filename to save significant CpG sites.",
|
| 362 |
+
"name": "output_file",
|
| 363 |
+
"type": "str",
|
| 364 |
+
},
|
| 365 |
+
],
|
| 366 |
+
"required_parameters": [
|
| 367 |
+
{
|
| 368 |
+
"default": None,
|
| 369 |
+
"description": "Path to CSV or TSV file containing "
|
| 370 |
+
"DNA methylation beta values. Rows "
|
| 371 |
+
"should be samples, columns should "
|
| 372 |
+
"be CpG sites.",
|
| 373 |
+
"name": "methylation_data_path",
|
| 374 |
+
"type": "str",
|
| 375 |
+
},
|
| 376 |
+
{
|
| 377 |
+
"default": None,
|
| 378 |
+
"description": "Path to CSV or TSV file containing "
|
| 379 |
+
"CYP2C19 metabolizer status for each "
|
| 380 |
+
"sample. Should have a sample ID "
|
| 381 |
+
"column and a status column.",
|
| 382 |
+
"name": "metabolizer_status_path",
|
| 383 |
+
"type": "str",
|
| 384 |
+
},
|
| 385 |
+
],
|
| 386 |
+
},
|
| 387 |
+
{
|
| 388 |
+
"description": "Calculate key physicochemical properties of a drug candidate molecule.",
|
| 389 |
+
"name": "calculate_physicochemical_properties",
|
| 390 |
+
"optional_parameters": [],
|
| 391 |
+
"required_parameters": [
|
| 392 |
+
{
|
| 393 |
+
"default": None,
|
| 394 |
+
"description": "The molecular structure in SMILES format",
|
| 395 |
+
"name": "smiles_string",
|
| 396 |
+
"type": "str",
|
| 397 |
+
}
|
| 398 |
+
],
|
| 399 |
+
},
|
| 400 |
+
{
|
| 401 |
+
"description": "Analyze tumor growth inhibition in xenograft models across different treatment groups.",
|
| 402 |
+
"name": "analyze_xenograft_tumor_growth_inhibition",
|
| 403 |
+
"optional_parameters": [
|
| 404 |
+
{
|
| 405 |
+
"default": "./results",
|
| 406 |
+
"description": "Directory to save output files",
|
| 407 |
+
"name": "output_dir",
|
| 408 |
+
"type": "str",
|
| 409 |
+
}
|
| 410 |
+
],
|
| 411 |
+
"required_parameters": [
|
| 412 |
+
{
|
| 413 |
+
"default": None,
|
| 414 |
+
"description": "Path to CSV or TSV file containing tumor volume measurements",
|
| 415 |
+
"name": "data_path",
|
| 416 |
+
"type": "str",
|
| 417 |
+
},
|
| 418 |
+
{
|
| 419 |
+
"default": None,
|
| 420 |
+
"description": "Name of the column containing time points",
|
| 421 |
+
"name": "time_column",
|
| 422 |
+
"type": "str",
|
| 423 |
+
},
|
| 424 |
+
{
|
| 425 |
+
"default": None,
|
| 426 |
+
"description": "Name of the column containing tumor volume measurements",
|
| 427 |
+
"name": "volume_column",
|
| 428 |
+
"type": "str",
|
| 429 |
+
},
|
| 430 |
+
{
|
| 431 |
+
"default": None,
|
| 432 |
+
"description": "Name of the column containing treatment group labels",
|
| 433 |
+
"name": "group_column",
|
| 434 |
+
"type": "str",
|
| 435 |
+
},
|
| 436 |
+
{
|
| 437 |
+
"default": None,
|
| 438 |
+
"description": "Name of the column containing subject/mouse identifiers",
|
| 439 |
+
"name": "subject_column",
|
| 440 |
+
"type": "str",
|
| 441 |
+
},
|
| 442 |
+
],
|
| 443 |
+
},
|
| 444 |
+
{
|
| 445 |
+
"description": "Analyze western blot or DNA electrophoresis images and return pixel distribution statistics including intensity statistics, percentiles, and brightness distribution. Use this to determine appropriate threshold values for find_roi_from_image.",
|
| 446 |
+
"name": "analyze_pixel_distribution",
|
| 447 |
+
"optional_parameters": [],
|
| 448 |
+
"required_parameters": [
|
| 449 |
+
{
|
| 450 |
+
"default": None,
|
| 451 |
+
"description": "Path to the input grayscale image. Automatically appends .png if no suffix is provided.",
|
| 452 |
+
"name": "image_path",
|
| 453 |
+
"type": "str",
|
| 454 |
+
}
|
| 455 |
+
],
|
| 456 |
+
},
|
| 457 |
+
{
|
| 458 |
+
"description": "Find the ROIs (regions of interest) of protein bands from a Western blot or DNA electrophoresis image using threshold-based blob detection. Returns annotated image path and list of ROI coordinates. Use analyze_pixel_distribution first to determine appropriate threshold values. The returned ROI list can be converted to target_bands format for analyze_western_blot.",
|
| 459 |
+
"name": "find_roi_from_image",
|
| 460 |
+
"optional_parameters": [
|
| 461 |
+
{
|
| 462 |
+
"default": True,
|
| 463 |
+
"description": "If True, draw green contours (hulls) and blue keypoint boxes for debugging.",
|
| 464 |
+
"name": "debug",
|
| 465 |
+
"type": "bool",
|
| 466 |
+
}
|
| 467 |
+
],
|
| 468 |
+
"required_parameters": [
|
| 469 |
+
{
|
| 470 |
+
"default": None,
|
| 471 |
+
"description": "Path to the input image.",
|
| 472 |
+
"name": "image_path",
|
| 473 |
+
"type": "str",
|
| 474 |
+
},
|
| 475 |
+
{
|
| 476 |
+
"default": None,
|
| 477 |
+
"description": "Pixel intensities lower than this value are used to make the binary image. Use analyze_pixel_distribution to determine appropriate values.",
|
| 478 |
+
"name": "lower_threshold",
|
| 479 |
+
"type": "int",
|
| 480 |
+
},
|
| 481 |
+
{
|
| 482 |
+
"default": None,
|
| 483 |
+
"description": "Pixel intensities greater than or equal to this value are used to make the binary image. Use analyze_pixel_distribution to determine appropriate values.",
|
| 484 |
+
"name": "upper_threshold",
|
| 485 |
+
"type": "int",
|
| 486 |
+
},
|
| 487 |
+
{
|
| 488 |
+
"default": None,
|
| 489 |
+
"description": "The actual number of bands expected in the image.",
|
| 490 |
+
"name": "number_of_bands",
|
| 491 |
+
"type": "int",
|
| 492 |
+
},
|
| 493 |
+
],
|
| 494 |
+
},
|
| 495 |
+
{
|
| 496 |
+
"description": "Performs densitometric analysis of Western blot images to "
|
| 497 |
+
"quantify relative protein expression.",
|
| 498 |
+
"name": "analyze_western_blot",
|
| 499 |
+
"optional_parameters": [
|
| 500 |
+
{
|
| 501 |
+
"default": "./results",
|
| 502 |
+
"description": "Directory to save output files",
|
| 503 |
+
"name": "output_dir",
|
| 504 |
+
"type": "str",
|
| 505 |
+
}
|
| 506 |
+
],
|
| 507 |
+
"required_parameters": [
|
| 508 |
+
{
|
| 509 |
+
"default": None,
|
| 510 |
+
"description": "Path to the Western blot image file",
|
| 511 |
+
"name": "blot_image_path",
|
| 512 |
+
"type": "str",
|
| 513 |
+
},
|
| 514 |
+
{
|
| 515 |
+
"default": None,
|
| 516 |
+
"description": "List of dictionaries containing "
|
| 517 |
+
"information about target protein "
|
| 518 |
+
"bands, each with 'name' and 'roi' "
|
| 519 |
+
"(region of interest as [x, y, "
|
| 520 |
+
"width, height])",
|
| 521 |
+
"name": "target_bands",
|
| 522 |
+
"type": "list of dict",
|
| 523 |
+
},
|
| 524 |
+
{
|
| 525 |
+
"default": None,
|
| 526 |
+
"description": "Dictionary with 'name' and 'roi' "
|
| 527 |
+
"for the loading control protein "
|
| 528 |
+
"(e.g., β-actin, GAPDH)",
|
| 529 |
+
"name": "loading_control_band",
|
| 530 |
+
"type": "dict",
|
| 531 |
+
},
|
| 532 |
+
{
|
| 533 |
+
"default": None,
|
| 534 |
+
"description": "Dictionary containing information "
|
| 535 |
+
"about antibodies used with "
|
| 536 |
+
"'primary' and 'secondary' keys",
|
| 537 |
+
"name": "antibody_info",
|
| 538 |
+
"type": "dict",
|
| 539 |
+
},
|
| 540 |
+
],
|
| 541 |
+
},
|
| 542 |
+
{
|
| 543 |
+
"description": "Query drug-drug interactions from DDInter database to identify potential interactions, mechanisms, and severity levels between specified drugs.",
|
| 544 |
+
"name": "query_drug_interactions",
|
| 545 |
+
"required_parameters": [
|
| 546 |
+
{
|
| 547 |
+
"default": None,
|
| 548 |
+
"description": "List of drug names to query for interactions",
|
| 549 |
+
"name": "drug_names",
|
| 550 |
+
"type": "List[str]",
|
| 551 |
+
}
|
| 552 |
+
],
|
| 553 |
+
"optional_parameters": [
|
| 554 |
+
{
|
| 555 |
+
"default": None,
|
| 556 |
+
"description": "Filter results by specific interaction types",
|
| 557 |
+
"name": "interaction_types",
|
| 558 |
+
"type": "List[str]",
|
| 559 |
+
},
|
| 560 |
+
{
|
| 561 |
+
"default": None,
|
| 562 |
+
"description": "Filter results by severity levels (Major, Moderate, Minor)",
|
| 563 |
+
"name": "severity_levels",
|
| 564 |
+
"type": "List[str]",
|
| 565 |
+
},
|
| 566 |
+
{
|
| 567 |
+
"default": None,
|
| 568 |
+
"description": "Path to data lake directory containing DDInter data",
|
| 569 |
+
"name": "data_lake_path",
|
| 570 |
+
"type": "str",
|
| 571 |
+
},
|
| 572 |
+
],
|
| 573 |
+
},
|
| 574 |
+
{
|
| 575 |
+
"description": "Analyze safety of a drug combination for potential interactions using DDInter database with comprehensive risk assessment and clinical recommendations.",
|
| 576 |
+
"name": "check_drug_combination_safety",
|
| 577 |
+
"required_parameters": [
|
| 578 |
+
{
|
| 579 |
+
"default": None,
|
| 580 |
+
"description": "List of drugs to analyze for combination safety",
|
| 581 |
+
"name": "drug_list",
|
| 582 |
+
"type": "List[str]",
|
| 583 |
+
}
|
| 584 |
+
],
|
| 585 |
+
"optional_parameters": [
|
| 586 |
+
{
|
| 587 |
+
"default": True,
|
| 588 |
+
"description": "Include interaction mechanism descriptions in results",
|
| 589 |
+
"name": "include_mechanisms",
|
| 590 |
+
"type": "bool",
|
| 591 |
+
},
|
| 592 |
+
{
|
| 593 |
+
"default": True,
|
| 594 |
+
"description": "Include management recommendations in results",
|
| 595 |
+
"name": "include_management",
|
| 596 |
+
"type": "bool",
|
| 597 |
+
},
|
| 598 |
+
{
|
| 599 |
+
"default": None,
|
| 600 |
+
"description": "Path to data lake directory containing DDInter data",
|
| 601 |
+
"name": "data_lake_path",
|
| 602 |
+
"type": "str",
|
| 603 |
+
},
|
| 604 |
+
],
|
| 605 |
+
},
|
| 606 |
+
{
|
| 607 |
+
"description": "Analyze interaction mechanisms between two specific drugs providing detailed mechanistic insights and clinical significance assessment.",
|
| 608 |
+
"name": "analyze_interaction_mechanisms",
|
| 609 |
+
"required_parameters": [
|
| 610 |
+
{
|
| 611 |
+
"default": None,
|
| 612 |
+
"description": "Pair of drug names to analyze (drug1, drug2)",
|
| 613 |
+
"name": "drug_pair",
|
| 614 |
+
"type": "Tuple[str, str]",
|
| 615 |
+
}
|
| 616 |
+
],
|
| 617 |
+
"optional_parameters": [
|
| 618 |
+
{
|
| 619 |
+
"default": True,
|
| 620 |
+
"description": "Include detailed mechanistic information in analysis",
|
| 621 |
+
"name": "detailed_analysis",
|
| 622 |
+
"type": "bool",
|
| 623 |
+
},
|
| 624 |
+
{
|
| 625 |
+
"default": None,
|
| 626 |
+
"description": "Path to data lake directory containing DDInter data",
|
| 627 |
+
"name": "data_lake_path",
|
| 628 |
+
"type": "str",
|
| 629 |
+
},
|
| 630 |
+
],
|
| 631 |
+
},
|
| 632 |
+
{
|
| 633 |
+
"description": "Find alternative drugs that don't interact with contraindicated drugs using DDInter database for safer therapeutic substitutions.",
|
| 634 |
+
"name": "find_alternative_drugs_ddinter",
|
| 635 |
+
"required_parameters": [
|
| 636 |
+
{
|
| 637 |
+
"default": None,
|
| 638 |
+
"description": "Drug to find alternatives for",
|
| 639 |
+
"name": "target_drug",
|
| 640 |
+
"type": "str",
|
| 641 |
+
},
|
| 642 |
+
{
|
| 643 |
+
"default": None,
|
| 644 |
+
"description": "List of drugs to avoid interactions with",
|
| 645 |
+
"name": "contraindicated_drugs",
|
| 646 |
+
"type": "List[str]",
|
| 647 |
+
},
|
| 648 |
+
],
|
| 649 |
+
"optional_parameters": [
|
| 650 |
+
{
|
| 651 |
+
"default": None,
|
| 652 |
+
"description": "Limit search to specific therapeutic class",
|
| 653 |
+
"name": "therapeutic_class",
|
| 654 |
+
"type": "str",
|
| 655 |
+
},
|
| 656 |
+
{
|
| 657 |
+
"default": None,
|
| 658 |
+
"description": "Path to data lake directory containing DDInter data",
|
| 659 |
+
"name": "data_lake_path",
|
| 660 |
+
"type": "str",
|
| 661 |
+
},
|
| 662 |
+
],
|
| 663 |
+
},
|
| 664 |
+
{
|
| 665 |
+
"description": "Query FDA adverse event reports for specific drugs from the OpenFDA database to identify potential safety signals, reaction patterns, and regulatory intelligence.",
|
| 666 |
+
"name": "query_fda_adverse_events",
|
| 667 |
+
"required_parameters": [
|
| 668 |
+
{
|
| 669 |
+
"default": None,
|
| 670 |
+
"description": "Name of the drug to query for adverse events",
|
| 671 |
+
"name": "drug_name",
|
| 672 |
+
"type": "str",
|
| 673 |
+
},
|
| 674 |
+
],
|
| 675 |
+
"optional_parameters": [
|
| 676 |
+
{
|
| 677 |
+
"default": None,
|
| 678 |
+
"description": "Optional date range as (start_date, end_date) in YYYY-MM-DD format",
|
| 679 |
+
"name": "date_range",
|
| 680 |
+
"type": "Tuple[str, str]",
|
| 681 |
+
},
|
| 682 |
+
{
|
| 683 |
+
"default": None,
|
| 684 |
+
"description": "Optional filter by severity levels ['serious', 'non_serious']",
|
| 685 |
+
"name": "severity_filter",
|
| 686 |
+
"type": "List[str]",
|
| 687 |
+
},
|
| 688 |
+
{
|
| 689 |
+
"default": None,
|
| 690 |
+
"description": "Optional filter by outcomes ['life_threatening', 'hospitalization', 'death']",
|
| 691 |
+
"name": "outcome_filter",
|
| 692 |
+
"type": "List[str]",
|
| 693 |
+
},
|
| 694 |
+
{
|
| 695 |
+
"default": 100,
|
| 696 |
+
"description": "Maximum number of results to return",
|
| 697 |
+
"name": "limit",
|
| 698 |
+
"type": "int",
|
| 699 |
+
},
|
| 700 |
+
],
|
| 701 |
+
},
|
| 702 |
+
{
|
| 703 |
+
"description": "Retrieve FDA drug label information including indications, contraindications, warnings, and dosage information from the OpenFDA database.",
|
| 704 |
+
"name": "get_fda_drug_label_info",
|
| 705 |
+
"required_parameters": [
|
| 706 |
+
{
|
| 707 |
+
"default": None,
|
| 708 |
+
"description": "Name of the drug to query for label information",
|
| 709 |
+
"name": "drug_name",
|
| 710 |
+
"type": "str",
|
| 711 |
+
},
|
| 712 |
+
],
|
| 713 |
+
"optional_parameters": [
|
| 714 |
+
{
|
| 715 |
+
"default": None,
|
| 716 |
+
"description": "Optional list of specific sections to retrieve ['indications_and_usage', 'contraindications', 'warnings', 'dosage_and_administration']",
|
| 717 |
+
"name": "sections",
|
| 718 |
+
"type": "List[str]",
|
| 719 |
+
},
|
| 720 |
+
],
|
| 721 |
+
},
|
| 722 |
+
{
|
| 723 |
+
"description": "Check for FDA drug recalls and enforcement actions from the OpenFDA database to identify safety concerns and regulatory actions.",
|
| 724 |
+
"name": "check_fda_drug_recalls",
|
| 725 |
+
"required_parameters": [
|
| 726 |
+
{
|
| 727 |
+
"default": None,
|
| 728 |
+
"description": "Name of the drug to check for recalls",
|
| 729 |
+
"name": "drug_name",
|
| 730 |
+
"type": "str",
|
| 731 |
+
},
|
| 732 |
+
],
|
| 733 |
+
"optional_parameters": [
|
| 734 |
+
{
|
| 735 |
+
"default": None,
|
| 736 |
+
"description": "Optional filter by recall class ['Class I', 'Class II', 'Class III']",
|
| 737 |
+
"name": "classification",
|
| 738 |
+
"type": "List[str]",
|
| 739 |
+
},
|
| 740 |
+
{
|
| 741 |
+
"default": None,
|
| 742 |
+
"description": "Optional date range for recalls as (start_date, end_date)",
|
| 743 |
+
"name": "date_range",
|
| 744 |
+
"type": "Tuple[str, str]",
|
| 745 |
+
},
|
| 746 |
+
],
|
| 747 |
+
},
|
| 748 |
+
{
|
| 749 |
+
"description": "Analyze safety signals across multiple drugs using OpenFDA adverse event data to identify patterns and comparative risk profiles.",
|
| 750 |
+
"name": "analyze_fda_safety_signals",
|
| 751 |
+
"required_parameters": [
|
| 752 |
+
{
|
| 753 |
+
"default": None,
|
| 754 |
+
"description": "List of drug names to analyze for safety signals",
|
| 755 |
+
"name": "drug_list",
|
| 756 |
+
"type": "List[str]",
|
| 757 |
+
},
|
| 758 |
+
],
|
| 759 |
+
"optional_parameters": [
|
| 760 |
+
{
|
| 761 |
+
"default": None,
|
| 762 |
+
"description": "Optional comparison time period as (start_date, end_date)",
|
| 763 |
+
"name": "comparison_period",
|
| 764 |
+
"type": "Tuple[str, str]",
|
| 765 |
+
},
|
| 766 |
+
{
|
| 767 |
+
"default": 2.0,
|
| 768 |
+
"description": "Threshold for signal detection",
|
| 769 |
+
"name": "signal_threshold",
|
| 770 |
+
"type": "float",
|
| 771 |
+
},
|
| 772 |
+
],
|
| 773 |
+
},
|
| 774 |
+
]
|
Biomni/biomni/tool/tool_description/physiology.py
ADDED
|
@@ -0,0 +1,363 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
description = [
|
| 2 |
+
{
|
| 3 |
+
"description": "Generate a 3D model of facial anatomy from MRI scans of the head and neck.",
|
| 4 |
+
"name": "reconstruct_3d_face_from_mri",
|
| 5 |
+
"optional_parameters": [
|
| 6 |
+
{
|
| 7 |
+
"default": "./output",
|
| 8 |
+
"description": "Directory where output files will be saved",
|
| 9 |
+
"name": "output_dir",
|
| 10 |
+
"type": "str",
|
| 11 |
+
},
|
| 12 |
+
{
|
| 13 |
+
"default": "subject",
|
| 14 |
+
"description": "Identifier for the subject, used in output filenames",
|
| 15 |
+
"name": "subject_id",
|
| 16 |
+
"type": "str",
|
| 17 |
+
},
|
| 18 |
+
{
|
| 19 |
+
"default": 300,
|
| 20 |
+
"description": "Threshold value for initial segmentation of facial tissues",
|
| 21 |
+
"name": "threshold_value",
|
| 22 |
+
"type": "int",
|
| 23 |
+
},
|
| 24 |
+
],
|
| 25 |
+
"required_parameters": [
|
| 26 |
+
{
|
| 27 |
+
"default": None,
|
| 28 |
+
"description": "Path to the MRI scan file (NIfTI format: .nii or .nii.gz)",
|
| 29 |
+
"name": "mri_file_path",
|
| 30 |
+
"type": "str",
|
| 31 |
+
}
|
| 32 |
+
],
|
| 33 |
+
},
|
| 34 |
+
{
|
| 35 |
+
"description": "Extracts P1 amplitude and latency from Auditory Brainstem Response (ABR) waveform data.",
|
| 36 |
+
"name": "analyze_abr_waveform_p1_metrics",
|
| 37 |
+
"optional_parameters": [],
|
| 38 |
+
"required_parameters": [
|
| 39 |
+
{
|
| 40 |
+
"default": None,
|
| 41 |
+
"description": "Time points of the ABR recording in milliseconds",
|
| 42 |
+
"name": "time_ms",
|
| 43 |
+
"type": "array-like",
|
| 44 |
+
},
|
| 45 |
+
{
|
| 46 |
+
"default": None,
|
| 47 |
+
"description": "Amplitude values of the ABR recording in microvolts",
|
| 48 |
+
"name": "amplitude_uv",
|
| 49 |
+
"type": "array-like",
|
| 50 |
+
},
|
| 51 |
+
],
|
| 52 |
+
},
|
| 53 |
+
{
|
| 54 |
+
"description": "Analyze ciliary beat frequency from high-speed video microscopy data using FFT analysis.",
|
| 55 |
+
"name": "analyze_ciliary_beat_frequency",
|
| 56 |
+
"optional_parameters": [
|
| 57 |
+
{
|
| 58 |
+
"default": 5,
|
| 59 |
+
"description": "Number of regions of interest to analyze",
|
| 60 |
+
"name": "roi_count",
|
| 61 |
+
"type": "int",
|
| 62 |
+
},
|
| 63 |
+
{
|
| 64 |
+
"default": 0,
|
| 65 |
+
"description": "Minimum frequency to consider in Hz",
|
| 66 |
+
"name": "min_freq",
|
| 67 |
+
"type": "float",
|
| 68 |
+
},
|
| 69 |
+
{
|
| 70 |
+
"default": 30,
|
| 71 |
+
"description": "Maximum frequency to consider in Hz",
|
| 72 |
+
"name": "max_freq",
|
| 73 |
+
"type": "float",
|
| 74 |
+
},
|
| 75 |
+
{
|
| 76 |
+
"default": "./",
|
| 77 |
+
"description": "Directory to save output files",
|
| 78 |
+
"name": "output_dir",
|
| 79 |
+
"type": "str",
|
| 80 |
+
},
|
| 81 |
+
],
|
| 82 |
+
"required_parameters": [
|
| 83 |
+
{
|
| 84 |
+
"default": None,
|
| 85 |
+
"description": "Path to the high-speed video microscopy file of ciliary beating",
|
| 86 |
+
"name": "video_path",
|
| 87 |
+
"type": "str",
|
| 88 |
+
}
|
| 89 |
+
],
|
| 90 |
+
},
|
| 91 |
+
{
|
| 92 |
+
"description": "Analyze colocalization between two fluorescently labeled proteins in microscopy images.",
|
| 93 |
+
"name": "analyze_protein_colocalization",
|
| 94 |
+
"optional_parameters": [
|
| 95 |
+
{
|
| 96 |
+
"default": "./output",
|
| 97 |
+
"description": "Directory to save output files",
|
| 98 |
+
"name": "output_dir",
|
| 99 |
+
"type": "str",
|
| 100 |
+
},
|
| 101 |
+
{
|
| 102 |
+
"default": "otsu",
|
| 103 |
+
"description": "Method for thresholding images ('otsu', 'li', or 'yen')",
|
| 104 |
+
"name": "threshold_method",
|
| 105 |
+
"type": "str",
|
| 106 |
+
},
|
| 107 |
+
],
|
| 108 |
+
"required_parameters": [
|
| 109 |
+
{
|
| 110 |
+
"default": None,
|
| 111 |
+
"description": "Path to the first channel image file (fluorescent protein 1)",
|
| 112 |
+
"name": "channel1_path",
|
| 113 |
+
"type": "str",
|
| 114 |
+
},
|
| 115 |
+
{
|
| 116 |
+
"default": None,
|
| 117 |
+
"description": "Path to the second channel image file (fluorescent protein 2)",
|
| 118 |
+
"name": "channel2_path",
|
| 119 |
+
"type": "str",
|
| 120 |
+
},
|
| 121 |
+
],
|
| 122 |
+
},
|
| 123 |
+
{
|
| 124 |
+
"description": "Performs cosinor analysis on physiological time series data to characterize circadian rhythms.",
|
| 125 |
+
"name": "perform_cosinor_analysis",
|
| 126 |
+
"optional_parameters": [
|
| 127 |
+
{
|
| 128 |
+
"default": 24.0,
|
| 129 |
+
"description": "Period of the rhythm in hours, default is 24 hours for circadian rhythms",
|
| 130 |
+
"name": "period",
|
| 131 |
+
"type": "float",
|
| 132 |
+
}
|
| 133 |
+
],
|
| 134 |
+
"required_parameters": [
|
| 135 |
+
{
|
| 136 |
+
"default": None,
|
| 137 |
+
"description": "Time points of the measurements in hours",
|
| 138 |
+
"name": "time_data",
|
| 139 |
+
"type": "array-like",
|
| 140 |
+
},
|
| 141 |
+
{
|
| 142 |
+
"default": None,
|
| 143 |
+
"description": "Physiological measurements corresponding to each time point",
|
| 144 |
+
"name": "physiological_data",
|
| 145 |
+
"type": "array-like",
|
| 146 |
+
},
|
| 147 |
+
],
|
| 148 |
+
},
|
| 149 |
+
{
|
| 150 |
+
"description": "Calculate Apparent Diffusion Coefficient (ADC) map from "
|
| 151 |
+
"diffusion-weighted MRI data using monoexponential diffusion "
|
| 152 |
+
"model.",
|
| 153 |
+
"name": "calculate_brain_adc_map",
|
| 154 |
+
"optional_parameters": [
|
| 155 |
+
{
|
| 156 |
+
"default": "adc_map.nii.gz",
|
| 157 |
+
"description": "Path where the output ADC map will be saved",
|
| 158 |
+
"name": "output_path",
|
| 159 |
+
"type": "str",
|
| 160 |
+
},
|
| 161 |
+
{
|
| 162 |
+
"default": None,
|
| 163 |
+
"description": "Path to a binary mask file to limit ADC calculation to brain regions",
|
| 164 |
+
"name": "mask_file_path",
|
| 165 |
+
"type": "str",
|
| 166 |
+
},
|
| 167 |
+
],
|
| 168 |
+
"required_parameters": [
|
| 169 |
+
{
|
| 170 |
+
"default": None,
|
| 171 |
+
"description": "Path to the 4D NIfTI file containing diffusion-weighted MRI data",
|
| 172 |
+
"name": "dwi_file_path",
|
| 173 |
+
"type": "str",
|
| 174 |
+
},
|
| 175 |
+
{
|
| 176 |
+
"default": None,
|
| 177 |
+
"description": "List of b-values corresponding to each volume in the 4D DWI data",
|
| 178 |
+
"name": "b_values",
|
| 179 |
+
"type": "List[float]",
|
| 180 |
+
},
|
| 181 |
+
],
|
| 182 |
+
},
|
| 183 |
+
{
|
| 184 |
+
"description": "Analyze calcium dynamics in endo-lysosomal compartments using ELGA/ELGA1 probe data.",
|
| 185 |
+
"name": "analyze_endolysosomal_calcium_dynamics",
|
| 186 |
+
"optional_parameters": [
|
| 187 |
+
{
|
| 188 |
+
"default": None,
|
| 189 |
+
"description": "Time point (in seconds) when treatment/stimulus was applied",
|
| 190 |
+
"name": "treatment_time",
|
| 191 |
+
"type": "float",
|
| 192 |
+
},
|
| 193 |
+
{
|
| 194 |
+
"default": "",
|
| 195 |
+
"description": "Type of cells used in the experiment",
|
| 196 |
+
"name": "cell_type",
|
| 197 |
+
"type": "str",
|
| 198 |
+
},
|
| 199 |
+
{
|
| 200 |
+
"default": "",
|
| 201 |
+
"description": "Name of the treatment or stimulus applied",
|
| 202 |
+
"name": "treatment_name",
|
| 203 |
+
"type": "str",
|
| 204 |
+
},
|
| 205 |
+
{
|
| 206 |
+
"default": "calcium_analysis_results.txt",
|
| 207 |
+
"description": "Name of the file to save detailed analysis results",
|
| 208 |
+
"name": "output_file",
|
| 209 |
+
"type": "str",
|
| 210 |
+
},
|
| 211 |
+
],
|
| 212 |
+
"required_parameters": [
|
| 213 |
+
{
|
| 214 |
+
"default": None,
|
| 215 |
+
"description": "Time points of the measurements in seconds",
|
| 216 |
+
"name": "time_points",
|
| 217 |
+
"type": "numpy.ndarray or list",
|
| 218 |
+
},
|
| 219 |
+
{
|
| 220 |
+
"default": None,
|
| 221 |
+
"description": "Luminescence intensity values from ELGA/ELGA1 probes corresponding to Ca2+ levels",
|
| 222 |
+
"name": "luminescence_values",
|
| 223 |
+
"type": "numpy.ndarray or list",
|
| 224 |
+
},
|
| 225 |
+
],
|
| 226 |
+
},
|
| 227 |
+
{
|
| 228 |
+
"description": "Analyzes fatty acid composition in tissue samples using gas chromatography data.",
|
| 229 |
+
"name": "analyze_fatty_acid_composition_by_gc",
|
| 230 |
+
"optional_parameters": [
|
| 231 |
+
{
|
| 232 |
+
"default": "./results",
|
| 233 |
+
"description": "Directory where result files will be saved",
|
| 234 |
+
"name": "output_directory",
|
| 235 |
+
"type": "str",
|
| 236 |
+
}
|
| 237 |
+
],
|
| 238 |
+
"required_parameters": [
|
| 239 |
+
{
|
| 240 |
+
"default": None,
|
| 241 |
+
"description": "Path to the CSV file containing gas "
|
| 242 |
+
"chromatography data with columns "
|
| 243 |
+
"'retention_time' and 'peak_area'",
|
| 244 |
+
"name": "gc_data_file",
|
| 245 |
+
"type": "str",
|
| 246 |
+
},
|
| 247 |
+
{
|
| 248 |
+
"default": None,
|
| 249 |
+
"description": "Type of tissue sample (e.g., liver, kidney, heart, muscle, adipose)",
|
| 250 |
+
"name": "tissue_type",
|
| 251 |
+
"type": "str",
|
| 252 |
+
},
|
| 253 |
+
{
|
| 254 |
+
"default": None,
|
| 255 |
+
"description": "Identifier for the sample being analyzed",
|
| 256 |
+
"name": "sample_id",
|
| 257 |
+
"type": "str",
|
| 258 |
+
},
|
| 259 |
+
],
|
| 260 |
+
},
|
| 261 |
+
{
|
| 262 |
+
"description": "Analyzes raw blood pressure data to calculate key hemodynamic parameters.",
|
| 263 |
+
"name": "analyze_hemodynamic_data",
|
| 264 |
+
"optional_parameters": [
|
| 265 |
+
{
|
| 266 |
+
"default": "hemodynamic_results.csv",
|
| 267 |
+
"description": "Filename to save the calculated parameters",
|
| 268 |
+
"name": "output_file",
|
| 269 |
+
"type": "str",
|
| 270 |
+
}
|
| 271 |
+
],
|
| 272 |
+
"required_parameters": [
|
| 273 |
+
{
|
| 274 |
+
"default": None,
|
| 275 |
+
"description": "Raw blood pressure measurements in mmHg",
|
| 276 |
+
"name": "pressure_data",
|
| 277 |
+
"type": "numpy.ndarray",
|
| 278 |
+
},
|
| 279 |
+
{
|
| 280 |
+
"default": None,
|
| 281 |
+
"description": "Data acquisition rate in Hz (samples per second)",
|
| 282 |
+
"name": "sampling_rate",
|
| 283 |
+
"type": "float",
|
| 284 |
+
},
|
| 285 |
+
],
|
| 286 |
+
},
|
| 287 |
+
{
|
| 288 |
+
"description": "Simulates the transport and binding of thyroid hormones "
|
| 289 |
+
"across different tissue compartments using an ODE-based "
|
| 290 |
+
"pharmacokinetic model.",
|
| 291 |
+
"name": "simulate_thyroid_hormone_pharmacokinetics",
|
| 292 |
+
"optional_parameters": [
|
| 293 |
+
{
|
| 294 |
+
"default": "(0, 24)",
|
| 295 |
+
"description": "Start and end time for simulation in hours",
|
| 296 |
+
"name": "time_span",
|
| 297 |
+
"type": "tuple",
|
| 298 |
+
},
|
| 299 |
+
{
|
| 300 |
+
"default": 100,
|
| 301 |
+
"description": "Number of time points to output",
|
| 302 |
+
"name": "time_points",
|
| 303 |
+
"type": "int",
|
| 304 |
+
},
|
| 305 |
+
],
|
| 306 |
+
"required_parameters": [
|
| 307 |
+
{
|
| 308 |
+
"default": None,
|
| 309 |
+
"description": "Dictionary containing model "
|
| 310 |
+
"parameters including "
|
| 311 |
+
"transport_rates, binding_constants, "
|
| 312 |
+
"metabolism_rates, and volumes",
|
| 313 |
+
"name": "parameters",
|
| 314 |
+
"type": "dict",
|
| 315 |
+
},
|
| 316 |
+
{
|
| 317 |
+
"default": None,
|
| 318 |
+
"description": "Dictionary of initial concentrations for all molecular species in each compartment",
|
| 319 |
+
"name": "initial_conditions",
|
| 320 |
+
"type": "dict",
|
| 321 |
+
},
|
| 322 |
+
],
|
| 323 |
+
},
|
| 324 |
+
{
|
| 325 |
+
"description": "Analyzes an image to detect and quantify amyloid-beta "
|
| 326 |
+
"plaques, returning a detailed analysis log.",
|
| 327 |
+
"name": "quantify_amyloid_beta_plaques",
|
| 328 |
+
"optional_parameters": [
|
| 329 |
+
{
|
| 330 |
+
"default": "./results",
|
| 331 |
+
"description": "Directory where results will be saved",
|
| 332 |
+
"name": "output_dir",
|
| 333 |
+
"type": "str",
|
| 334 |
+
},
|
| 335 |
+
{
|
| 336 |
+
"default": "otsu",
|
| 337 |
+
"description": "Method for image thresholding (otsu, adaptive, or manual)",
|
| 338 |
+
"name": "threshold_method",
|
| 339 |
+
"type": "str",
|
| 340 |
+
},
|
| 341 |
+
{
|
| 342 |
+
"default": 50,
|
| 343 |
+
"description": "Minimum size in pixels² for a region to be considered a plaque",
|
| 344 |
+
"name": "min_plaque_size",
|
| 345 |
+
"type": "int",
|
| 346 |
+
},
|
| 347 |
+
{
|
| 348 |
+
"default": 127,
|
| 349 |
+
"description": "Threshold value to use when threshold_method is manual",
|
| 350 |
+
"name": "manual_threshold",
|
| 351 |
+
"type": "int",
|
| 352 |
+
},
|
| 353 |
+
],
|
| 354 |
+
"required_parameters": [
|
| 355 |
+
{
|
| 356 |
+
"default": None,
|
| 357 |
+
"description": "Path to the image file to be analyzed for amyloid-beta plaques",
|
| 358 |
+
"name": "image_path",
|
| 359 |
+
"type": "str",
|
| 360 |
+
}
|
| 361 |
+
],
|
| 362 |
+
},
|
| 363 |
+
]
|
Biomni/biomni/tool/tool_description/protocols.py
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
description = [
|
| 2 |
+
{
|
| 3 |
+
"description": "Search protocols.io for public protocols matching a keyword.",
|
| 4 |
+
"name": "search_protocols",
|
| 5 |
+
"optional_parameters": [],
|
| 6 |
+
"required_parameters": [
|
| 7 |
+
{
|
| 8 |
+
"default": None,
|
| 9 |
+
"description": "Most important keyword or phrase to search (title, description, authors)",
|
| 10 |
+
"name": "query",
|
| 11 |
+
"type": "str",
|
| 12 |
+
}
|
| 13 |
+
],
|
| 14 |
+
},
|
| 15 |
+
{
|
| 16 |
+
"description": "Retrieve detailed metadata for a specific protocols.io protocol by ID.",
|
| 17 |
+
"name": "get_protocol_details",
|
| 18 |
+
"optional_parameters": [
|
| 19 |
+
{
|
| 20 |
+
"default": 30,
|
| 21 |
+
"description": "Request timeout in seconds",
|
| 22 |
+
"name": "timeout",
|
| 23 |
+
"type": "int",
|
| 24 |
+
}
|
| 25 |
+
],
|
| 26 |
+
"required_parameters": [
|
| 27 |
+
{
|
| 28 |
+
"default": None,
|
| 29 |
+
"description": "Numeric protocol ID from protocols.io",
|
| 30 |
+
"name": "protocol_id",
|
| 31 |
+
"type": "int",
|
| 32 |
+
}
|
| 33 |
+
],
|
| 34 |
+
},
|
| 35 |
+
{
|
| 36 |
+
"description": "List available protocol files in the local biomni/tool/protocols/ directory. Includes protocols from Addgene and Thermo Fisher Scientific.",
|
| 37 |
+
"name": "list_local_protocols",
|
| 38 |
+
"optional_parameters": [
|
| 39 |
+
{
|
| 40 |
+
"default": None,
|
| 41 |
+
"description": "Filter by source directory (e.g., 'addgene' or 'thermofisher'). If None, lists all protocols.",
|
| 42 |
+
"name": "source",
|
| 43 |
+
"type": "str",
|
| 44 |
+
}
|
| 45 |
+
],
|
| 46 |
+
"required_parameters": [],
|
| 47 |
+
},
|
| 48 |
+
{
|
| 49 |
+
"description": "Read the contents of a local protocol file from biomni/tool/protocols/. Use list_local_protocols() first to find available protocol filenames.",
|
| 50 |
+
"name": "read_local_protocol",
|
| 51 |
+
"optional_parameters": [
|
| 52 |
+
{
|
| 53 |
+
"default": None,
|
| 54 |
+
"description": "Source directory (e.g., 'addgene' or 'thermofisher'). If None, searches all sources.",
|
| 55 |
+
"name": "source",
|
| 56 |
+
"type": "str",
|
| 57 |
+
}
|
| 58 |
+
],
|
| 59 |
+
"required_parameters": [
|
| 60 |
+
{
|
| 61 |
+
"default": None,
|
| 62 |
+
"description": "Name of the protocol file (e.g., 'Addgene_ Protocol - How to Run an Agarose Gel.txt')",
|
| 63 |
+
"name": "filename",
|
| 64 |
+
"type": "str",
|
| 65 |
+
}
|
| 66 |
+
],
|
| 67 |
+
},
|
| 68 |
+
]
|
Biomni/biomni/tool/tool_description/synthetic_biology.py
ADDED
|
@@ -0,0 +1,273 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
description = [
|
| 2 |
+
{
|
| 3 |
+
"description": "Engineer a bacterial genome by integrating therapeutic genetic parts for therapeutic delivery.",
|
| 4 |
+
"name": "engineer_bacterial_genome_for_therapeutic_delivery",
|
| 5 |
+
"optional_parameters": [],
|
| 6 |
+
"required_parameters": [
|
| 7 |
+
{
|
| 8 |
+
"default": None,
|
| 9 |
+
"description": "Path to the file containing the bacterial genome sequence in FASTA format",
|
| 10 |
+
"name": "bacterial_genome_file",
|
| 11 |
+
"type": "str",
|
| 12 |
+
},
|
| 13 |
+
{
|
| 14 |
+
"default": None,
|
| 15 |
+
"description": "Dictionary containing genetic parts "
|
| 16 |
+
"to be integrated (promoters, genes, "
|
| 17 |
+
"terminators, cargo)",
|
| 18 |
+
"name": "genetic_parts",
|
| 19 |
+
"type": "dict",
|
| 20 |
+
},
|
| 21 |
+
],
|
| 22 |
+
},
|
| 23 |
+
{
|
| 24 |
+
"description": "Analyze bacterial growth data and extract growth parameters from OD600 measurements.",
|
| 25 |
+
"name": "analyze_bacterial_growth_rate",
|
| 26 |
+
"optional_parameters": [
|
| 27 |
+
{
|
| 28 |
+
"default": "Unknown strain",
|
| 29 |
+
"description": "Name of the bacterial strain being analyzed",
|
| 30 |
+
"name": "strain_name",
|
| 31 |
+
"type": "str",
|
| 32 |
+
},
|
| 33 |
+
{
|
| 34 |
+
"default": "./",
|
| 35 |
+
"description": "Directory where to save the output files",
|
| 36 |
+
"name": "output_dir",
|
| 37 |
+
"type": "str",
|
| 38 |
+
},
|
| 39 |
+
],
|
| 40 |
+
"required_parameters": [
|
| 41 |
+
{
|
| 42 |
+
"default": None,
|
| 43 |
+
"description": "Time points at which OD600 measurements were taken (in hours)",
|
| 44 |
+
"name": "time_points",
|
| 45 |
+
"type": "List or numpy.ndarray",
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"default": None,
|
| 49 |
+
"description": "Optical density (OD600) measurements corresponding to each time point",
|
| 50 |
+
"name": "od_measurements",
|
| 51 |
+
"type": "List or numpy.ndarray",
|
| 52 |
+
},
|
| 53 |
+
],
|
| 54 |
+
},
|
| 55 |
+
{
|
| 56 |
+
"description": "Analyze sequencing data to extract, quantify and determine lineage relationships of barcodes.",
|
| 57 |
+
"name": "analyze_barcode_sequencing_data",
|
| 58 |
+
"optional_parameters": [
|
| 59 |
+
{
|
| 60 |
+
"default": None,
|
| 61 |
+
"description": "Regular expression pattern to identify barcodes. If None, will use flanking sequences",
|
| 62 |
+
"name": "barcode_pattern",
|
| 63 |
+
"type": "str",
|
| 64 |
+
},
|
| 65 |
+
{
|
| 66 |
+
"default": None,
|
| 67 |
+
"description": "5' flanking sequence of the barcode region",
|
| 68 |
+
"name": "flanking_seq_5prime",
|
| 69 |
+
"type": "str",
|
| 70 |
+
},
|
| 71 |
+
{
|
| 72 |
+
"default": None,
|
| 73 |
+
"description": "3' flanking sequence of the barcode region",
|
| 74 |
+
"name": "flanking_seq_3prime",
|
| 75 |
+
"type": "str",
|
| 76 |
+
},
|
| 77 |
+
{
|
| 78 |
+
"default": 5,
|
| 79 |
+
"description": "Minimum count threshold for considering a barcode",
|
| 80 |
+
"name": "min_count",
|
| 81 |
+
"type": "int",
|
| 82 |
+
},
|
| 83 |
+
{
|
| 84 |
+
"default": "./results",
|
| 85 |
+
"description": "Directory to save output files",
|
| 86 |
+
"name": "output_dir",
|
| 87 |
+
"type": "str",
|
| 88 |
+
},
|
| 89 |
+
],
|
| 90 |
+
"required_parameters": [
|
| 91 |
+
{
|
| 92 |
+
"default": None,
|
| 93 |
+
"description": "Path to the input sequencing file in FASTQ or FASTA format",
|
| 94 |
+
"name": "input_file",
|
| 95 |
+
"type": "str",
|
| 96 |
+
}
|
| 97 |
+
],
|
| 98 |
+
},
|
| 99 |
+
{
|
| 100 |
+
"description": "Performs bifurcation analysis on a dynamical system and generates a bifurcation diagram.",
|
| 101 |
+
"name": "analyze_bifurcation_diagram",
|
| 102 |
+
"optional_parameters": [
|
| 103 |
+
{
|
| 104 |
+
"default": "Dynamical System",
|
| 105 |
+
"description": "Name of the dynamical system being analyzed, used for plot titles.",
|
| 106 |
+
"name": "system_name",
|
| 107 |
+
"type": "str",
|
| 108 |
+
},
|
| 109 |
+
{
|
| 110 |
+
"default": "./",
|
| 111 |
+
"description": "Directory to save the output files.",
|
| 112 |
+
"name": "output_dir",
|
| 113 |
+
"type": "str",
|
| 114 |
+
},
|
| 115 |
+
],
|
| 116 |
+
"required_parameters": [
|
| 117 |
+
{
|
| 118 |
+
"default": None,
|
| 119 |
+
"description": "A 2D array where each row "
|
| 120 |
+
"represents a time series for a "
|
| 121 |
+
"specific parameter value. Shape "
|
| 122 |
+
"should be (n_parameter_values, "
|
| 123 |
+
"n_time_points).",
|
| 124 |
+
"name": "time_series_data",
|
| 125 |
+
"type": "numpy.ndarray",
|
| 126 |
+
},
|
| 127 |
+
{
|
| 128 |
+
"default": None,
|
| 129 |
+
"description": "1D array of parameter values "
|
| 130 |
+
"corresponding to each time series. "
|
| 131 |
+
"Shape should be "
|
| 132 |
+
"(n_parameter_values,).",
|
| 133 |
+
"name": "parameter_values",
|
| 134 |
+
"type": "numpy.ndarray",
|
| 135 |
+
},
|
| 136 |
+
],
|
| 137 |
+
},
|
| 138 |
+
{
|
| 139 |
+
"description": "Generate a mathematical model of a biochemical network in SBML format.",
|
| 140 |
+
"name": "create_biochemical_network_sbml_model",
|
| 141 |
+
"optional_parameters": [
|
| 142 |
+
{
|
| 143 |
+
"default": "biochemical_model.xml",
|
| 144 |
+
"description": "File path to save the SBML model",
|
| 145 |
+
"name": "output_file",
|
| 146 |
+
"type": "str",
|
| 147 |
+
}
|
| 148 |
+
],
|
| 149 |
+
"required_parameters": [
|
| 150 |
+
{
|
| 151 |
+
"default": None,
|
| 152 |
+
"description": "List of dictionaries representing "
|
| 153 |
+
"reactions with id, name, reactants, "
|
| 154 |
+
"products, and reversible properties",
|
| 155 |
+
"name": "reaction_network",
|
| 156 |
+
"type": "List[dict]",
|
| 157 |
+
},
|
| 158 |
+
{
|
| 159 |
+
"default": None,
|
| 160 |
+
"description": "Dictionary mapping reaction IDs to kinetic law parameters with law_type and parameters",
|
| 161 |
+
"name": "kinetic_parameters",
|
| 162 |
+
"type": "dict",
|
| 163 |
+
},
|
| 164 |
+
],
|
| 165 |
+
},
|
| 166 |
+
{
|
| 167 |
+
"description": "Analyzes and optimizes a DNA/RNA sequence for improved "
|
| 168 |
+
"expression in a heterologous host organism.",
|
| 169 |
+
"name": "optimize_codons_for_heterologous_expression",
|
| 170 |
+
"optional_parameters": [],
|
| 171 |
+
"required_parameters": [
|
| 172 |
+
{
|
| 173 |
+
"default": None,
|
| 174 |
+
"description": "The DNA or RNA sequence of the "
|
| 175 |
+
"target gene to be optimized. Should "
|
| 176 |
+
"contain complete codons (length "
|
| 177 |
+
"divisible by 3).",
|
| 178 |
+
"name": "target_sequence",
|
| 179 |
+
"type": "str",
|
| 180 |
+
},
|
| 181 |
+
{
|
| 182 |
+
"default": None,
|
| 183 |
+
"description": "Dictionary mapping codons to their "
|
| 184 |
+
"usage frequency in the host "
|
| 185 |
+
"organism. Format: {'AUG': 0.8, "
|
| 186 |
+
"'GCC': 0.6, ...} or {'ATG': 0.8, "
|
| 187 |
+
"'GCC': 0.6, ...}",
|
| 188 |
+
"name": "host_codon_usage",
|
| 189 |
+
"type": "dict",
|
| 190 |
+
},
|
| 191 |
+
],
|
| 192 |
+
},
|
| 193 |
+
{
|
| 194 |
+
"description": "Simulate gene regulatory circuit dynamics with growth feedback.",
|
| 195 |
+
"name": "simulate_gene_circuit_with_growth_feedback",
|
| 196 |
+
"optional_parameters": [
|
| 197 |
+
{
|
| 198 |
+
"default": 100,
|
| 199 |
+
"description": "Total simulation time",
|
| 200 |
+
"name": "simulation_time",
|
| 201 |
+
"type": "float",
|
| 202 |
+
},
|
| 203 |
+
{
|
| 204 |
+
"default": 1000,
|
| 205 |
+
"description": "Number of time points to sample",
|
| 206 |
+
"name": "time_points",
|
| 207 |
+
"type": "int",
|
| 208 |
+
},
|
| 209 |
+
],
|
| 210 |
+
"required_parameters": [
|
| 211 |
+
{
|
| 212 |
+
"default": None,
|
| 213 |
+
"description": "Adjacency matrix representing the "
|
| 214 |
+
"gene circuit topology. Positive "
|
| 215 |
+
"values indicate activation, "
|
| 216 |
+
"negative values indicate "
|
| 217 |
+
"repression. Shape should be "
|
| 218 |
+
"(n_genes, n_genes) where n_genes is "
|
| 219 |
+
"the number of genes in the circuit.",
|
| 220 |
+
"name": "circuit_topology",
|
| 221 |
+
"type": "numpy.ndarray",
|
| 222 |
+
},
|
| 223 |
+
{
|
| 224 |
+
"default": None,
|
| 225 |
+
"description": "Dictionary containing kinetic "
|
| 226 |
+
"parameters: 'basal_rates', "
|
| 227 |
+
"'degradation_rates', "
|
| 228 |
+
"'hill_coefficients', and "
|
| 229 |
+
"'threshold_constants' for the gene "
|
| 230 |
+
"circuit.",
|
| 231 |
+
"name": "kinetic_params",
|
| 232 |
+
"type": "dict",
|
| 233 |
+
},
|
| 234 |
+
{
|
| 235 |
+
"default": None,
|
| 236 |
+
"description": "Dictionary containing "
|
| 237 |
+
"growth-related parameters: "
|
| 238 |
+
"'max_growth_rate', "
|
| 239 |
+
"'growth_inhibition', and "
|
| 240 |
+
"'gene_growth_weights'.",
|
| 241 |
+
"name": "growth_params",
|
| 242 |
+
"type": "dict",
|
| 243 |
+
},
|
| 244 |
+
],
|
| 245 |
+
},
|
| 246 |
+
{
|
| 247 |
+
"description": "Identifies functional domains within a Fatty Acid Synthase "
|
| 248 |
+
"(FAS) sequence and predicts their roles.",
|
| 249 |
+
"name": "identify_fas_functional_domains",
|
| 250 |
+
"optional_parameters": [
|
| 251 |
+
{
|
| 252 |
+
"default": "protein",
|
| 253 |
+
"description": 'Type of sequence provided - "protein" or "nucleotide"',
|
| 254 |
+
"name": "sequence_type",
|
| 255 |
+
"type": "str",
|
| 256 |
+
},
|
| 257 |
+
{
|
| 258 |
+
"default": "fas_domains_report.txt",
|
| 259 |
+
"description": "Name of the output file to save the detailed domain report",
|
| 260 |
+
"name": "output_file",
|
| 261 |
+
"type": "str",
|
| 262 |
+
},
|
| 263 |
+
],
|
| 264 |
+
"required_parameters": [
|
| 265 |
+
{
|
| 266 |
+
"default": None,
|
| 267 |
+
"description": "The nucleotide or protein sequence of a FAS gene",
|
| 268 |
+
"name": "sequence",
|
| 269 |
+
"type": "str",
|
| 270 |
+
}
|
| 271 |
+
],
|
| 272 |
+
},
|
| 273 |
+
]
|
Biomni/mcp_generated/mcp_bioconductor-concordexr/Dockerfile
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
FROM python:3.10-slim
|
| 3 |
+
|
| 4 |
+
# Install system dependencies
|
| 5 |
+
RUN apt-get update && apt-get install -y default-jre wget curl && apt-get clean && rm -rf /var/lib/apt/lists/*
|
| 6 |
+
|
| 7 |
+
# Install Miniconda
|
| 8 |
+
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /tmp/miniconda.sh && bash /tmp/miniconda.sh -b -p /opt/conda && rm /tmp/miniconda.sh
|
| 9 |
+
|
| 10 |
+
# Add conda to PATH
|
| 11 |
+
ENV PATH="/opt/conda/bin:$PATH"
|
| 12 |
+
|
| 13 |
+
# Install bioconductor-concordexr via conda (e.g., from bioconda)
|
| 14 |
+
RUN conda install -c bioconda bioconductor-concordexr -y && conda clean -a
|
| 15 |
+
|
| 16 |
+
# Install Python dependencies
|
| 17 |
+
RUN pip install uv
|
| 18 |
+
RUN uv pip install --system fastmcp
|
| 19 |
+
|
| 20 |
+
# Create app directory
|
| 21 |
+
WORKDIR /app
|
| 22 |
+
|
| 23 |
+
# Copy your MCP server
|
| 24 |
+
COPY app/bioconductor-concordexr_server.py /app/
|
| 25 |
+
|
| 26 |
+
# Create workspace and output directories
|
| 27 |
+
RUN mkdir -p /app/workspace /app/output
|
| 28 |
+
|
| 29 |
+
# Make sure the server script is executable
|
| 30 |
+
RUN chmod +x /app/bioconductor-concordexr_server.py
|
| 31 |
+
|
| 32 |
+
# Expose port for MCP over HTTP (optional)
|
| 33 |
+
EXPOSE 8000
|
| 34 |
+
|
| 35 |
+
# Health check
|
| 36 |
+
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 CMD python -c "import sys; sys.exit(0)"
|
| 37 |
+
|
| 38 |
+
# Default command runs the MCP server via stdio
|
| 39 |
+
CMD ["python", "/app/bioconductor-concordexr_server.py"]
|
| 40 |
+
|
Biomni/mcp_generated/mcp_bioconductor-concordexr/app/bioconductor-concordexr_server.py
ADDED
|
@@ -0,0 +1,221 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import subprocess
|
| 2 |
+
import tempfile
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
from typing import Optional, List
|
| 5 |
+
|
| 6 |
+
# Mock the decorator for standalone execution
|
| 7 |
+
class mcp:
|
| 8 |
+
@staticmethod
|
| 9 |
+
def tool(func):
|
| 10 |
+
return func
|
| 11 |
+
|
| 12 |
+
@mcp.tool
|
| 13 |
+
def compute_concordex(
|
| 14 |
+
data_file: Path,
|
| 15 |
+
ranks_file: Path,
|
| 16 |
+
indices_file: Path,
|
| 17 |
+
output_dir: Path,
|
| 18 |
+
data_type: str = "counts",
|
| 19 |
+
abundance_min: float = 1.0,
|
| 20 |
+
abundance_max: Optional[float] = None,
|
| 21 |
+
sample_min: float = 0.0,
|
| 22 |
+
sample_max: Optional[float] = None,
|
| 23 |
+
filter_perc: float = 0.0,
|
| 24 |
+
filter_count: int = 0,
|
| 25 |
+
plot: bool = True,
|
| 26 |
+
plot_format: str = "png",
|
| 27 |
+
plot_width: int = 10,
|
| 28 |
+
plot_height: int = 10,
|
| 29 |
+
export: bool = True,
|
| 30 |
+
export_rds: bool = True,
|
| 31 |
+
):
|
| 32 |
+
"""
|
| 33 |
+
Computes the Concordance Index (Concordex) using the concordexR package.
|
| 34 |
+
|
| 35 |
+
This tool wraps the `computeConcordex` function. It takes expression/count data,
|
| 36 |
+
pre-computed ranks, and sample indices to calculate concordex scores. It can
|
| 37 |
+
filter data, generate plots, and export results to files.
|
| 38 |
+
|
| 39 |
+
Args:
|
| 40 |
+
data_file: Path to the input data file (e.g., counts matrix). Assumed to be a tab-separated file with a header and row names in the first column.
|
| 41 |
+
ranks_file: Path to the ranks file. Assumed to be a tab-separated file with a header and row names in the first column.
|
| 42 |
+
indices_file: Path to the indices file. Assumed to be a single-column, tab-separated file without a header.
|
| 43 |
+
output_dir: Path to the directory where output files will be saved.
|
| 44 |
+
data_type: The type of data in `data_file`. Must be either 'counts' or 'ranks'.
|
| 45 |
+
abundance_min: The minimum abundance of a feature to be included in the analysis.
|
| 46 |
+
abundance_max: The maximum abundance of a feature. If None, no upper limit is applied.
|
| 47 |
+
sample_min: The minimum value of a sample to be included.
|
| 48 |
+
sample_max: The maximum value of a sample. If None, no upper limit is applied.
|
| 49 |
+
filter_perc: The percentage of samples a feature must be present in to be retained. Value must be between 0.0 and 1.0.
|
| 50 |
+
filter_count: The minimum number of counts a feature must have across all samples to be retained.
|
| 51 |
+
plot: If True, generate concordex plots.
|
| 52 |
+
plot_format: The format for the output plots (e.g., 'png', 'pdf', 'svg').
|
| 53 |
+
plot_width: The width of the output plots in inches.
|
| 54 |
+
plot_height: The height of the output plots in inches.
|
| 55 |
+
export: If True, export the concordex results to text files.
|
| 56 |
+
export_rds: If True, save the final concordex R object to an .rds file for later use (e.g., with plot_concordex).
|
| 57 |
+
"""
|
| 58 |
+
# Input validation
|
| 59 |
+
if not data_file.is_file():
|
| 60 |
+
raise FileNotFoundError(f"Input data file not found: {data_file}")
|
| 61 |
+
if not ranks_file.is_file():
|
| 62 |
+
raise FileNotFoundError(f"Ranks file not found: {ranks_file}")
|
| 63 |
+
if not indices_file.is_file():
|
| 64 |
+
raise FileNotFoundError(f"Indices file not found: {indices_file}")
|
| 65 |
+
|
| 66 |
+
if data_type not in ["counts", "ranks"]:
|
| 67 |
+
raise ValueError("data_type must be either 'counts' or 'ranks'.")
|
| 68 |
+
if not (0.0 <= filter_perc <= 1.0):
|
| 69 |
+
raise ValueError("filter_perc must be between 0.0 and 1.0.")
|
| 70 |
+
if filter_count < 0:
|
| 71 |
+
raise ValueError("filter_count must be a non-negative integer.")
|
| 72 |
+
if plot_format not in ["png", "pdf", "svg", "jpeg", "tiff"]:
|
| 73 |
+
raise ValueError(f"Unsupported plot format: {plot_format}")
|
| 74 |
+
|
| 75 |
+
output_dir.mkdir(parents=True, exist_ok=True)
|
| 76 |
+
|
| 77 |
+
# Build the R script
|
| 78 |
+
r_script_lines = [
|
| 79 |
+
"library(concordexR)",
|
| 80 |
+
f'data <- read.table("{data_file.resolve()}", header=TRUE, sep="\\t", row.names=1, check.names=FALSE)',
|
| 81 |
+
f'ranks <- read.table("{ranks_file.resolve()}", header=TRUE, sep="\\t", row.names=1, check.names=FALSE)',
|
| 82 |
+
f'indices_df <- read.table("{indices_file.resolve()}", header=FALSE, sep="\\t")',
|
| 83 |
+
"indices <- as.list(indices_df$V1)",
|
| 84 |
+
"concordex_result <- computeConcordex(",
|
| 85 |
+
" data = data,",
|
| 86 |
+
" ranks = ranks,",
|
| 87 |
+
" indices = indices,",
|
| 88 |
+
f' type = "{data_type}",',
|
| 89 |
+
f" abundance.min = {abundance_min},",
|
| 90 |
+
f" abundance.max = {abundance_max if abundance_max is not None else 'Inf'},",
|
| 91 |
+
f" sample.min = {sample_min},",
|
| 92 |
+
f" sample.max = {sample_max if sample_max is not None else 'Inf'},",
|
| 93 |
+
f" filter.perc = {filter_perc},",
|
| 94 |
+
f" filter.count = {filter_count},",
|
| 95 |
+
f' output.dir = "{output_dir.resolve()}",',
|
| 96 |
+
f" plot = {'TRUE' if plot else 'FALSE'},",
|
| 97 |
+
f' plot.format = "{plot_format}",',
|
| 98 |
+
f" plot.width = {plot_width},",
|
| 99 |
+
f" plot.height = {plot_height},",
|
| 100 |
+
f" export = {'TRUE' if export else 'FALSE'}",
|
| 101 |
+
")",
|
| 102 |
+
]
|
| 103 |
+
|
| 104 |
+
if export_rds:
|
| 105 |
+
rds_path = output_dir.resolve() / "concordex_object.rds"
|
| 106 |
+
r_script_lines.append(f'saveRDS(concordex_result, file = "{rds_path}")')
|
| 107 |
+
|
| 108 |
+
r_script = "\n".join(r_script_lines)
|
| 109 |
+
|
| 110 |
+
# Use a temporary file for the R script
|
| 111 |
+
with tempfile.NamedTemporaryFile(mode='w', suffix=".R", delete=False) as f:
|
| 112 |
+
f.write(r_script)
|
| 113 |
+
r_script_path = Path(f.name)
|
| 114 |
+
|
| 115 |
+
cmd = ["Rscript", str(r_script_path)]
|
| 116 |
+
command_executed = " ".join(cmd)
|
| 117 |
+
|
| 118 |
+
try:
|
| 119 |
+
result = subprocess.run(
|
| 120 |
+
cmd,
|
| 121 |
+
capture_output=True,
|
| 122 |
+
text=True,
|
| 123 |
+
check=True,
|
| 124 |
+
)
|
| 125 |
+
|
| 126 |
+
output_files = [str(p) for p in output_dir.glob("**/*") if p.is_file()]
|
| 127 |
+
|
| 128 |
+
return {
|
| 129 |
+
"command_executed": command_executed,
|
| 130 |
+
"stdout": result.stdout,
|
| 131 |
+
"stderr": result.stderr,
|
| 132 |
+
"output_files": output_files,
|
| 133 |
+
}
|
| 134 |
+
except subprocess.CalledProcessError as e:
|
| 135 |
+
raise RuntimeError(
|
| 136 |
+
f"R script execution failed with return code {e.returncode}.\n"
|
| 137 |
+
f"Command: {command_executed}\n"
|
| 138 |
+
f"Stdout: {e.stdout}\n"
|
| 139 |
+
f"Stderr: {e.stderr}"
|
| 140 |
+
) from e
|
| 141 |
+
finally:
|
| 142 |
+
r_script_path.unlink()
|
| 143 |
+
|
| 144 |
+
@mcp.tool
|
| 145 |
+
def plot_concordex(
|
| 146 |
+
concordex_object_file: Path,
|
| 147 |
+
output_dir: Path,
|
| 148 |
+
plot_format: str = "png",
|
| 149 |
+
plot_width: int = 10,
|
| 150 |
+
plot_height: int = 10,
|
| 151 |
+
):
|
| 152 |
+
"""
|
| 153 |
+
Generates plots from a pre-computed concordex object.
|
| 154 |
+
|
| 155 |
+
This tool wraps the `plotConcordex` function from the concordexR package.
|
| 156 |
+
It takes an .rds file containing a concordex object (generated by the
|
| 157 |
+
compute_concordex tool) and creates visualization plots.
|
| 158 |
+
|
| 159 |
+
Args:
|
| 160 |
+
concordex_object_file: Path to the .rds file containing the concordex object.
|
| 161 |
+
output_dir: Path to the directory where output plots will be saved.
|
| 162 |
+
plot_format: The format for the output plots (e.g., 'png', 'pdf', 'svg').
|
| 163 |
+
plot_width: The width of the output plots in inches.
|
| 164 |
+
plot_height: The height of the output plots in inches.
|
| 165 |
+
"""
|
| 166 |
+
# Input validation
|
| 167 |
+
if not concordex_object_file.is_file():
|
| 168 |
+
raise FileNotFoundError(f"Concordex object file not found: {concordex_object_file}")
|
| 169 |
+
if concordex_object_file.suffix != ".rds":
|
| 170 |
+
raise ValueError("concordex_object_file must be an .rds file.")
|
| 171 |
+
if plot_format not in ["png", "pdf", "svg", "jpeg", "tiff"]:
|
| 172 |
+
raise ValueError(f"Unsupported plot format: {plot_format}")
|
| 173 |
+
|
| 174 |
+
output_dir.mkdir(parents=True, exist_ok=True)
|
| 175 |
+
|
| 176 |
+
# Build the R script
|
| 177 |
+
r_script_lines = [
|
| 178 |
+
"library(concordexR)",
|
| 179 |
+
f'concordex_obj <- readRDS("{concordex_object_file.resolve()}")',
|
| 180 |
+
"plotConcordex(",
|
| 181 |
+
" concordex.object = concordex_obj,",
|
| 182 |
+
f' output.dir = "{output_dir.resolve()}",',
|
| 183 |
+
f' plot.format = "{plot_format}",',
|
| 184 |
+
f" plot.width = {plot_width},",
|
| 185 |
+
f" plot.height = {plot_height}",
|
| 186 |
+
")",
|
| 187 |
+
]
|
| 188 |
+
r_script = "\n".join(r_script_lines)
|
| 189 |
+
|
| 190 |
+
with tempfile.NamedTemporaryFile(mode='w', suffix=".R", delete=False) as f:
|
| 191 |
+
f.write(r_script)
|
| 192 |
+
r_script_path = Path(f.name)
|
| 193 |
+
|
| 194 |
+
cmd = ["Rscript", str(r_script_path)]
|
| 195 |
+
command_executed = " ".join(cmd)
|
| 196 |
+
|
| 197 |
+
try:
|
| 198 |
+
result = subprocess.run(
|
| 199 |
+
cmd,
|
| 200 |
+
capture_output=True,
|
| 201 |
+
text=True,
|
| 202 |
+
check=True,
|
| 203 |
+
)
|
| 204 |
+
|
| 205 |
+
output_files = [str(p) for p in output_dir.glob("**/*") if p.is_file()]
|
| 206 |
+
|
| 207 |
+
return {
|
| 208 |
+
"command_executed": command_executed,
|
| 209 |
+
"stdout": result.stdout,
|
| 210 |
+
"stderr": result.stderr,
|
| 211 |
+
"output_files": output_files,
|
| 212 |
+
}
|
| 213 |
+
except subprocess.CalledProcessError as e:
|
| 214 |
+
raise RuntimeError(
|
| 215 |
+
f"R script execution failed with return code {e.returncode}.\n"
|
| 216 |
+
f"Command: {command_executed}\n"
|
| 217 |
+
f"Stdout: {e.stdout}\n"
|
| 218 |
+
f"Stderr: {e.stderr}"
|
| 219 |
+
) from e
|
| 220 |
+
finally:
|
| 221 |
+
r_script_path.unlink()
|
Biomni/mcp_generated/mcp_bioconductor-concordexr/app/bioconductor-concordexr_shim_server.py
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
from __future__ import annotations
|
| 3 |
+
|
| 4 |
+
import ast
|
| 5 |
+
from pathlib import Path
|
| 6 |
+
|
| 7 |
+
from mcp.server.fastmcp import FastMCP
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
SOURCE_SERVER = Path('/225040511/project/BioScientist/agent_system/toolbase/mcp_batch_from_manual_txt/mcp_bioconductor-concordexr/app/bioconductor-concordexr_server.py')
|
| 11 |
+
LOCAL_SERVER = Path(__file__).with_name(SOURCE_SERVER.name)
|
| 12 |
+
SERVER_NAME = 'biosci_bioconductor_concordexr'
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
class _ShimMCP:
|
| 16 |
+
@staticmethod
|
| 17 |
+
def tool(*args, **kwargs):
|
| 18 |
+
if args and callable(args[0]) and len(args) == 1 and not kwargs:
|
| 19 |
+
return args[0]
|
| 20 |
+
def _decorator(fn):
|
| 21 |
+
return fn
|
| 22 |
+
return _decorator
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
def _resolve_source_server():
|
| 26 |
+
if LOCAL_SERVER.exists() and LOCAL_SERVER.name != Path(__file__).name:
|
| 27 |
+
return LOCAL_SERVER
|
| 28 |
+
return SOURCE_SERVER
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
def _load_functions():
|
| 32 |
+
source_server = _resolve_source_server()
|
| 33 |
+
code = source_server.read_text(encoding="utf-8")
|
| 34 |
+
tree = ast.parse(code, filename=str(source_server))
|
| 35 |
+
function_names = [n.name for n in tree.body if isinstance(n, ast.FunctionDef) and not n.name.startswith("_")]
|
| 36 |
+
namespace = {
|
| 37 |
+
"__name__": "__mcp_source__",
|
| 38 |
+
"mcp": _ShimMCP(),
|
| 39 |
+
}
|
| 40 |
+
exec(compile(code, str(source_server), "exec"), namespace, namespace)
|
| 41 |
+
loaded = []
|
| 42 |
+
for name in function_names:
|
| 43 |
+
fn = namespace.get(name)
|
| 44 |
+
if callable(fn):
|
| 45 |
+
loaded.append(fn)
|
| 46 |
+
return loaded
|
| 47 |
+
|
| 48 |
+
|
| 49 |
+
mcp = FastMCP(SERVER_NAME)
|
| 50 |
+
for _fn in _load_functions():
|
| 51 |
+
mcp.tool()(_fn)
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
if __name__ == "__main__":
|
| 55 |
+
mcp.run(transport="stdio")
|
Biomni/mcp_generated/mcp_bioconductor-concordexr/app/requirements.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
|
Biomni/mcp_generated/mcp_bioconductor-concordexr/docker-compose.yml
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version: '3.8'
|
| 2 |
+
|
| 3 |
+
services:
|
| 4 |
+
mcp-bioconductor-concordexr:
|
| 5 |
+
build: .
|
| 6 |
+
image: mcp-bioconductor-concordexr:latest
|
| 7 |
+
container_name: mcp-bioconductor-concordexr
|
| 8 |
+
ports:
|
| 9 |
+
- "8000:8000"
|
| 10 |
+
environment:
|
| 11 |
+
- MCP_SERVER_NAME=bioconductor-concordexr
|
| 12 |
+
volumes:
|
| 13 |
+
- ./workspace:/app/workspace
|
| 14 |
+
- ./output:/app/output
|
| 15 |
+
restart: unless-stopped
|
| 16 |
+
healthcheck:
|
| 17 |
+
test: ["CMD", "python", "-c", "import sys; sys.exit(0)"]
|
| 18 |
+
interval: 30s
|
| 19 |
+
timeout: 10s
|
| 20 |
+
retries: 3
|
| 21 |
+
start_period: 5s
|
| 22 |
+
|
Biomni/mcp_generated/mcp_bioconductor-concordexr/environment.yaml
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
name: mcp-tool
|
| 3 |
+
channels:
|
| 4 |
+
- bioconda
|
| 5 |
+
- conda-forge
|
| 6 |
+
- defaults
|
| 7 |
+
dependencies:
|
| 8 |
+
- bioconductor-concordexr
|
| 9 |
+
- python=3.10
|
| 10 |
+
|
Biomni/mcp_generated/mcp_bioconductor-concordexr/requirements.txt
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
fastmcp
|
| 2 |
+
mcp
|
Biomni/mcp_generated/mcp_bioconductor-decipher/Dockerfile
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
FROM python:3.10-slim
|
| 3 |
+
|
| 4 |
+
# Install system dependencies
|
| 5 |
+
RUN apt-get update && apt-get install -y default-jre wget curl && apt-get clean && rm -rf /var/lib/apt/lists/*
|
| 6 |
+
|
| 7 |
+
# Install Miniconda
|
| 8 |
+
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /tmp/miniconda.sh && bash /tmp/miniconda.sh -b -p /opt/conda && rm /tmp/miniconda.sh
|
| 9 |
+
|
| 10 |
+
# Add conda to PATH
|
| 11 |
+
ENV PATH="/opt/conda/bin:$PATH"
|
| 12 |
+
|
| 13 |
+
# Install bioconductor-decipher via conda (e.g., from bioconda)
|
| 14 |
+
RUN conda install -c bioconda bioconductor-decipher -y && conda clean -a
|
| 15 |
+
|
| 16 |
+
# Install Python dependencies
|
| 17 |
+
RUN pip install uv
|
| 18 |
+
RUN uv pip install --system fastmcp
|
| 19 |
+
|
| 20 |
+
# Create app directory
|
| 21 |
+
WORKDIR /app
|
| 22 |
+
|
| 23 |
+
# Copy your MCP server
|
| 24 |
+
COPY app/bioconductor-decipher_server.py /app/
|
| 25 |
+
|
| 26 |
+
# Create workspace and output directories
|
| 27 |
+
RUN mkdir -p /app/workspace /app/output
|
| 28 |
+
|
| 29 |
+
# Make sure the server script is executable
|
| 30 |
+
RUN chmod +x /app/bioconductor-decipher_server.py
|
| 31 |
+
|
| 32 |
+
# Expose port for MCP over HTTP (optional)
|
| 33 |
+
EXPOSE 8000
|
| 34 |
+
|
| 35 |
+
# Health check
|
| 36 |
+
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 CMD python -c "import sys; sys.exit(0)"
|
| 37 |
+
|
| 38 |
+
# Default command runs the MCP server via stdio
|
| 39 |
+
CMD ["python", "/app/bioconductor-decipher_server.py"]
|
| 40 |
+
|
Biomni/mcp_generated/mcp_bioconductor-decipher/app/bioconductor-decipher_server.py
ADDED
|
@@ -0,0 +1,439 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import subprocess
|
| 2 |
+
import tempfile
|
| 3 |
+
import textwrap
|
| 4 |
+
from pathlib import Path
|
| 5 |
+
from typing import Dict, Any, Optional, List
|
| 6 |
+
|
| 7 |
+
# MCP decorators are used directly as the execution environment provides them.
|
| 8 |
+
# In a local development setup, you would use:
|
| 9 |
+
# from mcp import tool as mcp
|
| 10 |
+
|
| 11 |
+
def _run_r_script(
|
| 12 |
+
r_script_content: str,
|
| 13 |
+
args: List[str],
|
| 14 |
+
output_files_map: Dict[str, Path]
|
| 15 |
+
) -> Dict[str, Any]:
|
| 16 |
+
"""
|
| 17 |
+
Helper function to execute an R script and return a structured result.
|
| 18 |
+
"""
|
| 19 |
+
cmd = ["Rscript", "-"] + args
|
| 20 |
+
# Create a user-friendly representation of the command
|
| 21 |
+
command_executed = f"echo '{r_script_content}' | Rscript - {' '.join(args)}"
|
| 22 |
+
|
| 23 |
+
try:
|
| 24 |
+
result = subprocess.run(
|
| 25 |
+
cmd,
|
| 26 |
+
input=r_script_content,
|
| 27 |
+
capture_output=True,
|
| 28 |
+
text=True,
|
| 29 |
+
check=True,
|
| 30 |
+
)
|
| 31 |
+
|
| 32 |
+
# Verify that all expected output files were created and are not empty
|
| 33 |
+
for key, path in output_files_map.items():
|
| 34 |
+
if not path.is_file() or path.stat().st_size == 0:
|
| 35 |
+
raise FileNotFoundError(
|
| 36 |
+
f"Expected output file '{path}' was not created or is empty. "
|
| 37 |
+
f"R script stderr: {result.stderr}"
|
| 38 |
+
)
|
| 39 |
+
|
| 40 |
+
return {
|
| 41 |
+
"command_executed": command_executed,
|
| 42 |
+
"stdout": result.stdout,
|
| 43 |
+
"stderr": result.stderr,
|
| 44 |
+
"output_files": {k: str(v) for k, v in output_files_map.items()},
|
| 45 |
+
}
|
| 46 |
+
except subprocess.CalledProcessError as e:
|
| 47 |
+
return {
|
| 48 |
+
"command_executed": command_executed,
|
| 49 |
+
"stdout": e.stdout,
|
| 50 |
+
"stderr": e.stderr,
|
| 51 |
+
"error": "R script execution failed.",
|
| 52 |
+
"return_code": e.returncode,
|
| 53 |
+
}
|
| 54 |
+
except FileNotFoundError as e:
|
| 55 |
+
return {
|
| 56 |
+
"command_executed": command_executed,
|
| 57 |
+
"stdout": "",
|
| 58 |
+
"stderr": str(e),
|
| 59 |
+
"error": "An output file was not generated as expected.",
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
|
| 63 |
+
from mcp.server.fastmcp import FastMCP
|
| 64 |
+
|
| 65 |
+
SERVER_NAME = 'local_bioconductor_decipher'
|
| 66 |
+
mcp = FastMCP(SERVER_NAME)
|
| 67 |
+
|
| 68 |
+
@mcp.tool()
|
| 69 |
+
def align_sequences(
|
| 70 |
+
input_fasta: Path,
|
| 71 |
+
substitution_matrix: Optional[str] = None,
|
| 72 |
+
gap_opening: float = 10.0,
|
| 73 |
+
gap_extension: float = 0.1,
|
| 74 |
+
processors: int = 1,
|
| 75 |
+
) -> Dict[str, Any]:
|
| 76 |
+
"""
|
| 77 |
+
Performs multiple sequence alignment on sequences using DECIPHER's AlignSeqs.
|
| 78 |
+
|
| 79 |
+
This tool aligns a set of DNA, RNA, or amino acid sequences provided in a FASTA file.
|
| 80 |
+
It automatically detects the sequence type.
|
| 81 |
+
|
| 82 |
+
Args:
|
| 83 |
+
input_fasta: Path to the input FASTA file containing unaligned sequences.
|
| 84 |
+
substitution_matrix: The substitution matrix to use (e.g., 'BLOSUM62', 'PAM40').
|
| 85 |
+
If None, DECIPHER will choose a default based on sequence type.
|
| 86 |
+
gap_opening: The penalty for opening a gap.
|
| 87 |
+
gap_extension: The penalty for extending a gap.
|
| 88 |
+
processors: The number of processors to use for alignment.
|
| 89 |
+
|
| 90 |
+
Returns:
|
| 91 |
+
A dictionary containing the command executed, stdout, stderr, and a map of output files.
|
| 92 |
+
"""
|
| 93 |
+
if not input_fasta.is_file():
|
| 94 |
+
raise FileNotFoundError(f"Input FASTA file not found: {input_fasta}")
|
| 95 |
+
if processors < 1:
|
| 96 |
+
raise ValueError("Number of processors must be at least 1.")
|
| 97 |
+
|
| 98 |
+
r_script = textwrap.dedent("""
|
| 99 |
+
# Load required libraries
|
| 100 |
+
suppressPackageStartupMessages(library(DECIPHER))
|
| 101 |
+
|
| 102 |
+
# Get command line arguments
|
| 103 |
+
args <- commandArgs(trailingOnly = TRUE)
|
| 104 |
+
inputFile <- args[1]
|
| 105 |
+
outputFile <- args[2]
|
| 106 |
+
subMatrix <- if (args[3] == "NULL") NULL else args[3]
|
| 107 |
+
gapOpen <- as.numeric(args[4])
|
| 108 |
+
gapExt <- as.numeric(args[5])
|
| 109 |
+
procs <- as.integer(args[6])
|
| 110 |
+
|
| 111 |
+
# Read sequences (readBStringSet is generic for DNA, RNA, AA)
|
| 112 |
+
seqs <- readBStringSet(inputFile)
|
| 113 |
+
|
| 114 |
+
# Perform alignment
|
| 115 |
+
cat("Starting sequence alignment...\\n", file = stderr())
|
| 116 |
+
aligned_seqs <- AlignSeqs(seqs,
|
| 117 |
+
gapOpening = gapOpen,
|
| 118 |
+
gapExtension = gapExt,
|
| 119 |
+
substitutionMatrix = subMatrix,
|
| 120 |
+
processors = procs,
|
| 121 |
+
verbose = TRUE)
|
| 122 |
+
cat("Alignment complete.\\n", file = stderr())
|
| 123 |
+
|
| 124 |
+
# Write the aligned sequences to the output file
|
| 125 |
+
writeXStringSet(aligned_seqs, filepath = outputFile)
|
| 126 |
+
cat("Output written to", outputFile, "\\n", file = stderr())
|
| 127 |
+
""")
|
| 128 |
+
|
| 129 |
+
with tempfile.TemporaryDirectory() as temp_dir:
|
| 130 |
+
temp_path = Path(temp_dir)
|
| 131 |
+
output_aligned_fasta = temp_path / "aligned.fasta"
|
| 132 |
+
|
| 133 |
+
args = [
|
| 134 |
+
str(input_fasta.resolve()),
|
| 135 |
+
str(output_aligned_fasta.resolve()),
|
| 136 |
+
str(substitution_matrix) if substitution_matrix else "NULL",
|
| 137 |
+
str(gap_opening),
|
| 138 |
+
str(gap_extension),
|
| 139 |
+
str(processors),
|
| 140 |
+
]
|
| 141 |
+
|
| 142 |
+
return _run_r_script(r_script, args, {"aligned_fasta": output_aligned_fasta})
|
| 143 |
+
|
| 144 |
+
|
| 145 |
+
@mcp.tool()
|
| 146 |
+
def find_chimeras(
|
| 147 |
+
input_fasta: Path,
|
| 148 |
+
processors: int = 1,
|
| 149 |
+
) -> Dict[str, Any]:
|
| 150 |
+
"""
|
| 151 |
+
Identifies chimeric sequences in a FASTA file using DECIPHER's isChimera.
|
| 152 |
+
|
| 153 |
+
This tool screens a set of sequences (typically 16S rRNA amplicons) and
|
| 154 |
+
identifies which ones are likely to be chimeras formed during PCR.
|
| 155 |
+
|
| 156 |
+
Args:
|
| 157 |
+
input_fasta: Path to the input FASTA file containing sequences to check.
|
| 158 |
+
processors: The number of processors to use for chimera detection.
|
| 159 |
+
|
| 160 |
+
Returns:
|
| 161 |
+
A dictionary containing the command executed, stdout, stderr, and a map of output files.
|
| 162 |
+
"""
|
| 163 |
+
if not input_fasta.is_file():
|
| 164 |
+
raise FileNotFoundError(f"Input FASTA file not found: {input_fasta}")
|
| 165 |
+
if processors < 1:
|
| 166 |
+
raise ValueError("Number of processors must be at least 1.")
|
| 167 |
+
|
| 168 |
+
r_script = textwrap.dedent("""
|
| 169 |
+
suppressPackageStartupMessages(library(DECIPHER))
|
| 170 |
+
|
| 171 |
+
args <- commandArgs(trailingOnly = TRUE)
|
| 172 |
+
inputFile <- args[1]
|
| 173 |
+
outputFile <- args[2]
|
| 174 |
+
procs <- as.integer(args[3])
|
| 175 |
+
|
| 176 |
+
cat("Reading sequences...\\n", file = stderr())
|
| 177 |
+
seqs <- readDNAStringSet(inputFile)
|
| 178 |
+
|
| 179 |
+
cat("Finding chimeras...\\n", file = stderr())
|
| 180 |
+
chimera_flags <- isChimera(seqs, processors = procs, verbose = TRUE)
|
| 181 |
+
|
| 182 |
+
chimera_names <- names(seqs)[chimera_flags]
|
| 183 |
+
|
| 184 |
+
cat(length(chimera_names), "chimeras found.\\n", file = stderr())
|
| 185 |
+
writeLines(chimera_names, con = outputFile)
|
| 186 |
+
cat("Chimeric sequence names written to", outputFile, "\\n", file = stderr())
|
| 187 |
+
""")
|
| 188 |
+
|
| 189 |
+
with tempfile.TemporaryDirectory() as temp_dir:
|
| 190 |
+
temp_path = Path(temp_dir)
|
| 191 |
+
output_chimera_list = temp_path / "chimeric_sequences.txt"
|
| 192 |
+
|
| 193 |
+
args = [
|
| 194 |
+
str(input_fasta.resolve()),
|
| 195 |
+
str(output_chimera_list.resolve()),
|
| 196 |
+
str(processors),
|
| 197 |
+
]
|
| 198 |
+
|
| 199 |
+
return _run_r_script(r_script, args, {"chimera_list": output_chimera_list})
|
| 200 |
+
|
| 201 |
+
|
| 202 |
+
@mcp.tool()
|
| 203 |
+
def classify_sequences(
|
| 204 |
+
query_fasta: Path,
|
| 205 |
+
training_set: Path,
|
| 206 |
+
confidence_threshold: float = 0.7,
|
| 207 |
+
processors: int = 1,
|
| 208 |
+
) -> Dict[str, Any]:
|
| 209 |
+
"""
|
| 210 |
+
Classifies sequences using a pre-trained DECIPHER model (IdTaxa).
|
| 211 |
+
|
| 212 |
+
This tool assigns taxonomic classification to sequences based on a provided
|
| 213 |
+
training set file (e.g., SILVA, RDP, Greengenes).
|
| 214 |
+
|
| 215 |
+
Args:
|
| 216 |
+
query_fasta: Path to the FASTA file of sequences to classify.
|
| 217 |
+
training_set: Path to the .RData file containing the training set object.
|
| 218 |
+
confidence_threshold: The minimum confidence required to assign a taxonomy.
|
| 219 |
+
processors: The number of processors to use for classification.
|
| 220 |
+
|
| 221 |
+
Returns:
|
| 222 |
+
A dictionary containing the command executed, stdout, stderr, and a map of output files.
|
| 223 |
+
"""
|
| 224 |
+
if not query_fasta.is_file():
|
| 225 |
+
raise FileNotFoundError(f"Query FASTA file not found: {query_fasta}")
|
| 226 |
+
if not training_set.is_file():
|
| 227 |
+
raise FileNotFoundError(f"Training set file not found: {training_set}")
|
| 228 |
+
if not 0.0 <= confidence_threshold <= 1.0:
|
| 229 |
+
raise ValueError("Confidence threshold must be between 0.0 and 1.0.")
|
| 230 |
+
if processors < 1:
|
| 231 |
+
raise ValueError("Number of processors must be at least 1.")
|
| 232 |
+
|
| 233 |
+
r_script = textwrap.dedent("""
|
| 234 |
+
suppressPackageStartupMessages(library(DECIPHER))
|
| 235 |
+
|
| 236 |
+
args <- commandArgs(trailingOnly = TRUE)
|
| 237 |
+
queryFile <- args[1]
|
| 238 |
+
trainingFile <- args[2]
|
| 239 |
+
outputFile <- args[3]
|
| 240 |
+
conf <- as.numeric(args[4])
|
| 241 |
+
procs <- as.integer(args[5])
|
| 242 |
+
|
| 243 |
+
cat("Reading query sequences...\\n", file = stderr())
|
| 244 |
+
seqs <- readDNAStringSet(queryFile)
|
| 245 |
+
|
| 246 |
+
cat("Loading training set...\\n", file = stderr())
|
| 247 |
+
load(trainingFile) # Assumes this loads an object named 'trainingSet'
|
| 248 |
+
|
| 249 |
+
cat("Classifying sequences with IdTaxa...\\n", file = stderr())
|
| 250 |
+
ids <- IdTaxa(seqs, trainingSet, threshold = conf, processors = procs, verbose = TRUE)
|
| 251 |
+
|
| 252 |
+
# Format the output into a table
|
| 253 |
+
get_taxonomy <- function(x) {
|
| 254 |
+
if (length(x) > 0 && length(x[[1]]$taxon) > 0) {
|
| 255 |
+
paste(x[[1]]$taxon, collapse=";")
|
| 256 |
+
} else {
|
| 257 |
+
"Unclassified"
|
| 258 |
+
}
|
| 259 |
+
}
|
| 260 |
+
taxonomy_strings <- sapply(ids, get_taxonomy)
|
| 261 |
+
output_df <- data.frame(sequence_name = names(seqs), taxonomy = taxonomy_strings)
|
| 262 |
+
|
| 263 |
+
cat("Writing classification results...\\n", file = stderr())
|
| 264 |
+
write.table(output_df, file = outputFile, sep = "\\t", row.names = FALSE, quote = FALSE)
|
| 265 |
+
cat("Output written to", outputFile, "\\n", file = stderr())
|
| 266 |
+
""")
|
| 267 |
+
|
| 268 |
+
with tempfile.TemporaryDirectory() as temp_dir:
|
| 269 |
+
temp_path = Path(temp_dir)
|
| 270 |
+
output_classification_tsv = temp_path / "classification.tsv"
|
| 271 |
+
|
| 272 |
+
args = [
|
| 273 |
+
str(query_fasta.resolve()),
|
| 274 |
+
str(training_set.resolve()),
|
| 275 |
+
str(output_classification_tsv.resolve()),
|
| 276 |
+
str(confidence_threshold),
|
| 277 |
+
str(processors),
|
| 278 |
+
]
|
| 279 |
+
|
| 280 |
+
return _run_r_script(r_script, args, {"classification_results": output_classification_tsv})
|
| 281 |
+
|
| 282 |
+
|
| 283 |
+
@mcp.tool()
|
| 284 |
+
def design_primers(
|
| 285 |
+
input_aligned_fasta: Path,
|
| 286 |
+
min_length: int = 18,
|
| 287 |
+
max_length: int = 25,
|
| 288 |
+
min_tm: float = 50.0,
|
| 289 |
+
max_tm: float = 65.0,
|
| 290 |
+
min_gc: float = 40.0,
|
| 291 |
+
max_gc: float = 60.0,
|
| 292 |
+
max_degeneracy: int = 4,
|
| 293 |
+
processors: int = 1,
|
| 294 |
+
) -> Dict[str, Any]:
|
| 295 |
+
"""
|
| 296 |
+
Designs group-specific PCR primers from an aligned FASTA file using DesignPrimers.
|
| 297 |
+
|
| 298 |
+
Args:
|
| 299 |
+
input_aligned_fasta: Path to an aligned FASTA file of target sequences.
|
| 300 |
+
min_length: Minimum primer length.
|
| 301 |
+
max_length: Maximum primer length.
|
| 302 |
+
min_tm: Minimum melting temperature (°C).
|
| 303 |
+
max_tm: Maximum melting temperature (°C).
|
| 304 |
+
min_gc: Minimum GC content (percent).
|
| 305 |
+
max_gc: Maximum GC content (percent).
|
| 306 |
+
max_degeneracy: Maximum number of degenerate bases allowed in a primer.
|
| 307 |
+
processors: The number of processors to use.
|
| 308 |
+
|
| 309 |
+
Returns:
|
| 310 |
+
A dictionary containing the command executed, stdout, stderr, and a map of output files.
|
| 311 |
+
"""
|
| 312 |
+
if not input_aligned_fasta.is_file():
|
| 313 |
+
raise FileNotFoundError(f"Input aligned FASTA file not found: {input_aligned_fasta}")
|
| 314 |
+
if processors < 1:
|
| 315 |
+
raise ValueError("Number of processors must be at least 1.")
|
| 316 |
+
|
| 317 |
+
r_script = textwrap.dedent("""
|
| 318 |
+
suppressPackageStartupMessages(library(DECIPHER))
|
| 319 |
+
|
| 320 |
+
args <- commandArgs(trailingOnly = TRUE)
|
| 321 |
+
inputFile <- args[1]
|
| 322 |
+
outputFile <- args[2]
|
| 323 |
+
minL <- as.integer(args[3])
|
| 324 |
+
maxL <- as.integer(args[4])
|
| 325 |
+
minTm <- as.numeric(args[5])
|
| 326 |
+
maxTm <- as.numeric(args[6])
|
| 327 |
+
minGC <- as.numeric(args[7])
|
| 328 |
+
maxGC <- as.numeric(args[8])
|
| 329 |
+
maxD <- as.integer(args[9])
|
| 330 |
+
procs <- as.integer(args[10])
|
| 331 |
+
|
| 332 |
+
cat("Reading aligned sequences...\\n", file = stderr())
|
| 333 |
+
seqs <- readDNAStringSet(inputFile)
|
| 334 |
+
|
| 335 |
+
cat("Designing primers...\\n", file = stderr())
|
| 336 |
+
primers <- DesignPrimers(
|
| 337 |
+
seqs, minLength = minL, maxLength = maxL, minTm = minTm, maxTm = maxTm,
|
| 338 |
+
minGC = minGC, maxGC = maxGC, maxDegeneracy = maxD,
|
| 339 |
+
processors = procs, verbose = TRUE
|
| 340 |
+
)
|
| 341 |
+
|
| 342 |
+
cat(nrow(primers), "candidate primers found.\\n", file = stderr())
|
| 343 |
+
write.table(primers, file = outputFile, sep = "\\t", row.names = FALSE, quote = FALSE)
|
| 344 |
+
cat("Primer table written to", outputFile, "\\n", file = stderr())
|
| 345 |
+
""")
|
| 346 |
+
|
| 347 |
+
with tempfile.TemporaryDirectory() as temp_dir:
|
| 348 |
+
temp_path = Path(temp_dir)
|
| 349 |
+
output_primers_tsv = temp_path / "primers.tsv"
|
| 350 |
+
|
| 351 |
+
args = [
|
| 352 |
+
str(input_aligned_fasta.resolve()),
|
| 353 |
+
str(output_primers_tsv.resolve()),
|
| 354 |
+
str(min_length), str(max_length), str(min_tm), str(max_tm),
|
| 355 |
+
str(min_gc), str(max_gc), str(max_degeneracy), str(processors),
|
| 356 |
+
]
|
| 357 |
+
|
| 358 |
+
return _run_r_script(r_script, args, {"designed_primers": output_primers_tsv})
|
| 359 |
+
|
| 360 |
+
|
| 361 |
+
@mcp.tool()
|
| 362 |
+
def design_probes(
|
| 363 |
+
input_aligned_fasta: Path,
|
| 364 |
+
min_length: int = 18,
|
| 365 |
+
max_length: int = 50,
|
| 366 |
+
min_tm: float = 60.0,
|
| 367 |
+
max_tm: float = 80.0,
|
| 368 |
+
min_gc: float = 40.0,
|
| 369 |
+
max_gc: float = 60.0,
|
| 370 |
+
max_degeneracy: int = 1,
|
| 371 |
+
processors: int = 1,
|
| 372 |
+
) -> Dict[str, Any]:
|
| 373 |
+
"""
|
| 374 |
+
Designs hybridization probes (e.g., for FISH) from an aligned FASTA file using DesignProbes.
|
| 375 |
+
|
| 376 |
+
Args:
|
| 377 |
+
input_aligned_fasta: Path to an aligned FASTA file of target sequences.
|
| 378 |
+
min_length: Minimum probe length.
|
| 379 |
+
max_length: Maximum probe length.
|
| 380 |
+
min_tm: Minimum melting temperature (°C).
|
| 381 |
+
max_tm: Maximum melting temperature (°C).
|
| 382 |
+
min_gc: Minimum GC content (percent).
|
| 383 |
+
max_gc: Maximum GC content (percent).
|
| 384 |
+
max_degeneracy: Maximum number of degenerate bases allowed in a probe.
|
| 385 |
+
processors: The number of processors to use.
|
| 386 |
+
|
| 387 |
+
Returns:
|
| 388 |
+
A dictionary containing the command executed, stdout, stderr, and a map of output files.
|
| 389 |
+
"""
|
| 390 |
+
if not input_aligned_fasta.is_file():
|
| 391 |
+
raise FileNotFoundError(f"Input aligned FASTA file not found: {input_aligned_fasta}")
|
| 392 |
+
if processors < 1:
|
| 393 |
+
raise ValueError("Number of processors must be at least 1.")
|
| 394 |
+
|
| 395 |
+
r_script = textwrap.dedent("""
|
| 396 |
+
suppressPackageStartupMessages(library(DECIPHER))
|
| 397 |
+
|
| 398 |
+
args <- commandArgs(trailingOnly = TRUE)
|
| 399 |
+
inputFile <- args[1]
|
| 400 |
+
outputFile <- args[2]
|
| 401 |
+
minL <- as.integer(args[3])
|
| 402 |
+
maxL <- as.integer(args[4])
|
| 403 |
+
minTm <- as.numeric(args[5])
|
| 404 |
+
maxTm <- as.numeric(args[6])
|
| 405 |
+
minGC <- as.numeric(args[7])
|
| 406 |
+
maxGC <- as.numeric(args[8])
|
| 407 |
+
maxD <- as.integer(args[9])
|
| 408 |
+
procs <- as.integer(args[10])
|
| 409 |
+
|
| 410 |
+
cat("Reading aligned sequences...\\n", file = stderr())
|
| 411 |
+
seqs <- readDNAStringSet(inputFile)
|
| 412 |
+
|
| 413 |
+
cat("Designing probes...\\n", file = stderr())
|
| 414 |
+
probes <- DesignProbes(
|
| 415 |
+
seqs, minLength = minL, maxLength = maxL, minTm = minTm, maxTm = maxTm,
|
| 416 |
+
minGC = minGC, maxGC = maxGC, maxDegeneracy = maxD,
|
| 417 |
+
processors = procs, verbose = TRUE
|
| 418 |
+
)
|
| 419 |
+
|
| 420 |
+
cat(nrow(probes), "candidate probes found.\\n", file = stderr())
|
| 421 |
+
write.table(probes, file = outputFile, sep = "\\t", row.names = FALSE, quote = FALSE)
|
| 422 |
+
cat("Probe table written to", outputFile, "\\n", file = stderr())
|
| 423 |
+
""")
|
| 424 |
+
|
| 425 |
+
with tempfile.TemporaryDirectory() as temp_dir:
|
| 426 |
+
temp_path = Path(temp_dir)
|
| 427 |
+
output_probes_tsv = temp_path / "probes.tsv"
|
| 428 |
+
|
| 429 |
+
args = [
|
| 430 |
+
str(input_aligned_fasta.resolve()),
|
| 431 |
+
str(output_probes_tsv.resolve()),
|
| 432 |
+
str(min_length), str(max_length), str(min_tm), str(max_tm),
|
| 433 |
+
str(min_gc), str(max_gc), str(max_degeneracy), str(processors),
|
| 434 |
+
]
|
| 435 |
+
|
| 436 |
+
return _run_r_script(r_script, args, {"designed_probes": output_probes_tsv})
|
| 437 |
+
|
| 438 |
+
if __name__ == "__main__":
|
| 439 |
+
mcp.run(transport="stdio")
|
Biomni/mcp_generated/mcp_bioconductor-decipher/app/bioconductor-decipher_shim_server.py
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
from __future__ import annotations
|
| 3 |
+
|
| 4 |
+
import ast
|
| 5 |
+
from pathlib import Path
|
| 6 |
+
|
| 7 |
+
from mcp.server.fastmcp import FastMCP
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
SOURCE_SERVER = Path('/225040511/project/BioScientist/agent_system/toolbase/mcp_batch_from_manual_txt/mcp_bioconductor-decipher/app/bioconductor-decipher_server.py')
|
| 11 |
+
LOCAL_SERVER = Path(__file__).with_name(SOURCE_SERVER.name)
|
| 12 |
+
SERVER_NAME = 'biosci_bioconductor_decipher'
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
class _ShimMCP:
|
| 16 |
+
@staticmethod
|
| 17 |
+
def tool(*args, **kwargs):
|
| 18 |
+
if args and callable(args[0]) and len(args) == 1 and not kwargs:
|
| 19 |
+
return args[0]
|
| 20 |
+
def _decorator(fn):
|
| 21 |
+
return fn
|
| 22 |
+
return _decorator
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
def _resolve_source_server():
|
| 26 |
+
if LOCAL_SERVER.exists() and LOCAL_SERVER.name != Path(__file__).name:
|
| 27 |
+
return LOCAL_SERVER
|
| 28 |
+
return SOURCE_SERVER
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
def _load_functions():
|
| 32 |
+
source_server = _resolve_source_server()
|
| 33 |
+
code = source_server.read_text(encoding="utf-8")
|
| 34 |
+
tree = ast.parse(code, filename=str(source_server))
|
| 35 |
+
function_names = [n.name for n in tree.body if isinstance(n, ast.FunctionDef) and not n.name.startswith("_")]
|
| 36 |
+
namespace = {
|
| 37 |
+
"__name__": "__mcp_source__",
|
| 38 |
+
"mcp": _ShimMCP(),
|
| 39 |
+
}
|
| 40 |
+
exec(compile(code, str(source_server), "exec"), namespace, namespace)
|
| 41 |
+
loaded = []
|
| 42 |
+
for name in function_names:
|
| 43 |
+
fn = namespace.get(name)
|
| 44 |
+
if callable(fn):
|
| 45 |
+
loaded.append(fn)
|
| 46 |
+
return loaded
|
| 47 |
+
|
| 48 |
+
|
| 49 |
+
mcp = FastMCP(SERVER_NAME)
|
| 50 |
+
for _fn in _load_functions():
|
| 51 |
+
mcp.tool()(_fn)
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
if __name__ == "__main__":
|
| 55 |
+
mcp.run(transport="stdio")
|
Biomni/mcp_generated/mcp_bioconductor-decipher/app/requirements.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
|
Biomni/mcp_generated/mcp_bioconductor-decipher/docker-compose.yml
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version: '3.8'
|
| 2 |
+
|
| 3 |
+
services:
|
| 4 |
+
mcp-bioconductor-decipher:
|
| 5 |
+
build: .
|
| 6 |
+
image: mcp-bioconductor-decipher:latest
|
| 7 |
+
container_name: mcp-bioconductor-decipher
|
| 8 |
+
ports:
|
| 9 |
+
- "8000:8000"
|
| 10 |
+
environment:
|
| 11 |
+
- MCP_SERVER_NAME=bioconductor-decipher
|
| 12 |
+
volumes:
|
| 13 |
+
- ./workspace:/app/workspace
|
| 14 |
+
- ./output:/app/output
|
| 15 |
+
restart: unless-stopped
|
| 16 |
+
healthcheck:
|
| 17 |
+
test: ["CMD", "python", "-c", "import sys; sys.exit(0)"]
|
| 18 |
+
interval: 30s
|
| 19 |
+
timeout: 10s
|
| 20 |
+
retries: 3
|
| 21 |
+
start_period: 5s
|
| 22 |
+
|
Biomni/mcp_generated/mcp_bioconductor-decipher/environment.yaml
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
name: mcp-tool
|
| 3 |
+
channels:
|
| 4 |
+
- bioconda
|
| 5 |
+
- conda-forge
|
| 6 |
+
- defaults
|
| 7 |
+
dependencies:
|
| 8 |
+
- bioconductor-decipher
|
| 9 |
+
- python=3.10
|
| 10 |
+
|
Biomni/mcp_generated/mcp_bioconductor-decipher/requirements.txt
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
fastmcp
|
| 2 |
+
mcp
|
Biomni/mcp_generated/mcp_bioconductor-decontx/Dockerfile
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
FROM python:3.10-slim
|
| 3 |
+
|
| 4 |
+
# Install system dependencies
|
| 5 |
+
RUN apt-get update && apt-get install -y default-jre wget curl && apt-get clean && rm -rf /var/lib/apt/lists/*
|
| 6 |
+
|
| 7 |
+
# Install Miniconda
|
| 8 |
+
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /tmp/miniconda.sh && bash /tmp/miniconda.sh -b -p /opt/conda && rm /tmp/miniconda.sh
|
| 9 |
+
|
| 10 |
+
# Add conda to PATH
|
| 11 |
+
ENV PATH="/opt/conda/bin:$PATH"
|
| 12 |
+
|
| 13 |
+
# Install bioconductor-decontx via conda (e.g., from bioconda)
|
| 14 |
+
RUN conda install -c bioconda bioconductor-decontx -y && conda clean -a
|
| 15 |
+
|
| 16 |
+
# Install Python dependencies
|
| 17 |
+
RUN pip install uv
|
| 18 |
+
RUN uv pip install --system fastmcp
|
| 19 |
+
|
| 20 |
+
# Create app directory
|
| 21 |
+
WORKDIR /app
|
| 22 |
+
|
| 23 |
+
# Copy your MCP server
|
| 24 |
+
COPY app/bioconductor-decontx_server.py /app/
|
| 25 |
+
|
| 26 |
+
# Create workspace and output directories
|
| 27 |
+
RUN mkdir -p /app/workspace /app/output
|
| 28 |
+
|
| 29 |
+
# Make sure the server script is executable
|
| 30 |
+
RUN chmod +x /app/bioconductor-decontx_server.py
|
| 31 |
+
|
| 32 |
+
# Expose port for MCP over HTTP (optional)
|
| 33 |
+
EXPOSE 8000
|
| 34 |
+
|
| 35 |
+
# Health check
|
| 36 |
+
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 CMD python -c "import sys; sys.exit(0)"
|
| 37 |
+
|
| 38 |
+
# Default command runs the MCP server via stdio
|
| 39 |
+
CMD ["python", "/app/bioconductor-decontx_server.py"]
|
| 40 |
+
|
Biomni/mcp_generated/mcp_bioconductor-decontx/app/bioconductor-decontx_server.py
ADDED
|
@@ -0,0 +1,334 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import subprocess
|
| 2 |
+
import tempfile
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
from typing import Optional
|
| 5 |
+
|
| 6 |
+
from mcp.server.fastmcp import FastMCP
|
| 7 |
+
|
| 8 |
+
SERVER_NAME = 'local_bioconductor_decontx'
|
| 9 |
+
mcp = FastMCP(SERVER_NAME)
|
| 10 |
+
|
| 11 |
+
@mcp.tool()
|
| 12 |
+
def decontx(
|
| 13 |
+
x: Path,
|
| 14 |
+
output_prefix: str,
|
| 15 |
+
z: Optional[Path] = None,
|
| 16 |
+
batch: Optional[Path] = None,
|
| 17 |
+
max_iter: int = 500,
|
| 18 |
+
delta_a: float = 1.0,
|
| 19 |
+
delta_b: float = 10.0,
|
| 20 |
+
phi: Optional[Path] = None,
|
| 21 |
+
theta: Optional[Path] = None,
|
| 22 |
+
effective_length: Optional[Path] = None,
|
| 23 |
+
length_normalization: str = "tpm",
|
| 24 |
+
num_chains: int = 3,
|
| 25 |
+
num_cores: int = 1,
|
| 26 |
+
seed: int = 12345,
|
| 27 |
+
logfile: Optional[Path] = None,
|
| 28 |
+
verbose: bool = True,
|
| 29 |
+
):
|
| 30 |
+
"""
|
| 31 |
+
Estimate and remove RNA contamination in single-cell data using DecontX.
|
| 32 |
+
|
| 33 |
+
This tool wraps the decontX R function to identify and remove contamination
|
| 34 |
+
from ambient RNA in single-cell RNA-seq count data.
|
| 35 |
+
|
| 36 |
+
Args:
|
| 37 |
+
x: Path to the input count matrix file (e.g., CSV). Rows should be
|
| 38 |
+
genes and columns should be cells. The first column should contain
|
| 39 |
+
gene names.
|
| 40 |
+
output_prefix: Prefix for the output files. The directory will be
|
| 41 |
+
created if it doesn't exist.
|
| 42 |
+
z: Optional path to a file containing cell labels. One label per line.
|
| 43 |
+
batch: Optional path to a file containing batch labels. One label per line.
|
| 44 |
+
max_iter: Maximum number of iterations for the Gibbs sampler.
|
| 45 |
+
delta_a: The first concentration parameter for the Dirichlet prior on
|
| 46 |
+
contamination levels.
|
| 47 |
+
delta_b: The second concentration parameter for the Dirichlet prior on
|
| 48 |
+
contamination levels.
|
| 49 |
+
phi: Optional path to a file containing the background contamination
|
| 50 |
+
distribution. If not provided, it will be estimated.
|
| 51 |
+
theta: Optional path to a file containing the native expression
|
| 52 |
+
distribution for each cell. If not provided, it will be estimated.
|
| 53 |
+
effective_length: Optional path to a file containing effective transcript
|
| 54 |
+
lengths for length normalization.
|
| 55 |
+
length_normalization: The length normalization method to be used.
|
| 56 |
+
One of 'tpm', 'fpm', 'fpkm', 'none'.
|
| 57 |
+
num_chains: The number of MCMC chains to run.
|
| 58 |
+
num_cores: The number of cores to use for parallel processing.
|
| 59 |
+
seed: The seed for the random number generator.
|
| 60 |
+
logfile: Optional path to a file where logs will be written.
|
| 61 |
+
verbose: If True, print progress messages to stderr.
|
| 62 |
+
"""
|
| 63 |
+
# --- Input Validation ---
|
| 64 |
+
if not x.is_file():
|
| 65 |
+
raise FileNotFoundError(f"Input count matrix file not found: {x}")
|
| 66 |
+
if z and not z.is_file():
|
| 67 |
+
raise FileNotFoundError(f"Cell labels file not found: {z}")
|
| 68 |
+
if batch and not batch.is_file():
|
| 69 |
+
raise FileNotFoundError(f"Batch labels file not found: {batch}")
|
| 70 |
+
if phi and not phi.is_file():
|
| 71 |
+
raise FileNotFoundError(f"Phi distribution file not found: {phi}")
|
| 72 |
+
if theta and not theta.is_file():
|
| 73 |
+
raise FileNotFoundError(f"Theta distribution file not found: {theta}")
|
| 74 |
+
if effective_length and not effective_length.is_file():
|
| 75 |
+
raise FileNotFoundError(f"Effective length file not found: {effective_length}")
|
| 76 |
+
|
| 77 |
+
if max_iter <= 0:
|
| 78 |
+
raise ValueError("max_iter must be a positive integer.")
|
| 79 |
+
if num_chains <= 0:
|
| 80 |
+
raise ValueError("num_chains must be a positive integer.")
|
| 81 |
+
if num_cores <= 0:
|
| 82 |
+
raise ValueError("num_cores must be a positive integer.")
|
| 83 |
+
if delta_a <= 0 or delta_b <= 0:
|
| 84 |
+
raise ValueError("Delta parameters (delta_a, delta_b) must be positive.")
|
| 85 |
+
|
| 86 |
+
allowed_norm = ["tpm", "fpm", "fpkm", "none"]
|
| 87 |
+
if length_normalization not in allowed_norm:
|
| 88 |
+
raise ValueError(f"length_normalization must be one of {allowed_norm}")
|
| 89 |
+
|
| 90 |
+
# --- File and Path Handling ---
|
| 91 |
+
output_dir = Path(output_prefix).parent
|
| 92 |
+
output_dir.mkdir(parents=True, exist_ok=True)
|
| 93 |
+
|
| 94 |
+
output_counts_path = Path(f"{output_prefix}_decontXcounts.csv")
|
| 95 |
+
output_contamination_path = Path(f"{output_prefix}_contamination.csv")
|
| 96 |
+
|
| 97 |
+
with tempfile.TemporaryDirectory() as temp_dir:
|
| 98 |
+
script_path = Path(temp_dir) / "run_decontx.R"
|
| 99 |
+
|
| 100 |
+
# --- R Script Generation ---
|
| 101 |
+
z_r = f'"{z.resolve()}"' if z else "NULL"
|
| 102 |
+
batch_r = f'"{batch.resolve()}"' if batch else "NULL"
|
| 103 |
+
phi_r = f'read.csv("{phi.resolve()}", header=FALSE)$V1' if phi else "NULL"
|
| 104 |
+
theta_r = f'read.csv("{theta.resolve()}", header=FALSE)$V1' if theta else "NULL"
|
| 105 |
+
effective_length_r = f'read.csv("{effective_length.resolve()}", header=FALSE)$V1' if effective_length else "NULL"
|
| 106 |
+
logfile_r = f'"{logfile.resolve()}"' if logfile else "NULL"
|
| 107 |
+
verbose_r = "TRUE" if verbose else "FALSE"
|
| 108 |
+
|
| 109 |
+
r_script = f"""
|
| 110 |
+
library(decontX)
|
| 111 |
+
library(SingleCellExperiment)
|
| 112 |
+
library(Matrix)
|
| 113 |
+
|
| 114 |
+
counts <- as.matrix(read.csv("{x.resolve()}", row.names=1, check.names=FALSE))
|
| 115 |
+
|
| 116 |
+
z_data <- if (!is.null({z_r})) read.csv({z_r}, header=FALSE, stringsAsFactors=TRUE)$V1 else NULL
|
| 117 |
+
batch_data <- if (!is.null({batch_r})) read.csv({batch_r}, header=FALSE, stringsAsFactors=TRUE)$V1 else NULL
|
| 118 |
+
phi_data <- if (!is.null({phi_r})) {phi_r} else NULL
|
| 119 |
+
theta_data <- if (!is.null({theta_r})) {theta_r} else NULL
|
| 120 |
+
effectiveLength_data <- if (!is.null({effective_length_r})) {effective_length_r} else NULL
|
| 121 |
+
|
| 122 |
+
sce <- SingleCellExperiment(assays = list(counts = counts))
|
| 123 |
+
|
| 124 |
+
set.seed({seed})
|
| 125 |
+
sce <- decontX(
|
| 126 |
+
x = sce,
|
| 127 |
+
z = z_data,
|
| 128 |
+
batch = batch_data,
|
| 129 |
+
maxIter = {max_iter},
|
| 130 |
+
delta = c({delta_a}, {delta_b}),
|
| 131 |
+
phi = phi_data,
|
| 132 |
+
theta = theta_data,
|
| 133 |
+
effectiveLength = effectiveLength_data,
|
| 134 |
+
lengthNormalization = "{length_normalization}",
|
| 135 |
+
numChains = {num_chains},
|
| 136 |
+
numCores = {num_cores},
|
| 137 |
+
logfile = {logfile_r},
|
| 138 |
+
verbose = {verbose_r}
|
| 139 |
+
)
|
| 140 |
+
|
| 141 |
+
decontaminated_counts <- decontXcounts(sce)
|
| 142 |
+
contamination_scores <- colData(sce)$decontX_contamination
|
| 143 |
+
results_df <- data.frame(contamination = contamination_scores, row.names = colnames(sce))
|
| 144 |
+
|
| 145 |
+
write.csv(as.matrix(decontaminated_counts), file="{output_counts_path.resolve()}", row.names=TRUE)
|
| 146 |
+
write.csv(results_df, file="{output_contamination_path.resolve()}", row.names=TRUE)
|
| 147 |
+
"""
|
| 148 |
+
|
| 149 |
+
with open(script_path, "w") as f:
|
| 150 |
+
f.write(r_script)
|
| 151 |
+
|
| 152 |
+
# --- Subprocess Execution ---
|
| 153 |
+
command = ["Rscript", str(script_path)]
|
| 154 |
+
command_str = " ".join(map(str, command))
|
| 155 |
+
|
| 156 |
+
try:
|
| 157 |
+
result = subprocess.run(
|
| 158 |
+
command,
|
| 159 |
+
capture_output=True,
|
| 160 |
+
text=True,
|
| 161 |
+
check=True,
|
| 162 |
+
)
|
| 163 |
+
|
| 164 |
+
output_files = [
|
| 165 |
+
str(output_counts_path),
|
| 166 |
+
str(output_contamination_path)
|
| 167 |
+
]
|
| 168 |
+
|
| 169 |
+
return {
|
| 170 |
+
"command_executed": command_str,
|
| 171 |
+
"stdout": result.stdout,
|
| 172 |
+
"stderr": result.stderr,
|
| 173 |
+
"output_files": output_files
|
| 174 |
+
}
|
| 175 |
+
except subprocess.CalledProcessError as e:
|
| 176 |
+
return {
|
| 177 |
+
"command_executed": command_str,
|
| 178 |
+
"stdout": e.stdout,
|
| 179 |
+
"stderr": e.stderr,
|
| 180 |
+
"error": "DecontX execution failed.",
|
| 181 |
+
"return_code": e.returncode
|
| 182 |
+
}
|
| 183 |
+
|
| 184 |
+
@mcp.tool()
|
| 185 |
+
def decontpro(
|
| 186 |
+
x: Path,
|
| 187 |
+
output_prefix: str,
|
| 188 |
+
z: Optional[Path] = None,
|
| 189 |
+
batch: Optional[Path] = None,
|
| 190 |
+
max_iter: int = 200,
|
| 191 |
+
delta_a: float = 1.0,
|
| 192 |
+
delta_b: float = 1.0,
|
| 193 |
+
gamma: float = 1.0,
|
| 194 |
+
beta: float = 1.0,
|
| 195 |
+
num_chains: int = 3,
|
| 196 |
+
num_cores: int = 1,
|
| 197 |
+
seed: int = 12345,
|
| 198 |
+
logfile: Optional[Path] = None,
|
| 199 |
+
verbose: bool = True,
|
| 200 |
+
):
|
| 201 |
+
"""
|
| 202 |
+
Estimate and remove protein contamination in CITE-seq data using DecontPro.
|
| 203 |
+
|
| 204 |
+
This tool wraps the decontPro R function to identify and remove contamination
|
| 205 |
+
from ambient and background sources in single-cell protein expression data.
|
| 206 |
+
|
| 207 |
+
Args:
|
| 208 |
+
x: Path to the input ADT count matrix file (e.g., CSV). Rows should be
|
| 209 |
+
proteins and columns should be cells. The first column should contain
|
| 210 |
+
protein names.
|
| 211 |
+
output_prefix: Prefix for the output files. The directory will be
|
| 212 |
+
created if it doesn't exist.
|
| 213 |
+
z: Optional path to a file containing cell labels. One label per line.
|
| 214 |
+
batch: Optional path to a file containing batch labels. One label per line.
|
| 215 |
+
max_iter: Maximum number of iterations for the Gibbs sampler.
|
| 216 |
+
delta_a: The first concentration parameter for the Dirichlet prior on
|
| 217 |
+
contamination levels.
|
| 218 |
+
delta_b: The second concentration parameter for the Dirichlet prior on
|
| 219 |
+
contamination levels.
|
| 220 |
+
gamma: The background contamination distribution parameter.
|
| 221 |
+
beta: The native expression distribution parameter for each cell.
|
| 222 |
+
num_chains: The number of MCMC chains to run.
|
| 223 |
+
num_cores: The number of cores to use for parallel processing.
|
| 224 |
+
seed: The seed for the random number generator.
|
| 225 |
+
logfile: Optional path to a file where logs will be written.
|
| 226 |
+
verbose: If True, print progress messages to stderr.
|
| 227 |
+
"""
|
| 228 |
+
# --- Input Validation ---
|
| 229 |
+
if not x.is_file():
|
| 230 |
+
raise FileNotFoundError(f"Input ADT count matrix file not found: {x}")
|
| 231 |
+
if z and not z.is_file():
|
| 232 |
+
raise FileNotFoundError(f"Cell labels file not found: {z}")
|
| 233 |
+
if batch and not batch.is_file():
|
| 234 |
+
raise FileNotFoundError(f"Batch labels file not found: {batch}")
|
| 235 |
+
|
| 236 |
+
if max_iter <= 0:
|
| 237 |
+
raise ValueError("max_iter must be a positive integer.")
|
| 238 |
+
if num_chains <= 0:
|
| 239 |
+
raise ValueError("num_chains must be a positive integer.")
|
| 240 |
+
if num_cores <= 0:
|
| 241 |
+
raise ValueError("num_cores must be a positive integer.")
|
| 242 |
+
if delta_a <= 0 or delta_b <= 0:
|
| 243 |
+
raise ValueError("Delta parameters (delta_a, delta_b) must be positive.")
|
| 244 |
+
if gamma <= 0 or beta <= 0:
|
| 245 |
+
raise ValueError("Gamma and Beta parameters must be positive.")
|
| 246 |
+
|
| 247 |
+
# --- File and Path Handling ---
|
| 248 |
+
output_dir = Path(output_prefix).parent
|
| 249 |
+
output_dir.mkdir(parents=True, exist_ok=True)
|
| 250 |
+
|
| 251 |
+
output_counts_path = Path(f"{output_prefix}_decontPro_counts.csv")
|
| 252 |
+
output_contamination_path = Path(f"{output_prefix}_decontPro_contamination.csv")
|
| 253 |
+
|
| 254 |
+
with tempfile.TemporaryDirectory() as temp_dir:
|
| 255 |
+
script_path = Path(temp_dir) / "run_decontpro.R"
|
| 256 |
+
|
| 257 |
+
# --- R Script Generation ---
|
| 258 |
+
z_r = f'"{z.resolve()}"' if z else "NULL"
|
| 259 |
+
batch_r = f'"{batch.resolve()}"' if batch else "NULL"
|
| 260 |
+
logfile_r = f'"{logfile.resolve()}"' if logfile else "NULL"
|
| 261 |
+
verbose_r = "TRUE" if verbose else "FALSE"
|
| 262 |
+
|
| 263 |
+
r_script = f"""
|
| 264 |
+
library(decontX)
|
| 265 |
+
library(SingleCellExperiment)
|
| 266 |
+
library(Matrix)
|
| 267 |
+
|
| 268 |
+
counts <- as.matrix(read.csv("{x.resolve()}", row.names=1, check.names=FALSE))
|
| 269 |
+
|
| 270 |
+
z_data <- if (!is.null({z_r})) read.csv({z_r}, header=FALSE, stringsAsFactors=TRUE)$V1 else NULL
|
| 271 |
+
batch_data <- if (!is.null({batch_r})) read.csv({batch_r}, header=FALSE, stringsAsFactors=TRUE)$V1 else NULL
|
| 272 |
+
|
| 273 |
+
sce <- SingleCellExperiment(assays = list(counts = counts))
|
| 274 |
+
|
| 275 |
+
set.seed({seed})
|
| 276 |
+
sce <- decontPro(
|
| 277 |
+
x = sce,
|
| 278 |
+
z = z_data,
|
| 279 |
+
batch = batch_data,
|
| 280 |
+
maxIter = {max_iter},
|
| 281 |
+
delta = c({delta_a}, {delta_b}),
|
| 282 |
+
gamma = {gamma},
|
| 283 |
+
beta = {beta},
|
| 284 |
+
numChains = {num_chains},
|
| 285 |
+
numCores = {num_cores},
|
| 286 |
+
logfile = {logfile_r},
|
| 287 |
+
verbose = {verbose_r}
|
| 288 |
+
)
|
| 289 |
+
|
| 290 |
+
decontaminated_counts <- metadata(sce)$decontPro$decontPro_counts
|
| 291 |
+
contamination_scores <- colData(sce)$decontPro_contamination
|
| 292 |
+
results_df <- data.frame(contamination = contamination_scores, row.names = colnames(sce))
|
| 293 |
+
|
| 294 |
+
write.csv(as.matrix(decontaminated_counts), file="{output_counts_path.resolve()}", row.names=TRUE)
|
| 295 |
+
write.csv(results_df, file="{output_contamination_path.resolve()}", row.names=TRUE)
|
| 296 |
+
"""
|
| 297 |
+
|
| 298 |
+
with open(script_path, "w") as f:
|
| 299 |
+
f.write(r_script)
|
| 300 |
+
|
| 301 |
+
# --- Subprocess Execution ---
|
| 302 |
+
command = ["Rscript", str(script_path)]
|
| 303 |
+
command_str = " ".join(map(str, command))
|
| 304 |
+
|
| 305 |
+
try:
|
| 306 |
+
result = subprocess.run(
|
| 307 |
+
command,
|
| 308 |
+
capture_output=True,
|
| 309 |
+
text=True,
|
| 310 |
+
check=True,
|
| 311 |
+
)
|
| 312 |
+
|
| 313 |
+
output_files = [
|
| 314 |
+
str(output_counts_path),
|
| 315 |
+
str(output_contamination_path)
|
| 316 |
+
]
|
| 317 |
+
|
| 318 |
+
return {
|
| 319 |
+
"command_executed": command_str,
|
| 320 |
+
"stdout": result.stdout,
|
| 321 |
+
"stderr": result.stderr,
|
| 322 |
+
"output_files": output_files
|
| 323 |
+
}
|
| 324 |
+
except subprocess.CalledProcessError as e:
|
| 325 |
+
return {
|
| 326 |
+
"command_executed": command_str,
|
| 327 |
+
"stdout": e.stdout,
|
| 328 |
+
"stderr": e.stderr,
|
| 329 |
+
"error": "DecontPro execution failed.",
|
| 330 |
+
"return_code": e.returncode
|
| 331 |
+
}
|
| 332 |
+
|
| 333 |
+
if __name__ == "__main__":
|
| 334 |
+
mcp.run(transport="stdio")
|
Biomni/mcp_generated/mcp_bioconductor-decontx/app/bioconductor-decontx_shim_server.py
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
from __future__ import annotations
|
| 3 |
+
|
| 4 |
+
import ast
|
| 5 |
+
from pathlib import Path
|
| 6 |
+
|
| 7 |
+
from mcp.server.fastmcp import FastMCP
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
SOURCE_SERVER = Path('/225040511/project/BioScientist/agent_system/toolbase/mcp_batch_from_manual_txt/mcp_bioconductor-decontx/app/bioconductor-decontx_server.py')
|
| 11 |
+
LOCAL_SERVER = Path(__file__).with_name(SOURCE_SERVER.name)
|
| 12 |
+
SERVER_NAME = 'biosci_bioconductor_decontx'
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
class _ShimMCP:
|
| 16 |
+
@staticmethod
|
| 17 |
+
def tool(*args, **kwargs):
|
| 18 |
+
if args and callable(args[0]) and len(args) == 1 and not kwargs:
|
| 19 |
+
return args[0]
|
| 20 |
+
def _decorator(fn):
|
| 21 |
+
return fn
|
| 22 |
+
return _decorator
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
def _resolve_source_server():
|
| 26 |
+
if LOCAL_SERVER.exists() and LOCAL_SERVER.name != Path(__file__).name:
|
| 27 |
+
return LOCAL_SERVER
|
| 28 |
+
return SOURCE_SERVER
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
def _load_functions():
|
| 32 |
+
source_server = _resolve_source_server()
|
| 33 |
+
code = source_server.read_text(encoding="utf-8")
|
| 34 |
+
tree = ast.parse(code, filename=str(source_server))
|
| 35 |
+
function_names = [n.name for n in tree.body if isinstance(n, ast.FunctionDef) and not n.name.startswith("_")]
|
| 36 |
+
namespace = {
|
| 37 |
+
"__name__": "__mcp_source__",
|
| 38 |
+
"mcp": _ShimMCP(),
|
| 39 |
+
}
|
| 40 |
+
exec(compile(code, str(source_server), "exec"), namespace, namespace)
|
| 41 |
+
loaded = []
|
| 42 |
+
for name in function_names:
|
| 43 |
+
fn = namespace.get(name)
|
| 44 |
+
if callable(fn):
|
| 45 |
+
loaded.append(fn)
|
| 46 |
+
return loaded
|
| 47 |
+
|
| 48 |
+
|
| 49 |
+
mcp = FastMCP(SERVER_NAME)
|
| 50 |
+
for _fn in _load_functions():
|
| 51 |
+
mcp.tool()(_fn)
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
if __name__ == "__main__":
|
| 55 |
+
mcp.run(transport="stdio")
|
Biomni/mcp_generated/mcp_bioconductor-decontx/docker-compose.yml
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version: '3.8'
|
| 2 |
+
|
| 3 |
+
services:
|
| 4 |
+
mcp-bioconductor-decontx:
|
| 5 |
+
build: .
|
| 6 |
+
image: mcp-bioconductor-decontx:latest
|
| 7 |
+
container_name: mcp-bioconductor-decontx
|
| 8 |
+
ports:
|
| 9 |
+
- "8000:8000"
|
| 10 |
+
environment:
|
| 11 |
+
- MCP_SERVER_NAME=bioconductor-decontx
|
| 12 |
+
volumes:
|
| 13 |
+
- ./workspace:/app/workspace
|
| 14 |
+
- ./output:/app/output
|
| 15 |
+
restart: unless-stopped
|
| 16 |
+
healthcheck:
|
| 17 |
+
test: ["CMD", "python", "-c", "import sys; sys.exit(0)"]
|
| 18 |
+
interval: 30s
|
| 19 |
+
timeout: 10s
|
| 20 |
+
retries: 3
|
| 21 |
+
start_period: 5s
|
| 22 |
+
|