Git Product home page Git Product logo

pacman's Introduction

PACMan

An chlorophyll-a fluorometry automation software designed for Walz (GMBH) Microscopy IPAM.

Confirmed to be compliant with V 2.51d of Imaging-Win Confirmed to be compliant with PRIOR ProScan III controller

PACKAGE REQUIREMENTS:

pyserial opencv comtypes ctypes numpy matplotlib skimage tkinter/ttk

REQUIREMENTS

  • ImagingWin v2.51 (see Installing ImagingWin)
  • Python 3.9
  • Pip
  • Windows 7/8/10

Installation of ImagingWin 2.51

  • Windows 10: The remote control functionality is only enabled in specifically the v 2.51 exe version of the ImagingWin program. Due to this and ImagingWin supporting Windows 10 only on version >=2.56 the following steps must be taken to allow for remote control on Windows 10 systems: Install ImagingWin =2.56 as usual from Walz IMAGING-PAM download site (https://www.walz.com/products/chl_p700/imaging-pam_ms/downloads.html). After installation: Make copy of the ImagingWin.exe file located in the installation folder. Overwrite the ImagingWin.exe in the installation folder with the v 2.51 exe provided with PACMan.

Installation and use of PACMan

  • Install correct version of ImagingWin as above
  • Install with pip: pip install IPAM-PACMan

In your python IDE of choice:

  • import pacman
  • PacMan_instance = pacman.PacMan() This starts PacMan with the GUI turned on, in standard mode. To start PacMan in CLI mode:
  • PacMan_instance = pacman.PacMan(False)

To start PacMan in Debug mode:

  • PacMan_instance = pacman.PacMan(True/False,True)

To change PACsettings write pacman.open_settings()

Version history

v 1.0rc 19/03/2023

  • Release Candidate
  • Test installation performed
  • Bug fixes

v 0.9.7 27/02/2023

  • Technical Debt
    • Cleaning upp and testing installation file structure
    • Bug fixes
  • Features
    • Added PACSettings.ini: A settings file to tell PACMan what features to use, pointing it to the local ImagingWin installation, default output dir etc.

v 0.9.5 25/01/2023

  • Technical debt
    • Moved paths to ensure functionality after installation
  • GUI fixes
    • Changed name of buttons to reflect functionality
  • Documentation
    • Added error messages when PACMan cannot connect to stage

v 0.9.3 22/09/2022

  • Created package

v 0.4.3 06/03/2022

  • Started adding documentation for upload
  • Cleaned up the github repository

v 0.4.2 06/12/2021

  • About page added
  • Cleaned up code slightly

v 0.4 15/11/2021 -Platform independent setup created -Execute acquistion moved into main class -Boilerplate code for stage communicator added

v 0.4 17/08/21

  • Position list saving added into main
  • Command queuing added
  • More options for autofocus added
  • Autofocus rescaled

v 0.3 3/07/2021

  • Direct serial communication added
  • Position list saving added (debug mode)

v 0.2.5 06/2022

  • Tabs added to GUI. Main/Autofocus/position
  • Position list added

v 0.2 05/2022 Autofocus implemented

v 0.1 04/2022 Basic functionality

Copyright (C) 2022 Olle Pontén

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/. Contact: [email protected]

pacman's People

Contributors

olleponten avatar

Watchers

 avatar

pacman's Issues

Coordinate System settings of modules

As a Operator and Developer
I need the settings of the modules to be modifiable outside of source code. This should be accomplished via PACMan loading a settings file from a local directory.
So that I can add to or update the specifications of the software when neeeded

Details and Assumptions

  • [assumptions]

Acceptance Criteria

Given a set of system parameters
When PACMan is started
Then the system parameters are applied to all modules.

Automatic Z position for XY arrays

As a Operator
I need to be able to create arrays of XY coordinates that can be easily applied to new experiments with relative coordinates.
So that experiments are reproducible and I don't have to manually set coordinates each time

Details and Assumptions

  • PACMan can read in position lists
  • XY coordinates can be created and read easily
  • Z coordinates will differ across setups
  • The correct Z coordinate of any given XY coordinate can be determined by a 4 point mapping of correct Z coordinates (the focal plane is a plane, not a saddle).

Acceptance Criteria

Given I have a list of XY coordinates
And I have created a Z focal plane
When I load the list of XY coordinates
Then the correct Z coordinate for each of these coordinates is added to them.

Create separate window for logging

As a Operator and Developer
I need the experimental log to be in a separate location from the main window
So that it is more visible and easily readable.

Details and Assumptions

  • Should have scrolling implemented

Acceptance Criteria

Given PACMan is running
When a loggable action is performed
Then the logged message should show up in a separate location which is easily findable
And the logged message should be findable later by operators without needing to open the log.txt file.

Create dropdown menu for serial commands

As a Operator
I need the target of a serial command to be specified in a drop-down menu.
So that the syntax is simplified and the commands easier to be sent.

Details and Assumptions

  • Commands are currently entered in a string format in GUI

Acceptance Criteria

Given a user has specified a command and a target via a drop-down menu
When "Send Command" button is pressed
Then that command is correctly executed or queued.

Create Z plane based on n positions

As a Developer
I need to be able to create a Z plane based on n XYZ positions
So that correct Z positions can be automatically calculated for any given XY positions

Details and Assumptions

  • The correct Z positions for ALL XY positions can be estimated with reasonable accuracy with a plane
  • A Z-plane can be created based on n>3 positions
  • The operator can correctly estimate the correct Z plane for these positions
  • For optimal accuracy these positions needs to be positioned far apart.

Acceptance Criteria

Given n>3 positions
When Create Z-plane button is clicked
Then a Z-plane is created which can be applied to any XY or XYZ (overwrite Z) list of positions.

Settings file for PACMan

As a Administrator and Operator
I need to be able to specify installation and system specific parameters for PACMan in a file
So that PACMan is less dependent on user knowledge, less prone to crashing and so that settings can be kept between program restarts.

Details and Assumptions

  • Should include the ImagingWin path
  • Should include a list of connected components and their communication ports
  • Should either build itself or the user should build it during initial start
  • Could include subsettings for modules; movement parameters for stage e.g.

Acceptance Criteria

Given a file specifying system/instrument parameters
When PACMan is started
Then it will load this settings file and use the parameters within for subsequent runs.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.