Senior Staff Software Engineer - Algorithm

IDEXX   •  

Westbrook, ME

Industry: Pharmaceuticals & Biotech


Not Specified years

Posted 41 days ago

This job is no longer available.

As the Sr. Staff Software Engineer - Algorithm, you will participate in designing innovative instruments for veterinary medicine by developing algorithms for inline processing of signal and image data, and integrating them into systems for evaluating in-clinic hematology, immunoassay, blood chemistry, and other applications.

Duties and Responsibilities:

  • Use mathematical techniques and machine learning to discover, design, implement, and test novel algorithms to:
  • interpret image data to count, classify/label, and characterize objects (segmentation, feature analysis, morphological operations, classification, cluster analysis, optimization, computational geometry, convolutional neural networks)
  • convert instrument-acquired colorimetric assay data into meaningful results (curve fitting, root finding, iterative optimization methods, linear algebra, physical and empirical modeling)
  • generate insights from large image and signal datasets using dimensionality reduction algorithms (t-SNE, PCA), unsupervised learning techniques (Generative Adversarial Models, unsupervised clustering) and web-based visualization technologies
  • process time-series signals (FIR/IIR filters, Kalman filters, adaptive filtering, recurrent neural networks)
  • classify and fuse data from multiple sensors using Bayesian methods
  • Collaborate with stakeholders to define training and test datasets and annotation procedures
  • Apply machine learning and data hygiene practices to ensure acceptable model performance (cross-validation, boosting, bagging, regularization, generalization error analysis, model selection)
  • Create, analyze, design, and implement algorithms in C++, Python, and possibly other languages, on diverse processing platforms including GPUs, embedded processors and FPGAs
  • Support development of tools for algorithm verification and validation
  • Support and enhance existing instrument and system software; specifies, implements, and tests modifications to existing code
  • Follow defined software development practices and procedures
  • Configuration management (IDE, toolchain, build system, code repository)
  • Peer review (requirements, design, code, testing)
  • Documentation (designs, release notes)



B.S., M.S., or Ph.D. in Mathematics/Applied Mathematics, Physics/Applied Physics, or Computer Science/Electrical Engineering. Qualified applicants with other areas of specialization (e.g., biomedical engineering or optics) or experience will be considered.


Required Skills and Abilities:

  • Image processing and analysis
  • working knowledge of basic principles of optics and image acquisition (sensor types and properties, illumination, aberrations, resolution, noise, focus, depth-of-field, radiometry, spectrometry, etc.)
  • standard image processing techniques (contrast enhancement, adaptive thresholding, background subtraction, morphological operations, filters, kernels, transforms, edge and feature detection, denoising, template matching, pattern recognition, segmentation, etc.)
  • desired experience with images from optical (bright-field, dark-field, fluorescence) microscopy, preferably cell imaging, labeling, and/or identification (hematology, histology, oncology, etc.)
  • desired experience with radiograph, ultrasound, or ECG images and signals
  • Machine learning
  • experience with convolutional neural networks, deep learning, generative adversarial models, linear models, decision trees, and Bayesian methods for regression and classification
  • experience applying regularization techniques (weight decay, dropout and other penalties)
  • understanding of generalization error and interpretation of learning curves (cross-validation, data snooping, training\test set splits)
  • ensembling and meta-modeling techniques (boosting, bagging, stacking)
  • unsupervised learning techniques for pattern discovery (clustering algorithms, generative models)
  • Numerical and statistical methods for data analysis
  • root finding, curve and surface fitting, smoothing, splines
  • numerical analysis (computational linear algebra, stability of iterative methods)
  • mathematical optimization techniques (stochastic gradient descent, Nelder-Mead, Newton and quasi-Newton methods, unconstrained and constrained optimization, simulated annealing, etc.)
  • statistics (analysis of variance, hypothesis testing, sensitivity/specificity, receiver operating characteristic, statistical process control, measurement system analysis, design of experiments)
  • Other desired skills/experience
  • data acquisition (precision vs. accuracy, sensor noise and resolution, feedback and control, A/D conversion, signal processing/conditioning, error analysis, standardization and calibration)
  • optimizing algorithm performance (sensitivity/specificity as well as execution time)
  • use of Tensorflow (or other ML frameworks), OpenCV, and rapid application development in Python
  • familiarity with git version control and Docker containers
  • experience implementing algorithms on FPGAs, embedded processors, and GPUs
  • Development experience with C++ or Python, and Linux-based development platforms
  • To read, understand, debug, extend, and maintain existing C++ or Python source code
  • To specify modifications to existing software, and implement and test them
  • To understand software requirements and be able to translate them to design
  • Ability to understand UML specifications of software design elements
  • To be fluent in use of Microsoft desktop environment and tools (Word, PowerPoint, Excel)
  • To understand and design algorithms, and to implement and test them
  • To communicate effectively, both in writing and orally, complex technical information at the appropriate level with other team members, internal customers, and review boards