File size: 8,359 Bytes
85dc852 06c47a8 cc11c67 06c47a8 a8632c0 06c47a8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
---
license: mit
---
<p align="center">
<img src = "https://raw.githubusercontent.com/DevoLearn/devolearn/master/images/banner_1.jpg">
</p>

[](https://codecov.io/gh/DevoLearn/devolearn)
[](https://github.com/DevoLearn/devolearn/issues)
[](https://github.com/DevoLearn/devolearn/graphs/contributors)
[](https://github.com/DevoLearn/devolearn/commits/master)
[](https://openworm.slack.com/archives/CMVFU7Q4W)
[](https://colab.research.google.com/github/DevoLearn/data-science-demos/blob/master/devolearn_docs/devolearn_quickstart.ipynb)
## Contents
* [Example notebooks](https://github.com/DevoLearn/devolearn#example-notebooks)
* [Segmenting the C. elegans embryo](https://github.com/DevoLearn/devolearn#segmenting-the-c-elegans-embryo)
* [Generating synthetic images of embryos with a GAN](https://github.com/DevoLearn/devolearn#generating-synthetic-images-of-embryos-with-a-pre-trained-gan)
* [Predicting populations of cells within the C. elegans embryo](https://github.com/DevoLearn/devolearn#predicting-populations-of-cells-within-the-c-elegans-embryo)
* [Contributing to DevoLearn](https://github.com/DevoLearn/devolearn/blob/master/.github/contributing.md#contributing-to-devolearn)
* [Links to datasets](https://github.com/DevoLearn/devolearn#links-to-datasets)
* [Contact us](https://github.com/DevoLearn/devolearn#authorsmaintainers)
### Installation
```python
pip install devolearn
```
### Example notebooks
<p align="center">
<img src = "https://raw.githubusercontent.com/DevoLearn/data-science-demos/master/Networks/nodes_matrix_long_smooth.gif" width = "40%">
<img src = "https://raw.githubusercontent.com/DevoLearn/data-science-demos/master/Networks/3d_node_map.gif" width = "40%">
</p>
* [Extracting centroid maps and making 3d centroid models](https://nbviewer.jupyter.org/github/DevoLearn/data-science-demos/blob/master/Networks/experiments_with_devolearn_node_maps.ipynb)
### Segmenting the Cell Membrane in C. elegans embryo
<p align="center">
<img src = "https://raw.githubusercontent.com/DevoLearn/devolearn/master/images/pred_centroids.gif" width = "80%">
</p>
* Importing the model
```python
from devolearn import cell_membrane_segmentor
segmentor = cell_membrane_segmentor()
```
* Running the model on an image and viewing the prediction
```python
seg_pred = segmentor.predict(image_path = "sample_data/images/seg_sample.jpg")
plt.imshow(seg_pred)
plt.show()
```
* Running the model on a video and saving the predictions into a folder
```python
filenames = segmentor.predict_from_video(video_path = "sample_data/videos/seg_sample.mov", centroid_mode = False, save_folder = "preds")
```
* Finding the centroids of the segmented features
```python
seg_pred, centroids = segmentor.predict(image_path = "sample_data/images/seg_sample.jpg", centroid_mode = True)
plt.imshow(seg_pred)
plt.show()
```
* Saving the centroids from each frame into a CSV
```python
df = segmentor.predict_from_video(video_path = "sample_data/videos/seg_sample.mov", centroid_mode = True, save_folder = "preds")
df.to_csv("centroids.csv")
```
### Segmenting the Cell Nucleus in C. elegans embryo
<p align="center">
<img src='https://huggingface.co/devoworm-group/Devolearn/resolve/main/images/nucleus_segmentation.gif' width = "60%">
</p>
* Importing the model
```python
from devolearn import cell_nucleus_segmentor
segmentor = cell_nucleus_segmentor()
```
* Running the model on an image and viewing the prediction
```python
seg_pred = segmentor.predict(image_path = "sample_data/images/nucleus_seg_sample.jpg")
plt.imshow(seg_pred)
plt.show()
```
### Generating synthetic images of embryos with a Pre-trained GAN
<p align="center">
<img src = "https://raw.githubusercontent.com/devoworm/GSoC-2020/master/Pre-trained%20Models%20(DevLearning)/images/generated_embryos_3.gif" width = "30%">
</p>
* Importing the model
```python
from devolearn import Generator, embryo_generator_model
generator = embryo_generator_model()
```
* Generating a picture and viewing it with [matplotlib](https://matplotlib.org/)
```python
gen_image = generator.generate()
plt.imshow(gen_image)
plt.show()
```
* Generating n images and saving them into `foldername` with a custom size
```python
generator.generate_n_images(n = 5, foldername= "generated_images", image_size= (700,500))
```
---
### Predicting populations of cells within the C. elegans embryo
<p align="center">
<img src = "https://raw.githubusercontent.com/devoworm/GSoC-2020/master/Pre-trained%20Models%20(DevLearning)/images/resnet_preds_with_input.gif" width = "60%">
</p>
* Importing the population model for inferences
```python
from devolearn import lineage_population_model
```
* Loading a model instance to be used to estimate lineage populations of embryos from videos/photos.
```python
model = lineage_population_model(device = "cpu")
```
* Making a prediction from an image
```python
print(model.predict(image_path = "sample_data/images/embryo_sample.png"))
```
* Making predictions from a video and saving the predictions into a CSV file
```python
results = model.predict_from_video(video_path = "sample_data/videos/embryo_timelapse.mov", save_csv = True, csv_name = "video_preds.csv", ignore_first_n_frames= 10, ignore_last_n_frames= 10, postprocess = False)
```
* Plotting the model's predictions from a video
```python
plot = model.create_population_plot_from_video(video_path = "sample_data/videos/embryo_timelapse.mov", save_plot= True, plot_name= "plot.png", ignore_last_n_frames= 0, postprocess = False)
plot.show()
```
## Links to Datasets
| **Model** | **Data source** |
|-------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Segmenting the cell membrane in C. elegans embryo | [3DMMS: robust 3D Membrane Morphological Segmentation of C. elegans embryo](https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-019-2720-x#Abs1/) |
| Segmenting the nucleus in C. elegans embryo | [C. elegans Cell-Tracking-Challenge dataset](http://celltrackingchallenge.net/3d-datasets/)
| Cell lineage population prediction + embryo GAN | [EPIC dataset](https://epic.gs.washington.edu/)
## Links to HuggingFace spaces
| **Model** | **Huggingface** |
|-------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Segmenting the cell membrane in C. elegans embryo | [Cell Membrane segmentor](https://huggingface.co/spaces/devoworm-group/membrane_segmentation) |
| Segmenting the nucleus in C. elegans embryo | [C. elegans Nucleus segmentor](https://huggingface.co/spaces/devoworm-group/nucleus_segmentor)
| Cell lineage population prediction | [Lineage population](https://huggingface.co/spaces/devoworm-group/Lineage_Population)
## Authors/maintainers:
* [Mayukh Deb](https://twitter.com/mayukh091)
* [Ujjwal Singh](https://twitter.com/ujjjwalll)
* [Dr. Bradly Alicea](https://twitter.com/balicea1)
Feel free to join our [Slack workspace](https://openworm.slack.com/archives/CMVFU7Q4W)!
|