Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@
*pycache*
.DS_Store
*.pyc
venv/*
venv/*
.vscode
8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ On a typical Windows, Mac, or Linux computer:
* Create a conda environment: `conda create --name multisero python=3.7`
* Activate conda environment: `conda activate multisero`
* Pip install dependencies: `pip install -r requirements.txt`
* Add the package to PYTHONPATH. Inside the package directory (...\serology-COVID19), do: `export PYTHONPATH=$PYTHONPATH:$(pwd)`
* If operating from CLI, add the package to PYTHONPATH by navigating to package directory (eg: ...\serology-COVID19), and type `export PYTHONPATH=$PYTHONPATH:$(pwd)`

For installation notes for Jetson Nano, see [these notes](docs/installation.md).

Expand Down Expand Up @@ -47,10 +47,12 @@ optional arguments:
-m METADATA, --metadata METADATA
specify the file name for the experiment metadata.
Assumed to be in the same directory as images.
Default: 'multisero_output_data_metadata.xlsx'
Default: 'multisero_output_data_metadata.xlsx', therefore
metadata flag is NOT necessary when running in -e mode IF
metadata file has the default filename.
```
### Extract OD from antigen array images
`python multisero.py -e -i <input> -o <output> -m <METADATA>` will take metadata for antigen array and images as input, and output optical densities for each antigen.
`python multisero.py -e -i <input> -o <output>` will take metadata for antigen array and images as input, and output optical densities for each antigen.
The optical densities are stored in an excel file at the following path: `<output>/multisero_<input>_<year><month><day>_<hour><min>/median_ODs.xlsx`

If rerunning some of the wells, the input metadata file needs to contain a sheet named 'rerun_wells'
Expand Down
160 changes: 0 additions & 160 deletions interpretation/od_analyzer.py

This file was deleted.

File renamed without changes.
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from skimage import measure

from .img_processing import thresh_and_binarize
from array_analyzer.transform.point_registration import icp
from multiSero.array_analyzer.transform.point_registration import icp

"""
method is
Expand Down Expand Up @@ -338,7 +338,7 @@ def find_fiducials_markers(props_,
return cent_map


def grid_from_centroids(props_, n_rows, n_cols, grid_spacing=82):
def grid_from_centroids(props_, n_rows, n_cols, grid_spacing=90):
"""
based on the region props, creates a dictionary of format:
key = (centroid_x, centroid_y)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import pandas as pd
import shutil

import array_analyzer.extract.txt_parser as txt_parser
import array_analyzer.extract.constants as constants
import multiSero.array_analyzer.extract.txt_parser as txt_parser
import multiSero.array_analyzer.extract.constants as constants


class MetaData:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
import pandas as pd
import math

import array_analyzer.extract.constants as constants

"""
functions like "create_<extension>_dict" parse files of <extension> and return:
fiduc: list of dict describing fiducial positions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import os
import pandas as pd

import array_analyzer.extract.constants as constants
import multiSero.array_analyzer.extract.constants as constants


class ReportWriter:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
import numpy as np
import pandas as pd

import array_analyzer.extract.constants as constants
import array_analyzer.extract.img_processing as img_processing
import array_analyzer.extract.txt_parser as txt_parser
import array_analyzer.utils.spot_regionprop as regionprop
import multiSero.array_analyzer.extract.constants as constants
import multiSero.array_analyzer.extract.img_processing as img_processing
import multiSero.array_analyzer.extract.txt_parser as txt_parser
import multiSero.array_analyzer.utils.spot_regionprop as regionprop


def build_centroid_binary_blocks(cent_list, image_, params_, return_type='region'):
Expand Down Expand Up @@ -59,7 +59,7 @@ def build_centroid_binary_blocks(cent_list, image_, params_, return_type='region
return target


def get_spot_intensity(coords, im, background, search_range=3):
def get_spot_intensity(coords, im, background, search_range=2):
"""
Extract signal and background intensity at each spot given the spot coordinate
with the following steps:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import logging
import numpy as np

import array_analyzer.extract.constants as constants
import multiSero.array_analyzer.extract.constants as constants


def icp(source, target, max_iterate=50, matrix_diff=1.):
Expand Down Expand Up @@ -166,10 +166,12 @@ def get_translation_matrix(particle):
b = particle[3] * np.sin(particle[2] * np.pi / 180)
t_matrix = np.array([[a, b, particle[0]],
[-b, a, particle[1]]])
#t_matrix = np.array([[0, 0, particle[0]],
#[0, 0, particle[1]]])
return t_matrix

def particle_filter(self,
max_iter=100,
max_iter=1000,
stop_criteria=.1,
iter_decrease=.8,
nbr_outliers=0):
Expand Down Expand Up @@ -256,6 +258,7 @@ def particle_filter(self,
self.registered_dist = min_dist / (self.fiducial_coords.shape[0] - nbr_outliers)
self.logger.info("Particle filter min dist: {}".format(self.registered_dist))
if self.registered_dist > constants.REG_DIST_THRESH:
#if self.registered_dist > 300:
self.registration_ok = False
else:
self.registration_ok = True
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from skimage import measure
from skimage.morphology import disk

import array_analyzer.extract.constants as constants
import multiSero.array_analyzer.extract.constants as constants


class SpotRegionprop:
Expand Down
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@
import pandas as pd
import skimage.io as io

import array_analyzer.extract.image_parser as image_parser
import array_analyzer.extract.txt_parser as txt_parser
import array_analyzer.extract.img_processing as img_processing
import array_analyzer.load.debug_plots as debug_plots
import array_analyzer.load.report as report
import array_analyzer.extract.constants as constants
import array_analyzer.transform.array_generation as array_gen
import array_analyzer.extract.background_estimator as background_estimator
import array_analyzer.utils.io_utils as io_utils
from array_analyzer.extract.metadata import MetaData
import multiSero.array_analyzer.extract.image_parser as image_parser
import multiSero.array_analyzer.extract.txt_parser as txt_parser
import multiSero.array_analyzer.extract.img_processing as img_processing
import multiSero.array_analyzer.load.debug_plots as debug_plots
import multiSero.array_analyzer.load.report as report
import multiSero.array_analyzer.extract.constants as constants
import multiSero.array_analyzer.transform.array_generation as array_gen
import multiSero.array_analyzer.extract.background_estimator as background_estimator
import multiSero.array_analyzer.utils.io_utils as io_utils
from multiSero.array_analyzer.extract.metadata import MetaData


def interp(input_dir, output_dir):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,18 @@
import cv2 as cv
import logging
import numpy as np
import os
import pandas as pd
import time

import array_analyzer.extract.background_estimator as background_estimator
import array_analyzer.extract.image_parser as image_parser
import array_analyzer.extract.img_processing as img_processing
import array_analyzer.extract.metadata as metadata
import array_analyzer.extract.txt_parser as txt_parser
import array_analyzer.extract.constants as constants
import array_analyzer.load.debug_plots as debug_plots
import array_analyzer.load.report as report
import array_analyzer.transform.point_registration as registration
import array_analyzer.transform.array_generation as array_gen
import array_analyzer.utils.io_utils as io_utils
import multiSero.array_analyzer.extract.background_estimator as background_estimator
import multiSero.array_analyzer.extract.img_processing as img_processing
import multiSero.array_analyzer.extract.metadata as metadata
import multiSero.array_analyzer.extract.txt_parser as txt_parser
import multiSero.array_analyzer.extract.constants as constants
import multiSero.array_analyzer.load.debug_plots as debug_plots
import multiSero.array_analyzer.load.report as report
import multiSero.array_analyzer.transform.point_registration as registration
import multiSero.array_analyzer.transform.array_generation as array_gen
import multiSero.array_analyzer.utils.io_utils as io_utils


def point_registration(input_dir, output_dir):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import array_analyzer.extract.image_parser as image_parser
import array_analyzer.extract.img_processing as processing
import array_analyzer.extract.constants as constants
from array_analyzer.extract.metadata import MetaData
import array_analyzer.utils.io_utils as io_utils
import multiSero.array_analyzer.extract.image_parser as image_parser
import multiSero.array_analyzer.extract.img_processing as processing
import multiSero.array_analyzer.extract.constants as constants
from multiSero.array_analyzer.extract.metadata import MetaData
import multiSero.array_analyzer.utils.io_utils as io_utils

import time
import skimage.io as io
import pandas as pd
import string
import os
import re
import numpy as np


Expand Down
Loading