|
|
|
# `gradio_cofoldinginput` |
|
<a href="https://pypi.org/project/gradio_cofoldinginput/" target="_blank"><img alt="PyPI - Version" src="https://img.shields.io/pypi/v/gradio_cofoldinginput"></a> |
|
|
|
Component to enter protein and DNA sequences + small molecules for cofolding |
|
|
|
## Installation |
|
|
|
```bash |
|
pip install gradio_cofoldinginput |
|
``` |
|
|
|
## Usage |
|
|
|
```python |
|
|
|
import gradio as gr |
|
from gradio_cofoldinginput import CofoldingInput |
|
|
|
import json |
|
|
|
|
|
def predict(input): |
|
input = json.dumps(input) |
|
return input |
|
|
|
with gr.Blocks() as demo: |
|
inp=CofoldingInput(label="Input") |
|
|
|
# preinput = {"chains": [ |
|
# { |
|
# "class": "DNA", |
|
# "sequence": "ATGCGT", |
|
# "chain": "A" |
|
# } |
|
# ], "covMods":[] |
|
# } |
|
# inp2=CofoldingInput(preinput, label="Input prefilled") |
|
btn = gr.Button("Submit") |
|
out = gr.HTML() |
|
|
|
btn.click(predict, inputs=[inp], outputs=[out]) |
|
|
|
if __name__ == "__main__": |
|
demo.launch() |
|
|
|
``` |
|
|
|
## `CofoldingInput` |
|
|
|
### Initialization |
|
|
|
<table> |
|
<thead> |
|
<tr> |
|
<th align="left">name</th> |
|
<th align="left" style="width: 25%;">type</th> |
|
<th align="left">default</th> |
|
<th align="left">description</th> |
|
</tr> |
|
</thead> |
|
<tbody> |
|
<tr> |
|
<td align="left"><code>value</code></td> |
|
<td align="left" style="width: 25%;"> |
|
|
|
```python |
|
dict | None |
|
``` |
|
|
|
</td> |
|
<td align="left"><code>{"chains": [], "covMods": []}</code></td> |
|
<td align="left">list of items.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td align="left"><code>label</code></td> |
|
<td align="left" style="width: 25%;"> |
|
|
|
```python |
|
str | None |
|
``` |
|
|
|
</td> |
|
<td align="left"><code>None</code></td> |
|
<td align="left">The label for this component. Appears above the component and is also used as the header if there are a table of examples for this component. If None and used in a `gr.Interface`, the label will be the name of the parameter this component is assigned to.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td align="left"><code>info</code></td> |
|
<td align="left" style="width: 25%;"> |
|
|
|
```python |
|
str | None |
|
``` |
|
|
|
</td> |
|
<td align="left"><code>None</code></td> |
|
<td align="left">additional component description.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td align="left"><code>every</code></td> |
|
<td align="left" style="width: 25%;"> |
|
|
|
```python |
|
float | None |
|
``` |
|
|
|
</td> |
|
<td align="left"><code>None</code></td> |
|
<td align="left">If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td align="left"><code>show_label</code></td> |
|
<td align="left" style="width: 25%;"> |
|
|
|
```python |
|
bool | None |
|
``` |
|
|
|
</td> |
|
<td align="left"><code>None</code></td> |
|
<td align="left">if True, will display label.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td align="left"><code>container</code></td> |
|
<td align="left" style="width: 25%;"> |
|
|
|
```python |
|
bool |
|
``` |
|
|
|
</td> |
|
<td align="left"><code>True</code></td> |
|
<td align="left">If True, will place the component in a container - providing some extra padding around the border.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td align="left"><code>scale</code></td> |
|
<td align="left" style="width: 25%;"> |
|
|
|
```python |
|
int | None |
|
``` |
|
|
|
</td> |
|
<td align="left"><code>None</code></td> |
|
<td align="left">relative size compared to adjacent Components. For example if Components A and B are in a Row, and A has scale=2, and B has scale=1, A will be twice as wide as B. Should be an integer. scale applies in Rows, and to top-level Components in Blocks where fill_height=True.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td align="left"><code>min_width</code></td> |
|
<td align="left" style="width: 25%;"> |
|
|
|
```python |
|
int |
|
``` |
|
|
|
</td> |
|
<td align="left"><code>160</code></td> |
|
<td align="left">minimum pixel width, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in this Component being narrower than min_width, the min_width parameter will be respected first.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td align="left"><code>interactive</code></td> |
|
<td align="left" style="width: 25%;"> |
|
|
|
```python |
|
bool | None |
|
``` |
|
|
|
</td> |
|
<td align="left"><code>None</code></td> |
|
<td align="left">if True, will be rendered as an editable textbox; if False, editing will be disabled. If not provided, this is inferred based on whether the component is used as an input or output.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td align="left"><code>visible</code></td> |
|
<td align="left" style="width: 25%;"> |
|
|
|
```python |
|
bool |
|
``` |
|
|
|
</td> |
|
<td align="left"><code>True</code></td> |
|
<td align="left">If False, component will be hidden.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td align="left"><code>elem_id</code></td> |
|
<td align="left" style="width: 25%;"> |
|
|
|
```python |
|
str | None |
|
``` |
|
|
|
</td> |
|
<td align="left"><code>None</code></td> |
|
<td align="left">An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td align="left"><code>autofocus</code></td> |
|
<td align="left" style="width: 25%;"> |
|
|
|
```python |
|
bool |
|
``` |
|
|
|
</td> |
|
<td align="left"><code>False</code></td> |
|
<td align="left">If True, will focus on the textbox when the page loads. Use this carefully, as it can cause usability issues for sighted and non-sighted users.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td align="left"><code>autoscroll</code></td> |
|
<td align="left" style="width: 25%;"> |
|
|
|
```python |
|
bool |
|
``` |
|
|
|
</td> |
|
<td align="left"><code>True</code></td> |
|
<td align="left">None</td> |
|
</tr> |
|
|
|
<tr> |
|
<td align="left"><code>elem_classes</code></td> |
|
<td align="left" style="width: 25%;"> |
|
|
|
```python |
|
list[str] | str | None |
|
``` |
|
|
|
</td> |
|
<td align="left"><code>None</code></td> |
|
<td align="left">An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td align="left"><code>render</code></td> |
|
<td align="left" style="width: 25%;"> |
|
|
|
```python |
|
bool |
|
``` |
|
|
|
</td> |
|
<td align="left"><code>True</code></td> |
|
<td align="left">If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.</td> |
|
</tr> |
|
</tbody></table> |
|
|
|
|
|
### Events |
|
|
|
| name | description | |
|
|:-----|:------------| |
|
| `change` | Triggered when the value of the CofoldingInput changes either because of user input (e.g. a user types in a textbox) OR because of a function update (e.g. an image receives a value from the output of an event trigger). See `.input()` for a listener that is only triggered by user input. | |
|
| `input` | This listener is triggered when the user changes the value of the CofoldingInput. | |
|
| `select` | Event listener for when the user selects or deselects the CofoldingInput. Uses event data gradio.SelectData to carry `value` referring to the label of the CofoldingInput, and `selected` to refer to state of the CofoldingInput. See EventData documentation on how to use this event data | |
|
| `submit` | This listener is triggered when the user presses the Enter key while the CofoldingInput is focused. | |
|
| `focus` | This listener is triggered when the CofoldingInput is focused. | |
|
| `blur` | This listener is triggered when the CofoldingInput is unfocused/blurred. | |
|
|
|
|
|
|
|
### User function |
|
|
|
The impact on the users predict function varies depending on whether the component is used as an input or output for an event (or both). |
|
|
|
- When used as an Input, the component only impacts the input signature of the user function. |
|
- When used as an output, the component only impacts the return signature of the user function. |
|
|
|
The code snippet below is accurate in cases where the component is used as both an input and an output. |
|
|
|
- **As input:** Should return, expects a {str} returned from function and sets textarea value to it. |
|
|
|
```python |
|
def predict( |
|
value: Unknown |
|
) -> dict | None: |
|
return value |
|
``` |
|
|
|
|