view todo.md @ 17:c02720d1afee draft

planemo upload for repository https://github.com/goeckslab/hub-archive-creator commit 1adbf397de1fc7af4d91e026093d7fff983e21cf
author rmarenco
date Fri, 30 Sep 2016 15:14:24 -0400
parents 3233451a3bd6
children 40469b265ddb
line wrap: on
line source

### TEMP St Louis ###
- How to manage messages to user and debugging:
    - User should receive INFO / WARN / ERROR / CRITICAL:
        - User summary informations in stdout
        - Full error in stderr
    - Developer should receive all Logging stack:
        - Not the user summary in stdout
        - Full stack in stdout and stderr directly

    - HOWTO:
        - Manage (at least) two type of Logging types:
            - The user one => When Debug mode is not set or disabled
            - The dev one => When Debug mode is enabled
        - User:
            - Two Handlers: stdout and stderr
            - STDOUT:
                - Filter stdout:
                    - NO ERROR and CRITICAL here
                    - (Warn)
                - Formatter:
                    - Only show %(message) for clarity
            - STDERR:
                - Filter stderr => WARN / ERRROR / CRITICAL
                - Formatter:
                    - Show message
                    - Show traceback
        - Dev:
            - One Handler:
                - To both stdout and stderr
            - Filter:
                - Nope?
            - Formatter:
                - Show traceback in both

# HubArchiveCreator's TODO

*TODO file inspired from: http://lifehacker.com/why-a-github-gist-is-my-favorite-to-do-list-1493063613*

### TO COMPLETE


- [ ] Don't let the Tool Classes manage the archive (add or remove files / folders) => Everything should pass through TrackHub or another class dedicated to that
- [ ] Move the class and others program related files, into separated folders
- [ ] Take into account the name of the reference genome / the change:
  - [ ] Somebody could want to launch two visualisations of two different genomes. Repeats of Genome with extensions associated
- [ ] Add TDD => First add the test. It should not pass. Implement. It should now pass :)
- [ ] Replace Gff3 by an abstract class GeneralFormat, with two sub-classes GFF3Format and GTFFormat
- [ ] TrackHub should check if the 2bit already exists instead of recreating it (which is the case atm)
- [ ] Manage the error when a user is selecting Generic Bed instead of Bed Simple Repeats. Two options: a. Output a better error message ("Check with the other Bed options") b. Identify internally this is not a regular BED but a specific one
- [ ] Remove the non-explicit parameters for the communication between Galaxy Wrapper and the entry point
- [ ] Rename all occurences of `extension` which `datatype`
- [ ] Follow https://google.github.io/styleguide/pyguide.html
- [ ] Move to Python 3
- [ ] Remove the repetition of the extension if it already exists
- [ ] Better thinking about the tool_directory management / Classes path refactoring
- [ ] Add a debug mode to have more outputs
- [ ] Improve the standard output of HAC
- [ ] Find why a $ (newline) is added when installing dependencies from tool_dependencies.xml
- [ ] Sort the order of the HTML directories/files

### DONE


- [x] Each time a file is added => Print it in the output with the full path (or relative path to root)
- [x] Add a script for Linux.x86_64 to download and and chmod +x the dependencies for local testing => util/install_linux_binaries.py
- [x] Add sorting BED if not sorted (Use the output of bedToBigBed)
- [x] Add a script to install the huba datatype
- [x] Add the possibility to add a new item in TrackDb.txt through a public function from TrackHub.py => addTrack() in TrackHub.py
- [x] Fix the errors for the stdio regexp not properly processed in error case (always green) => Used `detect_errors` in  galaxy wrapper and raise Exception in Python
- [x] Add a class named ~~TrfBigProcess~~ BedSimpleRepeats
- [x] Add a class named TrackHub: Create the base TrackHub hierarchy
- [x] Change the Name of the classes
- [x] Add a class named AugustusProcess: Process the Augustus output to BigBed (and others needed in TrackHub) and (create folders + add the files into the right location => Process can be ported in a class responsible for that)
 - [x] Add a class named AugustusProcess
 - [x] Process the Augustus output to BigBed
 - [x] create folders + add the files into the right location
 - [x] Creation of folders to be ported into a separated class => In Datatype.py but should be into a dedicated to file manipulation class
 - [x] Refactoring of the AugustusProcess class to behave like a class and not like a procedural masked into a class
 - [x] Rename AugustusProcess into something more generic if the process is shared (gtf to BigBed) => Gff3.py
- [x] Use gffToBed for Gtf instead of GtfToGenePred => Cancelled
- [x] Clean the mess with the File handling (sometimes File, sometimes String, sometimes open File)
- [x] Find a way to avoid repetitions in TrackDb and Track (I repeat myself atm) => Track instance has a TrackDb instance as attribute
- [x] Refactor the creation of the structure to TrackHub: Access to paths via this Class, and creation of file through it