Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Layout Database for CHIME Outriggers #11

Open
pboyle-mcgill opened this issue Feb 16, 2021 · 23 comments
Open

Layout Database for CHIME Outriggers #11

pboyle-mcgill opened this issue Feb 16, 2021 · 23 comments
Assignees

Comments

@pboyle-mcgill
Copy link

pboyle-mcgill commented Feb 16, 2021

Useful existing code bases:

Scanner that was used by Kiyo:

HONEYWELL, VOYAGER 1400G, USB SCANNER KIT, OMNI-DIRECTIONAL, 1D, BLACK, USB TYPE A 11.5M STRAIGHT CA (pandemic/legacy model) Kiyo paid $160 CAD, but $250 CAD is reasonable.

In doc_assembly:

Suggestion from Kiyo: In the field, you break a USB to mini USB adapter about once an hour… so buy lots of them.

@pboyle-mcgill
Copy link
Author

pboyle-mcgill commented Feb 16, 2021

Running Order;

  • Aaron access to chime-experiment github.
  • Call meeting with Mandana to discuss how to get started, agree on naming convention, Allenby team member responsibility.
  • Aaron to call a meeting with Adam to discuss the ch_util interface and how it is used.
  • Aaron to present an overall plan on the ODWG.

Deliverables

  • Overall Naming convention.
  • Layout DB for three Outrigger sites.
  • Bug fixes for adding data, CHIME components ++.
  • Interface with ch_util and ODWG team.

Inputs

  • Python interface.
  • PHP Web interface.
  • Barcode scanning.

Purchasing:

  • Bar code scanner [e.g. HONEYWELL, VOYAGER 1400G, USB SCANNER KIT, OMNI-DIRECTIONAL, 1D, BLACK, USB TYPE A 11.5M STRAIGHT CA (pandemic/legacy model)]
  • Bar code printer [for printing mock bar codes on pieces of paper]

@pboyle-mcgill
Copy link
Author

CHIME LNA Rev C Allenby
Rev: C3
Quantity: 139 (1 of 140 was damaged in production)
Date: Oct 2020
SN: LNA2522C to LNA2661C
PCBs by Enigma
Assembly: Dorigo

@aaronpearlman
Copy link
Contributor

aaronpearlman commented Jun 18, 2021

Update: New python backend for adding, modifying, and connecting components in the layout db is done.

In progress: Working on developing a local database (in python) that will be used to capture components at the site, which will later be uploaded to the layout db (with "connexions") using the new python backend that I've developed.

#TODO: Barcode scanning not yet implemented. We'll implement that capability as a user-input protocol within the local database.

@aaronpearlman
Copy link
Contributor

aaronpearlman commented Jun 18, 2021

My current (on-going) implementation plan for the local db (in progress):

  • # TODO: Create initial database (use a dictionary, store in JSON file).
  • # TODO: Each entry in the database should have all of the fields in the layout db (serial number, component, rev type, properties, availability, history, document, connexions).
  • # TODO: Connexions in layout db are not directional, so we can store a list of ALL connexions for EACH component.
  • # TODO: Permanent and non-permanent connexions are possible. Trivial to implement this capability (use a flag).
  • # TODO: Querying capability from the local database.
  • # TODO: Add/delete capabilities from the local database.
  • # TODO: Barcode scanning capabilities.
  • # TODO: Text-to-speech capability (e.g., to let the user verify that they scanned the correct part).
  • # TODO: Compare to schema/layout design provided by Allenby team (implement logic, if desired, to avoid mistakes using scanner).
  • # TODO: Write database to a file (JSON), for storage.
  • # TODO: Once database is filled out, then write a script to automatically populate the layout db by parsing the local db. We can modify components individually later, if there are updates, using the new python backend.

Comments & suggestions appreciated!

@aaronpearlman
Copy link
Contributor

Question: Will the Allenby team provide a list of part numbers, component types, and revisions for their outrigger site? This information will be needed for the local database.

@mondana
Copy link
Contributor

mondana commented Jun 18, 2021

There is a list of components (e.g. LNA, FLA, cables, etc) that are barcoded and there are some that are not (e.g. vestibule cables). We can provide a list. There are also things that are "virtual". for example a focal-line cassette position. Some components are already entered in the database.

@mondana
Copy link
Contributor

mondana commented Jun 18, 2021

are you planning to replicate the database? I thought the decision (at some point in time?!?!) was to keep one global database.

@mondana
Copy link
Contributor

mondana commented Jun 18, 2021

As a requirement: there should be a way to replace components : sever connections, replace connection and able to provide a comment/date/user for the action. There is currently a web php interface in addition to the python interface. The web interface has been extremely useful during field work.

@aaronpearlman
Copy link
Contributor

aaronpearlman commented Jun 18, 2021

@mondana I have no plans to replicate the database. I intend to keep one global database. Everything will be propagated to the layout db that is currently in use, but we will have different telescopes (or graphs) for each outrigger site.

In case it's not clear, the purpose of the local database is to allow us to add components to the layout db when we assemble on site. We'll store these locally, and then run a pipeline that I'm building that will populate new entries into the global database.

The functionality to sever and/or replace connections and add user comments already exists (both in the web interface, and now in my python backend). You'll have this option also with the local database (e.g., in case we find a faulty cable, and want to replace it with a different part).

Any other issues/thoughts?

@mondana
Copy link
Contributor

mondana commented Jun 18, 2021

ah, I see. Not sure why we won't be adding them directly to the global database, what would the pipeline do? perhaps you can provide a use case or an example.
Please also note that (I think!) we already have two graphs : Pathfinder and chime-site (I guess 26m is not a separate graph) . So we are going to have 3 more graphs: allenby, gbo, xxx,

@aaronpearlman
Copy link
Contributor

The local database will give us more flexibility in several ways. For example, (i) it is easier to make changes since the data structure is essentially a simple python dictionary or look-up table, (ii) we won't need an internet connection nor will we have to worry about complicated library dependencies to make updates (as is currently needed for the layout db), and (iii) if we need to replace a part in the database, we won't have to worry about additional overhead (e.g., making sure we sever connections in order to replace a part in the middle of the chain). I'm extremely keen to proceed in this fashion. I believe this will minimize our work.

The pipeline will be run at the end. It will just add each entry (if it doesn't already exist in the global database), along with all of its properties, connexions, etc..., and populate the elements in the local db into the layout db. It will just loop over components and add them one at a time. The local db will serve as a temporary record of the connections we made on site.

Yes, we'll have 3 more geographic sites / graphs as you mentioned for each of the outriggers. The 26m also has a graph, so we'll ultimately have a total of 6.

@mondana
Copy link
Contributor

mondana commented Jul 9, 2021

At least two scanner/table setup, because at Allenby, we will be doing things in parallel and quite possibly need one at the bottom.

@mondana
Copy link
Contributor

mondana commented Jul 13, 2021

Niko informs me that we have the 3 scanners at chime site and can use at Allenby. Please note that at CHIME, we had to buy other scanners that worked in sunlight and dim lighting, had the multi-directional laser, and could tolerate certain skew. So I suggest we use those from CHIME, and buy one for Aaron's testing at McGill only.

@mondana
Copy link
Contributor

mondana commented Jul 13, 2021

@nikola1003 also expresses preference for using android phones instead, so you can use with LTE and upload on the spot. Remember the difference at Allenby site is that, we have LTE. At CHIME, we did not.

@nikola1003
Copy link

Or for that matter, LTE-enabled tablets (there is a bunch on the market so it should not be hard to source).

@aaronpearlman
Copy link
Contributor

Keep in mind that we're building this for use at the other outrigger sites as well. At GBO, we won't have (and can't use) LTE, so uploading components to the permanent database in real-time is not part of our plan at the moment. We can discuss if you think this will be an issue.

Do you know the model of the tablets that were used in the past? Are they still available for use, or do we need to identify new ones?

@mondana
Copy link
Contributor

mondana commented Jul 13, 2021

Not sure if you are still planning to refer to the google sheet of conventions, I made some edits and can do more if that is the place to capture those kind of information. Note that components are manufactured and barcoded in their manufacturing series. So the range of serial numbers should be free form. The first 3 letters are just chosen as a convention, but in most cases the serial number NNNN can be anything depending on when the unit was manufactured. LNA999C or ADC557 for example. unless I am missing a point about that googlesheet.

@mondana
Copy link
Contributor

mondana commented Jul 13, 2021

Keep in mind that we're building this for use at the other outrigger sites as well. At GBO, we won't have (and can't use) LTE, so uploading components to the permanent database in real-time is not part of our plan at the moment. We can discuss if you think this will be an issue.

Note that although we should make it flexible enough to be applicable to other outrigger site, but I really think we should focus on getting Allenby to work. We may find later that signal chain and scanning strategies are different at those sites and they may not even care about tracking and scanning every component depending on the assembly procedure.

For example. There is one cylinder at Allenby while there are more in other sites (I think!)

@mondana
Copy link
Contributor

mondana commented Jul 13, 2021

staples_quote
I think this is the tablet.

@aaronpearlman
Copy link
Contributor

Things should be pretty similar at the other outrigger sites, from my understanding. There will be one cylinder at all sites, and I expect scanning and logging components will be handled more-or-less identically.

There's also other issues with adding components to the permanent database in real-time, which we've discussed previously. For example, what happens if someone makes a mistake, or we need to replace something in the middle of the chain? All of this is much easier to handle if we just log all of the scans and connections, and then upload them to the permanent database at the end. We don't need internet or LTE for this, just some way to store the entries until we're done (i.e. the local database). It turns out that this is also how Kiyo and others did it in the past.

A separate protocol just for Allenby is a lot of work, which I'm not keen to do. Let's not over-engineer this, but instead design something that will be reusable and work at all of the outriggers!

@pboyle-mcgill
Copy link
Author

pboyle-mcgill commented Aug 3, 2021

TO DO:

  1. Build a mock cassette.
  • Bar code for a cassette.
  • Bar code for a feed position (4) in total.
  • Bar code for polarization 0 and polarization 1 at each feed position.
  • Bar code for LNA to connect to each polarization (8 in total per cassette).
  • Bar code for a short cable to connect to each LNA (8 in total per cassette).
  • Bar code for a bulkhead connector to connect to each cable (8 in total per cassette).
  1. Build a mock external bulkhead (say 4 x 4).
  • 4 x X-positions.
  • 4 x Y-positions.
  • read in the X-Y positions.
  • Connect a mock external cable (bar code) to a position.
  • Connect a mock internal cable (bar code) to a position.
  1. Build a mock internal bulkhead (say 4 x 4).
  • 4 x X-positions.
  • 4 x Y-positions.
  • Scan mock internal cable (from # 2 above). This should tell you the X-Y position to do to.
  • Scan the X and Y position and cable to connect.

@pboyle-mcgill
Copy link
Author

20210914_153851
20210914_153937
20210914_154114
20210914_150147

@mondana
Copy link
Contributor

mondana commented Sep 19, 2021

Just wondering what these photos are for?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants