GSOC15 adventuring

Wrapped with a bow

I hit the point where everything works last night. The main author Gavin Crooks was kind enough to meet up in the evening after a busy day to help me double check WebLogo's functionality. I fixed some errors regarding the logo creation buttons and problems with examples pages. We tested WebLogo by creating sequence logos from URLs on an ipad, and it worked. And it looks great! The images can be saved locally as part of the mobile device's image gallery. Working the controller logic that takes in the URL was a little tricky b/c we had to negotiate how Weblogo processes local files and data pasted into the textbox and needed to prevent a user from using more than 1 of the input types, as well as throw an error.

detailing and debugging

While trying to merge code last night, the main author and I found a major bug that prevented WebLogo from functioning as a standalone server on Windows machines. Running WebLogo from the command line hadn't been tested until, I tried and failed. WebLogo couldn't find the python environment variables needed to run on a windows machine b/c the os.path was being demarcated by colons ":" , which is the case in unix and linux, while in windows the path is being demarcated by ";". It was a puzzle to figure out what was happening. And there are probably many more windows specific errors that may need to be addressed. However, now WebLogo is more portable for use on different operating systems.

improving documentation & deployment

I'm going through the current documentation to clean up and update references and the API. I went to see the AWS engineer, and he couldn't help me at that AWS loft b/c launching python applications on the AWS elasticbean service wasn't his specialty. We went over what the hang up over deployment could be, and he pointed me to resources and opened a ticket with AWS help support. The WSGI path not found error may be addressed by creating a folder and an options setting designed to satisfy elasticbean's requirements. I wrote a generic python.config yaml file that may appease. I'm working on trying to deploy the application again and troubleshoot deployment while I review and tweak documentation.

debugging create page

I'm working on debugging notes sent from the main author. I overwrote some logo controls that I didn't recognize as html, but apparently the values are needed for the weblogo tool to work. So I have to go through the file and restore all the commands. I solved the passing data problem. Firstly,python's SimpleHTTPServer doesn't support POST commands, that was the main reason the url data wasn't being passed from the html form to the cgi file. I also had to adapt the html tags because the original example's forms was activated by javascript passed data using ajax. Those commands were no longer relevant if i passed data by grabbing form data.

scrubbing code

I was cleaning up references to and Subversion. I updated the page to redirect to the github repository at I'm still working on passing data from the form to the .cgi controller. i'm stuck on passing data from the modal to the test .cgi file. I have the file routes set up from the html to the .cgi file and print statements in the .cgi file to check if url are being passed, but i still can't confirm that the data is being passed. It's very frustrating to be working on this piece. I have an appointment with an AWS engineer tomorrow and hopefully will figure out the deployment process soon as well.

Merging into main branch

I've been working with the main author on getting how to merge WebLogo work into github.This style of development process is new to him, and this is the first time I've made pull requests in github. The main author decided against putting the fallback option for CDN failure into the main script. He was happy to know that there was a solution to the problem, but he believed that it would lead to more maintenance for him down the road. So I removed all the fallback script for the merge. I'm doing tweaks to the html according the main author's notes as they come. He's pleased overall about the work. I decided i'm overthinking the entire passing url via jquery and ajax. I added documentation to the api, and I'm going through tutorials on how to read forms through .cgi files to figure out this last piece of sewing WebLogo's front-end to my back end function.

opening gdrive file

I worked with the main author to find a solution to opening shared files from google link. The urlretrieve() can't handle google's blob, so after redesigning the URL for direct download, we capture the request headers, then open the headers. Then we create and temp file for the file object and apply the shutil module to copy the file and then return the file from there. I started to merge this function with the main author into the initialization files for weblogo. We're testing how the function plays with the rest of weblogo on the command line. The popup are working properly and labelled properly, but I'm still working on how to pass the URL to the actual weblogo controller. The main author is giving suggestions on more tweaks to the update the information on the html pages that I have to incorporate.

more download direct links

I'm still working on the direct download issue with files served by google drive. Firstly, my test file was empty or corrupted so that muddled my trouble shooting. I can indeed download documents from the direct download link. However, I still can't see the file name and extension, nor can I easily read the content disposition of the url with python's urllib tools. I still may need to find a way to parse the data "blob" in order to read the type of file before i let weblogo download it.

pop-up for url

I have the pop-up for the the url intake for the weblogo front end working. I still have to work on the functionality that passes the url to the python function and have the python either process the file directly or to put open text file/sequence back into the the front end. i'm researching how to deal w/ the data "blob" (the official word!) that google sends. The direct download link that I can create actually redirects to another http route that bring the file. However, parsing that url doesn't work & you have to rescue the file that you want from the "blob"

direct download

I figured how to turn the google drive link into a direct download link, so it downloads the file instead of pulling up a the html page to view the document. I can parse the shared link to pull the file ID and apply the id to the url pattern that will directly download the file. My sample file will download successfully using this new link. However, when i parse the url after I apply urlretrieve(), I see the instance of the file so I know that it's been created, it doesn't show the name or file type. I just get numbers where the file name & type would be (as in the case of the dropbox download). So i can't validate if a text file has been downloaded or prevent a jpg file from being downloaded into the application. I'm going to try to get this working, and I'm still working on a pop-up dialogue box that takes in an direct download link URL.

Syndicate content