Handledning för ActivePapers
Python-utgåva JVM-utgåva Pharo-utgåva Blogg … bibliotek —> ActivePapers-handledning Denna korta handledning visar hur du kan inspektera innehållet i ett ActivePaper extrahera kod och dokumentation (inklusive diagram) ändra parametrar för beräkningen modifiera koden köra om beräkningar skapa ett ActivePaper från grunden Exempelfilen för denna handledning kan laddas ner från Figshare. Det är också en god idé att titta på beskrivningen på Figshares webbplats.
Du behöver inte förstå vad den gör eller varför, men om du är intresserad får du gärna läsa artikeln som beskriver arbetet, vilken handlar om beräkning av translations- och rotationsdiffusionstensorn för ett protein i lösning utifrån en molekylardynamiktrajektorie. Kopiera den nedladdade ActivePaper-filen till en tom katalog. Öppna ett skalffönster och gå till den katalogen. När du skriver ls -l bör du se något i stil med -rw-r—r— 1 hinsen staff 148133188 Sep 26 16:21 lysozyme_diffusion.ap Inspektera innehållet aptool ls ger en lång lista över datamängder, som börjar med code/correlation_functions code/diffusion_tensor code/identify_trajectories code/plots code/python-packages/fitting code/python-packages/molecular_structure code/python-packages/mosaic code/python-packages/quaternion code/python-packages/time_series code/python-packages/units code/thermal_averages code/trajectory_processing data/coordinate_trajectories/rotation_laboratory_frame_1 data/coordinate_trajectories/rotation_laboratory_frame_10 data/coordinate_trajectories/rotation_laboratory_frame_2 Men hur vet aptool vilken ActivePaper-fil du vill titta på?
Jo, om det bara finns en fil med tillägget .ap i den aktuella katalogen är det den som används. Och det är därför det är en god idé att använda en separat katalog för varje ActivePaper-projekt. Om du av någon anledning inte vill göra detta kan du ange ActivePaper-filnamnet explicit: aptool ls -p lysozyme_diffusion.ap Du kan få mer information genom att använda aptool ls -l vilket ger 2013-06-07/09:13:05 calclet code/correlation_functions 2013-06-07/09:19:48 calclet code/diffusion_tensor 2013-06-07/10:02:29 calclet code/identify_trajectories 2013-06-12/08:03:48 calclet code/plots 2013-06-04/15:42:02 module code/python-packages/fitting 2013-05-02/15:11:53 module code/python-packages/molecular_structure 2013-06-14/15:46:18 reference code/python-packages/mosaic 2013-05-23/11:42:31 module code/python-packages/quaternion 2013-05-27/04:13:09 module code/python-packages/time_series 2013-05-02/15:12:07 module code/python-packages/units plus många fler rader av detta slag.
Den första kolumnen visar datum och tid för senaste ändring av varje datamängd. Den andra kolumnen visar typen av datamängd. Listan ovan innehåller två av de typer som gäller för exekverbar kod, calclet och module .
Det finns en tredje typ som inte förekommer i denna lista, importlet . En module är precis vad man som Python-programmerare förväntar sig: en Python-källkodsfil som ska importeras av annan Python-kod.
Calclets och importlets är de två varianter av skript som tillhandahålls av ActivePapers. Den vanligaste typen är calclet, vilket är ett Python-skript med begränsade rättigheter: det kan inte utföra någon in-/utmatning utanför den ActivePaper-fil det ingår i, vilket innebär att det varken kan komma åt filer eller nätverksresurser. Dessa begränsningar säkerställer reproducerbarhet (all indata garanteras finnas i ActivePapern) och skyddar användaren mot buggar och skadlig kod. Men de innebär också att calclets inte kan användas för att importera data till ActivePapern.
Relaterat: — Projektbaserade datavetenskapliga vägar med en guidad terminal och riktiga datamängder.
Här kommer importlets in i bilden: de kan använda alla Python-funktioner och komma åt alla resurser. Det betyder också att du inte bör köra någon annans importlets utan att först granska dem.
Sidan [[Calclets]] berättar hur du skriver calclets och importlets. Det finns ytterligare en datamängdstyp i listan ovan: reference, som tjänar till att referera till datamängder i andra ActivePaper-filer. En referens består av två delar: en referens till filen och namnet på datamängden inom den filen. Filreferensen kan vara en DOI för en publicerad fil eller ett lokalt filnamn.
Lokala filnamn är uppenbarligen meningslösa på någon annans dator, så lokala referenser är lite som importlets: de dokumenterar var data kommer ifrån men gör den inte tillgänglig. Låt oss titta på referenserna i vår ActivePaper: aptool refs Vi hittar en DOI och tio lokala referenser: doi:10.6084/m9.figshare.705829 local:lysozyme_spce_rbt_1 local:lysozyme_spce_rbt_10 local:lysozyme_spce_rbt_2 local:lysozyme_spce_rbt_3 local:lysozyme_spce_rbt_4 local:lysozyme_spce_rbt_5 local:lysozyme_spce_rbt_6 local:lysozyme_spce_rbt_7 local:lysozyme_spce_rbt_8 local:lysozyme_spce_rbt_9 DOI:n gäller pyMosaic-biblioteket, version 0.1.1, såsom det deponerats på Figshare.
Värt att titta på: — En prenumeration för universitetsstödda Python- och datavetenskapliga certifikat.
De lokala filerna är simuleringstrajektorierna som analyseras i ActivePapern. Låt oss hämta mer information om dessa referenser: aptool refs -v doi:10.6084/m9.figshare.705829 links: code/python-packages/mosaic local:lysozyme_spce_rbt_1 copies: data/center_of_mass data/orientation data/reference_structure data/time och så vidare för de nio andra indatafilerna. Detta visar att DOI:n används i en länk till målfilens datamängd code/python-packages/mosaic , medan de lokala filerna har använts som källa för data som kopierats in i själva ActivePapern.
En kopieringsreferens tjänar alltså endast som dokumentation; det finns inget behov av att ha en kopia av den refererade filen. Tillbaka till datamängdstyper. Det finns några fler som inte dök upp i de första raderna av aptool ls -l , så låt oss titta på några av de återstående raderna: 2013-07-03/12:24:26 text documentation/README 2013-06-14/15:55:08 file documentation/c_rr_diagonals.pdf 2013-06-14/15:55:00 data data/correlation_function_integration_limit 2013-06-14/15:46:47 dummy data/coordinate_trajectories/rotation_laboratory_frame_1 Du kan säkert gissa vad text betyder.
Och file är precis vad en fil är i Unix-världen: en sekvens av byte utan någon särskild tolkning knuten till sig. Senare ska vi se hur en sådan fil kan extraheras. Betydelsen av data är kanske mindre uppenbar, särskilt hur den skiljer sig från en file. Svaret är att data är en godtycklig HDF5-datamängd, karakteriserad av ett datarum och en datatyp.
Tänk på det som en array om du vill; det är faktiskt ganska nära. Då återstår dummy , vilket är en icke-existerande datamängd. Mer precist: en datamängd som inte längre existerar.
Det är en datamängd som genererades av en calclet och sedan togs bort explicit (med hjälp av aptool dummy … ) för att minska filstorleken. Om du vill inspektera den eller köra någon av de calclets som läser in den måste du först återskapa den genom att köra om calcleten. Så låt oss göra det: aptool update -v Detta uppdaterar allt i ActivePapern som behöver uppdateras: dummy-datamängder, men även föråldrade datamängder, det vill säga datamängder som är äldre än den aktuella versionen av den calclet som producerade dem.
Alternativet -v gör utmatningen utförlig; det berättar vilka calclets som körs och varför. Var beredd att vänta ett tag; på min maskin tar operationen cirka åtta minuter. Vi kan se att filstorleken har ökat betydligt: ls -l -rw-r—r— 1 hinsen staff 540352636 Oct 23 14:54 lysozyme_diffusion.ap Dessutom är de tidigare dummy-datamängderna nu verkliga: aptool ls -l data/coordinate_trajectories/rotation_laboratory_frame_1 2013-10-23/14:45:29 data data/coordinate_trajectories/rotation_laboratory_frame_1 Extrahera diagrammen Om du tittar på den fullständiga utmatningen från aptool ls -l kommer du att lägga märke till några PDF-filer under documentation .
För att titta på dem, extrahera dem till verkliga filer: aptool checkout documentation Detta ger dig också README , eftersom det extraherar allt i HDF5-gruppen documentation till en lokal katalog som heter, just det, documentation . Gruppen documentation i en ActivePaper är avsedd för data som riktar sig till människor; den används i allmänhet inte som indata till beräkningar. Observera att du naturligtvis kan checka ut enskilda filer, t.ex. aptool checkout documentation/README.txt Kommandot checkout extraherar endast de datamängder som är nyare än motsvarande fil på disken, om den redan finns.
Du kan alltså redigera extraherade filer utan att de skrivs över. Vi kommer att se detta i praktiken strax när vi arbetar med koden. Extrahera och modifiera koden Låt oss därefter titta på all kod
Lär dig Python genom att koda i din webbläsare
Interaktiva Python- och datavetenskapskurser kodar du direkt i webbläsaren