You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, the DNAm QC pipeline is very interdependent and nonorthogonal in design. A great deal of bugs that have been identified in the past year or so have been due to this problem.
Many parts of the pipeline depend on other parts successful completion. As a result, a seemingly harmless change to one section of code in the pipeline inevitably causes problems in a different, completely unrelated part of the pipeline.
Therefore it would be beneficial to properly layout what each part of the pipeline requires and what each part of the pipeline outputs/contributes. Doing this will allow us to disentangle and compartmentalise each section of the pipeline. This will have the benefit of making the pipeline easier to understand and therefore easier to contribute to in the future (without fear of breaking everything).
Using these contracts create a UML diagram (or similar) to help determine the processes/steps of the pipeline that each section actually depends on.
a) Add this UML diagram (or similar) to the documentation to help users understand what the pipeline
actually does (mermaid may be useful for this). This step is given explicitly in [Documentation Fault]: Create a UML diagram explaining the steps for the DNAm QC pipeline #258 and should be completed separately to the other steps listed
Reflect the diagram from 3) in the actual code. Ensure that each section does indeed receive the information it requires and does indeed output the information it is obligated to (with ideally no side effects) i.e. each section adheres to its proposed contract.
a) It may be useful to move some processing to separate files, either rmarkdown children or new R
scripts. This can help with navigation around the code base (though might be better suited to
being asked for in a further issue)
Path to affected file
Type of refactor
Code understandability improvement, Code readability improvement
Description of required code refactor
Currently, the DNAm QC pipeline is very interdependent and nonorthogonal in design. A great deal of bugs that have been identified in the past year or so have been due to this problem.
Many parts of the pipeline depend on other parts successful completion. As a result, a seemingly harmless change to one section of code in the pipeline inevitably causes problems in a different, completely unrelated part of the pipeline.
Therefore it would be beneficial to properly layout what each part of the pipeline requires and what each part of the pipeline outputs/contributes. Doing this will allow us to disentangle and compartmentalise each section of the pipeline. This will have the benefit of making the pipeline easier to understand and therefore easier to contribute to in the future (without fear of breaking everything).
Steps to completion
a) If it feels like any contract is exceptionally long/complex, this implies that some abstraction or
further compartmentalisation is required.
a) Add this UML diagram (or similar) to the documentation to help users understand what the pipeline
actually does (mermaid may be useful for this). This step is given explicitly in [Documentation Fault]: Create a UML diagram explaining the steps for the DNAm QC pipeline #258 and
should be completed separately to the other steps listed
a) It may be useful to move some processing to separate files, either rmarkdown children or new R
scripts. This can help with navigation around the code base (though might be better suited to
being asked for in a further issue)