sequencescape
sequencescape copied to clipboard
Housekeeping - Tidy up Transfer and TransferRequest
Describe the Housekeeping Transfer and Transfer request get quite complicated, especially when trying to hook transfer requests and aliquots up to the Submission and request. It could do with a sanity pass:
1 - Certain subclasses are no longer used. Such as Transfer::FromPlateToSpecificTubes
, Transfer::FromPlateToSpecificTubesByPool
, `Transfer::FromPlateToTubeByMultiplex it would be great if these are removed, although we'll need to ensure that the historic records continue to function.
2 - Backwards compatibility and architectural changes over time has resulted in horrendously complicated submission/request lookup. It may be possible to simplify this. (Or at least consolidate it)
3 - There appears to be scope for both architectural and code level refactoring to simplify things.
4 - Finally we may be able to migrate more limber creators to using the transfer request collections
Background Basics
- Transfer objects are the original means of generating transfer requests
- They are generally instantiated via the API, usually using a transfer template
- They follow the historic design principal of keeping business logic within Sequencescape, with only minimal logic within the client applications
- More recently we've been shifting business logic outwards, with Sequencescape mainly geared up for persistence and a few core buisness logic rules.
- This has resulted in transfer_request_collections which is a RESTful endpoint for creating multiple transfers.
- We also have 'BulkTransfer' which is a loose wrapper around the original Transfer object.
Request/Submission
- Transfer requests are associated with submission
- Originally this was used alongside the stock-wells to try and map transfer requests back to the outer request
- When GBS was added, we began pooling across submission, at this point we added tracking of request to the aliquots themselves.
- The data was not back-populated due to the size and complexity of the task
- In practice we are unlikely to be processing much of this historical data.
- Transfer requests will set the request on aliquot. This request can either be set directly via 'outer_request=' or indirectly via submission.
- This probably only really needs to happen on the first transfer of the process. After that aliquots can just inherit the information se on their predecessor.
Blocking issues Describe any other issues or tickets that may be blocking this change.
Additional context Add any other context about the problem here.