Kategorien
Blog Software

Folding@home remote client prototype

Yeah, a first version of the folding@home remote client prototype is ready to go!

The use case of the software is the following :

The available client software for the folding@home project concentrates on making the calculations for the famous protein project. That makes complete sense.

Folding@home remote client
DNA

On the other hand sometimes I also want just to control my clients from the mobile phone. And this problem is solved by the remote client.

The software makes no calculations at all, it just controls the other devices/clients where the calculations are happening.

Features

With the prototype you can already perform the following actions :

  • Add a new client with name, IP address and port
  • Edit the client’s properties
  • Delete a client
  • Select a client and perform the following actions :
    • Select the power used for the calculations
    • Start, Pause and finish folding of a slot
    • While a client is selected, it’s status including multiple properties is pulled in regular intervals

The next actions/features I have in mind :

  • Compile a runnable IOS and Android package
  • Make the GUI more beautiful with e. g. images for the buttons etc.
  • Add another screen for the work unit details
  • Implement a link to the user or show the browser results
  • Implement a link to the project or show the browser results

If you want to contribute just grab the code at https://github.com/hardy2408/FAH_Remote

For the implementation you need the following :

Let me know, if you wanna contribute, not only via a merge request 😉

One test I cannot do with my environment as I only have a laptop with one CPU.

So you can also contribute just with testing in an environment where one server has more than one CPU / GPU. Then the machine would have multiple slots.

Kategorien
Blog Software

Python software project for folding@home remote client

After a long time of not programming and just configuring software – and working as a manager in a heavily growing company – I started a new python software project for the folding@home project.

I was inspired first by the folding@home project itself. This project supports heavily finding new vaccines and other drugs while calculating protein folding activities. These computations are also related to the COVID-19 desease.

So please join and contribute the idle time of your computer(s)@home to the project!

Python software project for folding@home

Second I wanted to learn python for a long time already.

So I thought why not combining these two ideas, specifically during the not so busy corona time (that’s not completely true, as I’m in the luxury position to be still 100% busy at work ;-))

Methods learned

The methods I learned so far are quite a lot:

  • Python programming itself, including object oriented programming (I’m sure there are still plenty of things I don’t know)
  • Kivy, a library for a GUI, based on python, where you are able to produce applications for different mobile operating systems
  • Working with threads in python for regulary polling the clients
  • Virtual environments for python
  • Working with GIT for the first time as a version management system, and using github as a cloud version
  • Implementing a telnet client to connect to multiple processing folding@home clients (the API is sometimes a bit weird)

The idea is to compile an app that can be used on any mobile device to control folding@home clients in your local network – or also from outside your network as long as you have access to the folding@home clients via an IP V4 address.

For the time being you always have to have a folding@home client running at your local machine to control other clients. With my app you can control the clients also just with any mobile device.

I have some long ago experience with C++ and Java, but honestly working with python is much easier and makes much more fun!

Contribute

If you want to contribute to the project, just let me know. I will publish the source code soon on github.

The first prototyp with some GUI and some telnet commands is already running 🙂

Kategorien
News Software

Coronavirus pushes Folding@Home’s crowdsourced molecular science to exaflop levels

Coronavirus pushes the Folding@Home project to exaflop levels-

You wanna be part of the biggest computer on earth?

Come, join folding@home!

Coronavirus pushes Folding@Home
DNA

https://techcrunch.com/2020/03/26/coronavirus-pushes-foldinghomes-crowdsourced-molecular-science-to-exaflop-levels/

Techcrunch
Kategorien
Blog Software

Help protein folding for e.g. COVID-19 with your idle computers

There is a project simulating protein folding called folding at home.

Protein folding
DNA

Simulating the folding process of proteins requires a huge calculation power, that is normally offered only by super computers.Protein folding is used to fight deseases like HIV, Alzheimer, cancer and also the quite new COVID-19

The folding at home project is using the idle time of your personal computer making calculations for the possible foldings of a protein.

There are clients available for Windows und Linux. The installation is quite simple.

Unfortunately there are no packages available for Raspberry PIs as the computing power is too low.

This approach here uses the idle time of your (small) desktop or laptop computer at home and contributing to different projects while calculating so called „work units“. The client requests a work unit from a server and then makes the dedicated calculations in a maximum defined time, typically a few days. At the end the result of this work unit is sent back to the server.

You can „earn“ some points and also define a team, if you like.

I had some problem getting a work unit from the server on my Linux system. The following script helped as it pulls the server every 30 seconds for a new work unit. I found a quite good solution in the foldingathome forum.

#!/bin/bash
cd /var/lib/fahclient

while true
do
egrep -i "Download|No WUs available" log.txt|tail -1|egrep "No WUs available"
results=$?
#echo "$(date)    results = $results"
if [ $results = 0 ]
then
INDEX=$(egrep -i "Download|No WUs available" log.txt|tail -1|egrep "No WUs available"|cut -d F -f2 |cut -b 3)

echo "PAUSED *******  $(date) INDEX = $INDEX"
echo -e "pause $INDEX\nquit" | nc localhost 36330 &> /dev/null
sleep 10
echo -e "unpause $INDEX\nquit" | nc localhost 36330 &> /dev/null
fi
sleep 30
done

If you have multiple clients running you have to allow the access to each client for the remote access. How to do the configuration is explained here. For stopping and starting the server under Linux use these commands:

sudo /etc/init.d/FAHClient stop
sudo /etc/init.d/FAHClient start