Today, we're trying to publish our project Robinviz. It'll be a 1.0-beta version seperately for windows/linux source/binary. Binary files are around 400MB so it's a bit hard to upload it. Google Code -which we use for project management- limits the maximum file size for uploads. So we had to switch to sourceforge. But uploading on http was still a problem. So I found this solution: Rsync over SSH
At first, I found it hard to understand the URL format but then understood and wanted to share it with you. With the following command, I was able to send my 400MB file with resume support:
rsync -avP -e ssh robinviz-1.0-beta-linux-binary.tar.gz aladagemre,robinviz@frs.sourceforge.net:/home/frs/project/r/ro/robinviz/linux-1.0-beta
robinviz-1.0-beta-linux-binary.tar.gz: filename
aladagemre: username on sourceforge
robinviz: project name
/r/ro/robinviz: the first letter, the first two letters and all letters of the project joined by /
linux-1.0-beta: the folder I'd like to put my file in.
Hope it's useful.
Showing posts with label Project. Show all posts
Showing posts with label Project. Show all posts
Tuesday, December 7, 2010
Saturday, May 29, 2010
Spring term finished
The spring term has finished. Courses were pretty time-consuming this semester so I could not focus o n our research as I did last semester. Grades are not available yet but I expect them to be satisfying. I've taken Data Mining, Analysis and Design of Algorithms, Software Engineering courses.
In the data mining project, I worked on Yeast localization of proteins database and did classification&clustering analysis.
In the Software Engineering project, as I told before, I've developed a bus-timetable program JIstanbul which has both mobile and desktop versions with J2SE+Swing and J2ME. My project was selected as the best in the class. Currently, in the mobile version, the program can detect the day and fetch the timetable for that day. In the future, I'm planning to add storing time information, closest bus time, frequently used buses features.
Now I have 1 course and masters-thesis left for the next year. I'll be focusing on Robinviz in these summer days.
In the data mining project, I worked on Yeast localization of proteins database and did classification&clustering analysis.
In the Software Engineering project, as I told before, I've developed a bus-timetable program JIstanbul which has both mobile and desktop versions with J2SE+Swing and J2ME. My project was selected as the best in the class. Currently, in the mobile version, the program can detect the day and fetch the timetable for that day. In the future, I'm planning to add storing time information, closest bus time, frequently used buses features.
Now I have 1 course and masters-thesis left for the next year. I'll be focusing on Robinviz in these summer days.
Thursday, February 18, 2010
RobinViz Beta released
Things are going well and I've finished my first semester of my Masters. All of my grades are great and I'm just starting the second semester. On the other hand, I'm working on our project. When I joined the project in September 2009, one last step was missing. That was the Horizontal Coordinate Assignment Problem in Layered Graph Drawings. I've implemented Fast and Simple Horizontal Coordinate Assignment paper of Brandes et. al and we submitted our paper to International Symposium in Biocomputing (ISB 2010) in Calicut, India. Our paper was accepted and after that we decided to improve the GUI of our implementation. We developed a brand new GUI with PyQt4 and used the C++ code behind the scene to do the most of the scientific calculations. We published this novel software, RobinViz Beta version on http://code.google.com/p/robinviz.
With RobinViz, you can visualize PPI Networks and Gene Ontology as biclustered graphs. In these graphs, reliability of interactions are expressed with the thickness of the edges, h-value of the biclusters are expressed as node width etc. So the most important part of the data comes in front. I hope it shall be useful for all the scientists working on this subject.
This semester I'll be taking Algorithms, Data Mining and Advanced Java courses. I hope I'll learn a lot from them. By the way, while our professor presented our paper at the conference, I gave Introduction to Java tutorial lectures in his classes. That was also a nice experience.
With RobinViz, you can visualize PPI Networks and Gene Ontology as biclustered graphs. In these graphs, reliability of interactions are expressed with the thickness of the edges, h-value of the biclusters are expressed as node width etc. So the most important part of the data comes in front. I hope it shall be useful for all the scientists working on this subject.
This semester I'll be taking Algorithms, Data Mining and Advanced Java courses. I hope I'll learn a lot from them. By the way, while our professor presented our paper at the conference, I gave Introduction to Java tutorial lectures in his classes. That was also a nice experience.
Monday, September 1, 2008
Internship @ Pardus
I've entered my TOEFL exam and it was pretty good, except for the listening part in which I lost my attention and thought about the examination software (it was written in Java but the Cambridge, Longman etc. preparation CDs are prepared in Shockwave as I saw). I asked myself: "Why don't they write them in Java too so that I can use them on Linux? And guess what, at that moment, a lecture was being given on the computer and I lost lots of details :D
Nevermind, I started my third internship last week, in TÜBİTAK (National Scientific Research Center) on Pardus Linux Distribution Project. It's been very beneficial for me so far. I've learned lots of things about software, python, GUI design and opensource. I want to share what I've learned in this blog as much as I can do. You can see examples here. I've written a program called Sahip, which is an XML generator. It produces the installation settings for Yali (installation software of Pardus) to perform silent installs.
PyQt4 GUI Building
Let's start with PyQt4 GUI building. I used to think that we could not import GUI files from python modules and this caused us to refactor our python code whenever we wanted to change the gui, unlike GTK with Glade (you can import XML from python). But I was wrong. There was some options I could follow. One of them is the kdedesigner module for python. But I used the other one, inheriting the compiled GUI.
After you design a GUI on Qt Designer 4, you can compile it to Python code with:
and after that we can import and inherit it as written below:
That's all!
Opening up a new dialog
I imported UserDialog class above and used it as a dialog.
Lists items with checkboxes
You can set all the items of a list have a checkbox near it with the following code:
Handlers
In lists, I could only store the username of a user but the rest of the information should be stored somewhere else. That could be a dictionary, list etc. Dictionary was the most convenient for me but I had to define a dictionary for each list/combobox. That was a replication of code! So I wrote WidgetHandler, and specialized ListHandler, ComboBoxHandler to store them and defined addItem/removeItem, etc. methods to update both the dictionary and the widget. It was much more clear.
i18n
I have always wondered about internationalization and I saw that it was pretty easy. What you should do is to add the following code to the beginning of each of your files you want to be translated.
and you will use _('string') instead of 'string' if you want that string to be translated. And here comes the pot file generation part. As you can see the example project on the link above, I have a tools, po and sahip directory. So I recommend you to create such directories. I put pot generator sh file into tools dir and po/pot files into po dir. After creating an empty po dir, you can execute the following script (above po dir)
As you might understand, this script crawls through the given paths (sahip/sahip and sahip/*.py) and generates pot file by reading the py files and main (non-extensioned) sahip file. You will then find the pot file in your po directory. You can translate and rename it to lang.po format (tr.po, de.po, es.po). Then the python setup script will probably compile po file into mo file and copy it into proper place.
Setting Icon
I needed to copy YALI setup.py file and modify it for sahip. This file compiles po and qrc files, and then copy required files to the system for installation. Then I wrote a digestrelease.py script which copies the program directory to desktop and removes the unnecessary ones. Then the packager.py file compresses the directory and sha1sums it, updates a sample pisi pspec.xml file with the sha1sum, uploads the compressed targz file to ftp server and then build the pisi package, and install it.
It was a good way of automation for me. I could make modifications and try the result in seconds. I might have written this entry too confusing, sorry but I don't have much time. My next project is to develop a web site where files can be searched within the pisi packages so that for instance you can find which package the 'ls' file comes from. I'm currently writing the database generator and after I'll pass to the Django side.
Nevermind, I started my third internship last week, in TÜBİTAK (National Scientific Research Center) on Pardus Linux Distribution Project. It's been very beneficial for me so far. I've learned lots of things about software, python, GUI design and opensource. I want to share what I've learned in this blog as much as I can do. You can see examples here. I've written a program called Sahip, which is an XML generator. It produces the installation settings for Yali (installation software of Pardus) to perform silent installs.
PyQt4 GUI Building
Let's start with PyQt4 GUI building. I used to think that we could not import GUI files from python modules and this caused us to refactor our python code whenever we wanted to change the gui, unlike GTK with Glade (you can import XML from python). But I was wrong. There was some options I could follow. One of them is the kdedesigner module for python. But I used the other one, inheriting the compiled GUI.
After you design a GUI on Qt Designer 4, you can compile it to Python code with:
pyuc4 gui.ui -o mygui.py -x
and after that we can import and inherit it as written below:
from PyQt4 import QtCore, QtGui
from sahip.usergui import Ui_UserDialog
class UserDialog(QtGui.QDialog):
def __init__(self, caller=None, user=None):
QtGui.QDialog.__init__(self, None)
self.ui = Ui_UserDialog()
self.ui.setupUi(self)
self.ui.lineEdit.setText('test')
# All the other stuff here or in other methods.
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
UserDia = UserDialog(None)
UserDia.show()
sys.exit(app.exec_())
That's all!
Opening up a new dialog
I imported UserDialog class above and used it as a dialog.
def slotUserNew(self):
self.userDialog = QtGui.QDialog(self)
self.userDialog.ui = UserDialog(self) # caller=self
self.userDialog.ui.show()
Lists items with checkboxes
You can set all the items of a list have a checkbox near it with the following code:
for i in range(count):
item = self.ui.groupList.item(i)
item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
item.setCheckState(QtCore.Qt.Checked)
Handlers
In lists, I could only store the username of a user but the rest of the information should be stored somewhere else. That could be a dictionary, list etc. Dictionary was the most convenient for me but I had to define a dictionary for each list/combobox. That was a replication of code! So I wrote WidgetHandler, and specialized ListHandler, ComboBoxHandler to store them and defined addItem/removeItem, etc. methods to update both the dictionary and the widget. It was much more clear.
i18n
I have always wondered about internationalization and I saw that it was pretty easy. What you should do is to add the following code to the beginning of each of your files you want to be translated.
import gettext
__trans = gettext.translation('sahip', fallback=True)
_ = __trans.ugettext
and you will use _('string') instead of 'string' if you want that string to be translated. And here comes the pot file generation part. As you can see the example project on the link above, I have a tools, po and sahip directory. So I recommend you to create such directories. I put pot generator sh file into tools dir and po/pot files into po dir. After creating an empty po dir, you can execute the following script (above po dir)
#!/bin/bash
LANGUAGES=`ls po/*.po`
set -x
xgettext -L "python" -k__tr -k_ sahip/sahip sahip/*.py -o po/sahip.pot
for lang in $LANGUAGES
do
msgmerge -U $lang po/sahip.pot
done
As you might understand, this script crawls through the given paths (sahip/sahip and sahip/*.py) and generates pot file by reading the py files and main (non-extensioned) sahip file. You will then find the pot file in your po directory. You can translate and rename it to lang.po format (tr.po, de.po, es.po). Then the python setup script will probably compile po file into mo file and copy it into proper place.
Setting Icon
- Create a directory called images in the same directory of your codes.
- Put an image file in it, such as icon.png
- Create a qrc file such as resources.qrc and fill it with the content
images/icon.png - Open your GUI with Qt4 Designer and click on ... button of windowIcon on the Property Editor when main form is selected.
- A dialog will be shown, click on pen and then the open button (middle). Select the qrc file you created.
- Select the icon appeared on the right side of the dialog and click OK.
- Save the GUI.
- On the console, apply the following command:
pyrcc4 resources.qrc -o resources_rc.py - Generate your gui py file with pyuic4 and that's all!
I needed to copy YALI setup.py file and modify it for sahip. This file compiles po and qrc files, and then copy required files to the system for installation. Then I wrote a digestrelease.py script which copies the program directory to desktop and removes the unnecessary ones. Then the packager.py file compresses the directory and sha1sums it, updates a sample pisi pspec.xml file with the sha1sum, uploads the compressed targz file to ftp server and then build the pisi package, and install it.
It was a good way of automation for me. I could make modifications and try the result in seconds. I might have written this entry too confusing, sorry but I don't have much time. My next project is to develop a web site where files can be searched within the pisi packages so that for instance you can find which package the 'ls' file comes from. I'm currently writing the database generator and after I'll pass to the Django side.
Tuesday, July 22, 2008
BOLO
After the crazy boring minutes of trying to develop a new project with appfuse, my guide told me that he has found a project of his colleagues: BOLO. This is an interview manager, developed using appfuse (JSF+Hibernate) as a final thesis in Ege University. We are going to improve it by fixing some lackness and adding new features on it. We are going to work on it this evening (overtime) to understand its structure. Now, I'm preparing my internship report, filling the part for SOA. This is at the same time a preparation for my SOA presentation which will be at the end of my internship.
Subscribe to:
Posts (Atom)

