BALL

Da Wikipedia, l'enciclopedia libera.
BALL
Biochemical Algorithms Library.
Biochemical Algorithms Library.
Sviluppatore BALL project team
Ultima versione 1.4.1 (28 novembre 2011)
Sistema operativo Unix-like
Mac OS X
Microsoft Windows
Linguaggio C++
Genere Bioinformatica
Licenza GNU Lesser General Public License
(Licenza libera)
Sito web www.ball-project.org

BALL (Biochemical Algorithms Library) è un progetto open source consistente in un insieme di classi C++, una libreria di algoritmi e strutture dati per la modellistica molecolare e la bioinformatica computazionale, un'interfaccia python alla libreria stessa ed al visualizzatore BALLView (anche esso open source); accanto all'interfaccia in python BALL offre un'interfaccia da riga di comando.

Esistono versioni per Linux, Solaris, Microsoft Windows and Mac OS X. BALL utilizza Qt così come OpenGL. BALL si è evoluto da un prodotto commerciale in un progetto gratuito, open source sotto licenza GNU Lesser General Public License (LGPL).

Il progetto viene sviluppato e mantenuto da gruppi di ricerca dell'università di Saarland, dell'università di Magonza, dell'università di Tubinga. Sia le librerie che BALLView sono utilizzati per insegnamento universitario e ricerca. Pacchetti per Debian sono stati resi disponibili il 04/2010.

Esempio[modifica | modifica wikitesto]

Il seguente programma legge un file PDB, aggiunge informazioni mancanti quali legami ed atomi di idrogeno, ottimizza le posizioni degli atomi di idrogeno utilizzando AMBER e scrive il risultato in un secondo file PDB.

 using namespace std;
 using namespace BALL;
 
 int main() 
 {
   // legge un file PDB
   PDBFile file("test.pdb");
   System S;
   file >> S;
   file.close();
 
   // Aggiunge informazioni mancanti
   // ovvero idrogeni e legami
   FragmentDB fragment_db("");
   S.apply(fragment_db.normalize_names);
   S.apply(fragment_db.add_hydrogens);
   S.apply(fragment_db.build_bonds);
 
   // Controllo per cariche, lunghezza di legame, 
   // atomi mancanti
   ResidueChecker checker(fragment_db);
   S.apply(checker);
 
   // Crea un campo di forze AMBER
   AmberFF FF;
   S.deselect();
   FF.setup(S);
   Selector selector("element(H)");
   S.apply(selector);
 
   // Ottimizza le posizioni degli atomi di
   // idrogeno
   ConjugateGradientMinimizer minimizer;
   minimizer.setup(FF);
   minimizer.setEnergyOutputFrequency(1);
   minimizer.minimize(50);
 
   // Scrive un file PDB 
   file.open("test_out.pdb", ios::out);
   file << S;
   file.close();
 }

Interfaccia python[modifica | modifica wikitesto]

Si utilizza SIP per creare classi python per tutte le classi C++ esistenti nella libreria BALL per avere la medesima interfaccia. I nomi delle classi in C++ e python sono identici così da aumentare la portabilità. Il codice python corrispondente al precedente è il seguente:

# Example
file = PDBFile("test.pdb")
system = System()
file.read(system)
file.close()
 
// Aggiunge informazioni mancanti
// ovvero idrogeni e legami
fragment_db = FragmentDB("")
system.apply(fragment_db.normalize_names)
system.apply(fragment_db.add_hydrogens)
system.apply(fragment_db.build_bonds)
 
// Controllo per cariche, lunghezza di legame, 
// atomi mancanti
checker = ResidueChecker(fragment_db)
system.apply(checker)
 
// Crea un campo di forze AMBER
FF = AmberFF()
system.deselect()
FF.setup(system)
selector = Selector("element(H)")
system.apply(selector)
 
// Ottimizza le posizioni degli atomi di
// idrogeno
minimizer = ConjugateGradientMinimizer()
minimizer.setup(FF)
minimizer.setEnergyOutputFrequency(1)
minimizer.minimize(50)
 
// Scrive un file PDB
outfile = PDBFile("test_out.pdb",  File.MODE_OUT)
outfile.write(system)
outfile.close()

L'interfaccia python è pienamente integrata con BALLView e permette quindi la visualizzazione di risultati ottenuti tramite script in python.

Bibliografia[modifica | modifica wikitesto]

  • Andreas Hildebrandt, Anna Katharina Dehof, Alexander Rurainski, Andreas Bertsch, Marcel Schumann, Nora C Toussaint, Andreas Moll, Daniel Stockel e Stefan Nickels, BALL - Biochemical Algorithms Library 1.3 in BMC Bioinformatics, vol. 11, 2010, pp. 531ff, DOI:10.1186/1471-2105-11-531.
  • Oliver Kohlbacher e Hans-Peter Lenhof, BALL—rapid software prototyping in computational molecular biology in Bioinformatics, vol. 16, nº 9, 2000, pp. 815–24, DOI:10.1093/bioinformatics/16.9.815, PMID 11108704.
  • Andreas Moll, Andreas Hildebrandt, Hans-Peter Lenhof e Oliver Kohlbacher, BALLView: a tool for research and education in molecular modeling in Bioinformatics, vol. 22, nº 3, 2005, pp. 365–6, DOI:10.1093/bioinformatics/bti818, PMID 16332707.
  • Andreas Moll, Andreas Hildebrandt, Hans-Peter Lenhof e Oliver Kohlbacher, BALLView: an object-oriented molecular visualization and modeling framework in Journal of Computer-Aided Molecular Design, vol. 19, nº 11, 2006, pp. 791–800, DOI:10.1007/s10822-005-9027-x, PMID 16470421.

Collegamenti esterni[modifica | modifica wikitesto]