From d38fe354ea841f36aac7e4187a8590b66b3e438b Mon Sep 17 00:00:00 2001 From: Dennis Herb Date: Thu, 28 Nov 2024 13:20:14 +0100 Subject: [PATCH] new commit --- .gitignore | 8 + docs/_build/doctrees/apidoc/apidoc.doctree | Bin 3726 -> 3728 bytes docs/_build/doctrees/apidoc/classes.doctree | Bin 168141 -> 168143 bytes docs/_build/doctrees/apidoc/functions.doctree | Bin 381734 -> 381736 bytes docs/_build/doctrees/apidoc/plotting.doctree | Bin 59246 -> 59248 bytes docs/_build/doctrees/apidoc/utils.doctree | Bin 67027 -> 67029 bytes docs/_build/doctrees/biblio.doctree | Bin 4227 -> 4229 bytes docs/_build/doctrees/copyright.doctree | Bin 97946 -> 97948 bytes docs/_build/doctrees/environment.pickle | Bin 101233 -> 141979 bytes .../doctrees/guide/guide-tb_model.doctree | Bin 2670 -> 0 bytes docs/_build/doctrees/guide/guide.doctree | Bin 4145 -> 19246 bytes docs/_build/doctrees/index.doctree | Bin 10965 -> 10967 bytes docs/_build/doctrees/installation.doctree | Bin 11496 -> 28684 bytes docs/_build/html/.buildinfo | 2 +- docs/_build/html/.buildinfo.bak | 4 - .../_sources/guide/guide-tb_model.rst.txt | 4 - docs/_build/html/_sources/guide/guide.rst.txt | 81 +- .../_build/html/_sources/installation.rst.txt | 191 +- docs/_build/html/apidoc/apidoc.html | 12 +- docs/_build/html/apidoc/classes.html | 8 +- docs/_build/html/apidoc/functions.html | 8 +- docs/_build/html/apidoc/plotting.html | 9 +- docs/_build/html/apidoc/utils.html | 8 +- docs/_build/html/biblio.html | 9 +- docs/_build/html/copyright.html | 5 +- docs/_build/html/genindex.html | 5 +- docs/_build/html/guide/guide-tb_model.html | 119 - docs/_build/html/guide/guide.html | 98 +- docs/_build/html/index.html | 51 +- docs/_build/html/installation.html | 194 +- docs/_build/html/objects.inv | Bin 860 -> 3448 bytes docs/_build/html/py-modindex.html | 5 +- docs/_build/html/search.html | 5 +- docs/_build/html/searchindex.js | 2 +- docs/conf.py | 3 +- docs/guide/guide-tb_model.rst | 4 - docs/guide/guide.rst | 81 +- .../1_Tight_Binding_Parameters.ipynb | 409 + .../tutorials/2_Tight_Binding_Method.ipynb | 380 + .../tutorials/3_Environment_Simulation.ipynb | 626 ++ docs/guide/tutorials/4_Visualization.ipynb | 383 + docs/guide/tutorials/5_Evaluation.ipynb | 381 + docs/guide/tutorials/PRE_2024.ipynb | 904 ++ docs/installation.rst | 187 +- installation.md | 174 +- pyproject.toml | 15 +- qDNA/data/logs/qDNA.log | 8904 +++++++++++++++++ qDNA/data/raw/config.json | 69 +- .../tb_params/uni_dimer_seq_electron_ELM.json | 1 - .../raw/tb_params/uni_dimer_seq_hole_ELM.json | 1 - qDNA/dynamics/solver.py | 146 +- qDNA/hamiltonian/tb_matrices.py | 2 + qDNA/hamiltonian/tb_params.py | 3 +- qDNA/tools/check_input.py | 6 +- qDNA/tools/save_load.py | 24 +- qDNA/visualization/__init__.py | 27 +- requirements/old_requirements.txt | 8 + requirements/requirements.txt | 15 +- requirements/requirements_long.txt | Bin 4523 -> 0 bytes scripts/{activate.sh => activate} | 33 +- 60 files changed, 13182 insertions(+), 432 deletions(-) delete mode 100644 docs/_build/doctrees/guide/guide-tb_model.doctree delete mode 100644 docs/_build/html/.buildinfo.bak delete mode 100644 docs/_build/html/_sources/guide/guide-tb_model.rst.txt delete mode 100644 docs/_build/html/guide/guide-tb_model.html delete mode 100644 docs/guide/guide-tb_model.rst create mode 100644 docs/guide/tutorials/1_Tight_Binding_Parameters.ipynb create mode 100644 docs/guide/tutorials/2_Tight_Binding_Method.ipynb create mode 100644 docs/guide/tutorials/3_Environment_Simulation.ipynb create mode 100644 docs/guide/tutorials/4_Visualization.ipynb create mode 100644 docs/guide/tutorials/5_Evaluation.ipynb create mode 100644 docs/guide/tutorials/PRE_2024.ipynb delete mode 100644 qDNA/data/raw/tb_params/uni_dimer_seq_electron_ELM.json delete mode 100644 qDNA/data/raw/tb_params/uni_dimer_seq_hole_ELM.json create mode 100644 requirements/old_requirements.txt delete mode 100644 requirements/requirements_long.txt rename scripts/{activate.sh => activate} (70%) diff --git a/.gitignore b/.gitignore index 4740382..a6f2a06 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,11 @@ TODO.txt main.py qDNA/data/raw/geometries/ +# documentation +docs/_build +docs/_static +docs/_templates + # created by coverage htmlcov/ @@ -18,6 +23,9 @@ __pycache__ # pylint .pylintrc +# mypy +.mypy_cache/ + # created by coverage *.egg-info/ .coverage diff --git a/docs/_build/doctrees/apidoc/apidoc.doctree b/docs/_build/doctrees/apidoc/apidoc.doctree index 9b1de8cc829eedea1a00f2938e90a2e814b3696c..3034be06ed90d79e6fce4dd7045a81cee6574e81 100644 GIT binary patch delta 24 gcmeB^ogmB7z&f>cBg<({RxgH!Us*R_;@ram0BOev{Qv*} delta 22 ecmbOr+b7G?z&f>gBg<({W?upI%~v@0umAv4mIqn@ diff --git a/docs/_build/doctrees/apidoc/classes.doctree b/docs/_build/doctrees/apidoc/classes.doctree index 4fdd3047916a741d6f7e7ce21eb6d1187587886d..ec6b72605a19c52c7adeec3a6ca393c8cb72ce9a 100644 GIT binary patch delta 43 wcmX@Rkn8+Hu7(!IDNJG<8z(S;!Su#wjOkljnf`XOdNDlw%DTO^hslEl08!=-R{#J2 delta 41 ucmX@Vkn8M1u7(!IDNJG<>nAXP!Su#wjOkljnf`V&`wFOUZ|`C9U;zLu)(x}( diff --git a/docs/_build/doctrees/apidoc/functions.doctree b/docs/_build/doctrees/apidoc/functions.doctree index e0dc7dde2e6add1c7ffc2de3e2b9946117f465b7..468ddb83219dab4a4ea46364ad026f0d3d6d5cc2 100644 GIT binary patch delta 37 vcmV+=0NVeirWdHD7l4ETgaU*EganiY)&WYj*9H5=1xf(n^#!-p#|2Rf9e@u_ delta 35 rcmZ3nOnlig@rD-07N!>F7M3Zj*BCvvUT6J%jM-N}ef#y}tbyDB`N<8c diff --git a/docs/_build/doctrees/apidoc/plotting.doctree b/docs/_build/doctrees/apidoc/plotting.doctree index b0e9371bc1ff87cf609eff09ef5e885198c97743..7bf7d96c586d1075a2ff71199966a9ee23e6ac16 100644 GIT binary patch delta 26 icmaENj`_nmW|julsi_-TLLRYtF+BXrx;grhFe?C{u?ryp delta 24 gcmexxj``g=W|julsmU8zLLM>u3aD?6eI(2Z0EMmzegFUf diff --git a/docs/_build/doctrees/apidoc/utils.doctree b/docs/_build/doctrees/apidoc/utils.doctree index a80a0e282c4834530a08415ad70d4813a9814c5b..9645d86faa8256779d63deb6c0b942b0b2ef1b05 100644 GIT binary patch delta 27 jcmccI&2qJyrC|!A5aaHt!i)!4y%-*TW!-v>@h=Mim3s=x delta 25 hcmccG&2qV$rC|!A5aZ6N!i)!)eFfCF-eCO80swq42`2ym diff --git a/docs/_build/doctrees/biblio.doctree b/docs/_build/doctrees/biblio.doctree index 723b0c6b9e8eba12201bc4cdf0db352abefb980c..530ea6c4fc1f7e801280f3734210cc3236660996 100644 GIT binary patch delta 24 fcmZoxY*l1wV4YgEkwurC)r;ZbSJurY?EahpTwDh{ delta 22 dcmZowY*u7xV4YgAkwurC*;hb)vl+WTCjdvC1(^T< diff --git a/docs/_build/doctrees/copyright.doctree b/docs/_build/doctrees/copyright.doctree index 02a0fd1b15d4c7206c26ab792facafa7fdd0e0a5..a8d0952597cba139e9531291a69f94fa75d6b08c 100644 GIT binary patch delta 29 lcmbRBmvzox)`lsJn;9Q&-NLxBg4K)R;aAq}8I_DitN_o?3~~Sf delta 27 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 E2X6^)Z~y=R literal 101233 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 K?Fe2n`~Lv_jac0P diff --git a/docs/_build/doctrees/guide/guide-tb_model.doctree b/docs/_build/doctrees/guide/guide-tb_model.doctree deleted file mode 100644 index 7960d366e47d990bab98b8d2a4c6c8e70315f603..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2670 zcmb7G%WfMt6is4Fmi&YzxIps`#OT@={_O}r>zR7H!VD+L5+h7wtG$SEJT zya>=P0>l7!VgI*>GtyW#&_xZ5HN3pM&vP#4ug*XD`i=T8Y}<+pH5<~RP`Y3?hF+m_ zUoz$5=lJ~Z_#r+EeM8Tz_9kaB+<->Tg)9tH@qG+~r0#^Y!}<9&%W@~QYLD{{@A9?x z@fq)jjuTF@rLE9=>zy`&%9wPZvig?IlJBLRkFklPTTys*k?)2+X~X0zp*xRm6jr5B zERK9e!#Z`&h|D`=m9kh7g-sE!<&s(pA>KQRmd#tQ@YUraqxp$plceLrnxoUS75O%Q zz&H6rzQXrH{^sTQon^+3kC;-z?*GJ0HvUDiBO^}P_&f4WiSdy>L3ZQn+;Oc)W%M5? zjvfE%sdBzN8vQs%8g@MOqF~Mc1DBB!osdIgk?Eu3TRuZo`beEl4XyZc@t(icNBZUd znGufdFA8b*C)(^g&h|aR+pld8o9f;V|Kr5G>PY#pNqNK{rNZ(rQBD3B&H4(@6Fg7x zJV&MYH~fI_@fV1Cbx|pwvGzddxka<-;_wyOlA(1NSZVy$22qCp_S^!1zX*4op~^~{ zFqkSnHOw{u=s4|wv*R0KeWAk&EPV?6W*Fq&BzTb)Oq&Zy1FF!o%sHW^V99O^`-#!Y zF;&FS{hdk=G_}0xYVRuV;)rjLLVwB>GZb)$SQHenbhNCn*f3fhNvVST>zMq;()bWRdL(=I~kAZBwO!|e&oDDBwN=BKcg=%{>2WD=L!f zGLhWE;DbiOB&#LlOgK&!B!R#AfjMhNVbicm8%HENWhm#Zu+FJ$mz}W7W&%}o)Oov5 z>V!_gGCzg8!5K9QRfL9Nw1lLOcH}Ijl;RT#H6u*rx`0*;eeWg*KO9(r_lH+E2{T3; z!l^1GGw47HHFq&=He1jiNFc+^!`x(o^d%MU`c~&}3F7H0`iir7a`NCu@l0j+_cB8oX|k zLRgx~l*l~FwFOVWxlJTv!Hk-8FuFBYBNHK;@p?bK!3ic(O-!bewF3R#z~zEIHOu3h zVKP>NEx`18)wFsN8XKoJIt=5@g~lO&^vJ@F!Z!JVt@%fmy6?Xa1+Lv5y@ z)4ilw2LMgtSc&#Hw4(?4!IN*lM?D8-l3z2QB$wvDUYG}SX~OFXGeg1Lr1pVnaL8RL z;jHgy1_~99$Kzhu10YM%GP6y9*eW69BJ9|6<>-uXG362uz`H7S!u_T#DOmQW2c<0v zb*El8OCohn=cV1tIqrrWjc>??D%T~%=@VbUMY^Kvdv`tqE`T1L3pD`-=0o9jniAG$ z*VIIruq!ofn3yitlL*L^87n~Fb40)ybMSF5ht>&UB^8q3VDyMM)Ef8n)0bo+{Zj8@|!xN`5ht@#daI1G$j`!o)4 zo#a|d6c#z)zF2!Rmw!g`ALDNTKRzx%BYX*2^t*A`&W$VLjaFQ@Y(uDA`XWJOn!2@K Oq|r8?0_pPh+3;VM-6*I4 diff --git a/docs/_build/doctrees/guide/guide.doctree b/docs/_build/doctrees/guide/guide.doctree index e856b276c951ce0fda5d059ca1ff3dcc523dad42..15c76ddb96b575cdf9af6484f1672378aa9a0a51 100644 GIT binary patch literal 19246 zcmds9Ym6LMR`z3_?XkzNB*tr#iW7Us9d~*#MyWwr954AALpL;IrrTA+W2oidU1>RkI%-T?fA=etJU&@7K?j)sueWT zF7uP#d%feY_wM%Q_;h65iGwt1vL4@p7ERmnS`qVmxA1WnwND%`u4e;GBv#a6MR$9g zSL$`c?4(YMo$lF_w|cx{B}wEo(gZWo4BMSnjM4aH)3f3jFY))dZ*}EgQ>`>Cel)D+ zV#M0A4gPRiXe$QqrF=56I@GjhSNNFc_^fwvE1w80K%4aJ?R?tImxo^yYE>_vJ$>`V zm__l;bIkXh*m#abjhk0|b}n+3*v(Vsi@tO7T(Fn~(amrru>;=>qrhd&B)<9O)bf+G zdv4*(O^hAi6rjjwJ&KcF+OVhjWQ?{>;O9uS$L$G1#T-74Cr;uq?Gr!vLW*fvWGn;; zYXrffaU;dtj^)Jyf#@`LgDn%1hqisICn#te_T%;=_ICTog8lG9+OX{1z`DKnR?ps# z{~yHv2k`&FTfNl&N&7gOACt}PN9~6%j*Asc1Bq5AvO-%2^dG*$yk^j4MiLl_&5UZb zK!-7S5!LD=#toar=%?0YSbocBv2NhUNn{bOVgqEutJvxItVJ`}%nOZ_=wz_v&pf+eQfXu{xO8j)Jsf8)0Ojb<^@Nq}2^Q z7S{!e=j?etTUuSOz~`5Ae1aSkfI9FyI&O}Sj0{QBd46;xw~FM*Qt zJo@x;uYp`f+^k@J6N1bjq);(R?Lco#NSZ11j1dL3p}{;`obU;v@nP{H}4 zeMAV%q!J*Y`)R2|v6#CTg2=GI&xz%D;Ab#)Gjc-Wbj6~X_7kF@xHu+;ZyAnHOsosc z31i8LokZ~VX`t`)?K4-OH^xhGl z?^uzKKdE14Ncn`MqEODil<`;v0L4O_x7M|__Mv?=Zl#fgy2ofo6}KwmR8=qd)RiR` zEjjFtlE&giAuQh-jOsE*$;y0FHWxy(Qx}$Bcx>yIEie$d3Gp*K7-xcD+|CWhZKEA{ zFaXfx!4g~yBTiUYYpm4h-?Bx4Em*Q5CrD$X&8#GiU?0eCC}|sNGwPM|R@2T+7Upe2 zHeq0V$aNgDrqgzshDCoRCxo#A!y79>YQP@?SXPuklJ7W)ZM-U-1|zgrVqttr+5n19 zz-5KR9GN);@TyN%3IhlWY8y{~t9Xm0eafE+hTt%4CWr%$ci&o41o-jpYGiz*WjWN>x{*f*- z1ZuGA$I7FeDvgpg#0U?b_m>>_@f80W*PU+a3Dw)gT2qX&^Cc%vVM)H4 zb$+=Gw1wyw0SlqqJr165PtfBeJxxDV1OeIkyic9@EpIahewSqMGP`(GB~b%jRXOt|b`%6kZPb3{nk zERn}Y42o<4shKr`MzR0?QX|tzSXXPw|EOApw2&NCtCedEPEIR@5;82$6MCrabc7cZ z!j%Cj@=(Db*HT1Ouv0*yaT-1*JAIon8#LPOdgX=<6^LkhiH0L(NGc&>HuGa-JybkQ z+EK<~pN}czC^%bsD8A*vhbjE2dPTSow74;dao=KgXp50f#s%eoxE|q9y7QCSiVMr` z`Z|a(ycq5r&`x=J|=uNSTI* zH7G6|_2Is(`^Q5uSP}pm9(n=n@$bF%+oOs25J(G;v5a>@lJZ3eNpF_OwN88Yby|%S zQ0gKDbm$arqv%31ZHigkCjL=O$Um%B2l)|DvX>Y_aG_f-A%Sc~#@V3TaC~8#Ng19= zf-d5`D^bHqkdQUzE}cDd<+uS;6$RucrZI(m*Wo&_=zFidcQHU98X3u*pw=V>9aS7W zkx4~Y3O%2*qR4?ktx;lt@|sZOF{MB2#`7(Pykr}BqlA2<8la#YiqS=?-h*1tJf+Oh zP>R=e^tB!uw$`!^{wKnnluqfEt>p={w9&5*J}S$I zj0m6$&S%>U5K7?^z`Y`wMcxNWU_GfMsgDhg@niUUS!%3u z0b5vB?J~C5Y<4HEUGbn?jJXS!p`*yb^VstGn&QA9ER?mx1KV;fAw#ZQOJtE$!4VHp z(@klJedw_X4RHcwofTb%YlshjOev}K$B*s$3SO#hikFmjsewVNBk+`_U8sxXsgbn{ zvEd-?@+Z~m`ndw=7b)G8?G-A4wUD)j-+Uc>F`>-fHND^|xQ9yuykvt&} zoweIk;(@#g{P)yL`cox!BlA!LqZwi2iDfQCr7xj^%rdgjC~FYa4%j$~jFy#H>znI6 zYv3&l;afxrDTJkzWI?T8*%Y-%_TC(UN}B9Fg)UzcU53lvJD(L~3oKIg#~4ARMY_LJ zLY208wn0q(L8)hvqF5*96)`!@B@zg)iJ1IH$a_N&FjVaFQ2(dF0PlQfiV zGef7)Lw#biL6ZG#*sVOf4za$(<#_Q4rncpTfyXLc)I|A-9t==3&tqy=pxA!Slm|)x&_j6WDO>;y zSg)*Wg?II@rY!W|C0>(4ukR@o694y`Vn&kqza4>kn#BJsy8N~1GF;++|9+u^vcC5Z zzy-DcZBx`%*7!6?_^%^SU9-m2MN)lanI%RkWOjJBTNJt%nR>P1(zioBqZLuaMc$W} z-P4C%fne-yA%eoN7WNY3Rv^=;SI2bvY zrX0ybc@MEK_45F!*uA)mk`cY2EH9w3p~&JIZF^@GkyNXe7h#IMNm13JN+@N*6G2Ai zEUChX!YA@p>c)*gFN2Z0{X;B*$J=!$T=5&I!opTGrJ&YS{lc(j?=D#lS+P`bq5EY*GwcQj z$e|H()Y2vQ<+OAf2jdSXTf(@ z1Y(9F(7jBHkvf~YypXL8+1Ca9sgn6Tz7Tj+k3$LsIf*1nMfrBD^pPrlHB_Yyv1pV^ zHf%C4+ee`~N~#E_VX`7`Y*^=2etFVli9s7l3go)b-3(8o zRqHEda1I#$RrK5_cd8MEx(p)9SFcg|fKmn<*60fNxy2Y28i0nhTSW<`OqZzYO1a^s zs+>_fnUhxKuVUr&78-&t|ENF_OhS5TXCDNbxPDL~m9`T;YF%@&HU6!F2Zz-&yMI`k zv|k8mk9>q`X7>*^;FSTpi%RPGnCrHvZ{mHl1snXkh4q#yD zk_&ehC>!Ec9=hR#GM0T&>_U?=TvJ^+yiuWu{(~Ucl)w4!c@N=lJ}9+-MRIAsZ+2KZ5%4smPZMw$fzck+lC%Od>WquN(!E! zX>~vc^SfT|aS;IjFL+}U#)-Q8PsUDVj{&LLb1*eH_T?jM5))TE!;nXz+J6+;BR6{j zi4?!>Ajy;1Rw9b!uqBfB5E>^t5Jrd0$n6kJf|_5Oq2`z5=61whP2uCpOir?#6h1C} zj#wDr{7n$8WcrJ8x7p#b!g{$!*I}RCW%w1lpdzsVQe%&53G4kTzg*Nq?D2WU9#4HN z+-P&tNIJze$9sdc=hLO0!=a{9q#Wvl;_TnLWEl;#y=$qbki5H0S8c?Fj}P)=x&J+k zI|@lE<8?Gix&$meDrh?to4SFbE`ub=Mlvz;n=hmh0FOwRunp$4S42J&UNwu5`9x|` z99*HbHBpj4o}uvfeA2{`QJle~oe@+?$%Z)47a|RsWikt~;O$Rm;>?9BH21!B=2eU_ zTSA4#7s;mhf&?%WM1u2p{T|>`gN)|U#d9<^x(o=t&9M=6DcET6G<-tZdpI&R;mG_K zX>l0_l2TVb0*qH4fARDy%&?JLAhzktNr@xBbcD)dS>l}-s|}CB2x0L31ZScZyOmD( zQes{3X6eurZP1~tuW3J$amPGA_eo5z5#{|7QAXF9-zfDQD&->UL~{v8;Bgi93VXD{ z$_qVIhIKGyb&GzrkCH_nekg$lS_AHDA}v@0xoWwqr6pxWI{|5tKGfUwXI9H@Fg#0b z&RLwVBdbrv6LiK-n?`+7$M5i|f8@TS?nsap!_M)8t~`ccQ<(>CCH7&aa&tvPEk&Wu zwda=;u=2#)rPvBjd7S?QY1(E|9E5I}jTKYeWpKCW{vEN!Ow1ozw-v5HxZAT2qk#^; z0#D7GUw2?X%J+++F?qU$t}^IQ(W$tKVLS=o3dy4$R9Hr3taS1tCF*bGyP9c4mnoRp z)d>rHM!gY-a~JqjEQx{hJA3FfvbY2hL3RzcAIfc7RW(NxSxi8Zs|EeyIPW$)YHTOv>te zI7}n1DsY-fkIzcXYom;dQF{Dv=}Tz{ck4Kk0K4S41q`b9q5co0&U`nm0eltPK#_+v z;lz|@`JEJ{k-&HhzqjEe65kiGW)QVZ-EjvVCWL2CIGT1^iXjj`@3J6rX7P$|qnkl? zw$g5B<}3-siWef}!^xEx!_0~|vWgPaFJ6T)OIv}t+$DzE4ao~)X6ii!mq2Dw#6f`o zjb*l+m^P5H5X2t@<)ji7h}{ep6GKyp{at+9nKd)jIWGPn{e?-e5iJf5F`q_jf#f@I z)(WJOKXHg_56K%i$M1jBMS4j#_jmZHga;#C6SFJR#`v_>vhTo6B(6Y`klHy2r&n))9G&nief()+! z0-NDhoK^ln6Rj3ahC2Z~6E(i1c?HyavO8kHtzKJdwN<_yrGGsfZsSu@pFn`Yi*ybE z(vg_3cd&h8aeDw1cndZZwFBTY+>mn@`mXP-yhR7EFh1w3R!aGk=874u2@ zDBsOV<8#>kE^LtdH)M#uZ-3f9vIu@m(iLimV-Rp4FqTmDqkD8SjoGB;Hb)5bh`-Z#X6`WD&s<*jqR+khNj(T?TVxB+#94HzQm!oEl zc+fZ^HinPTv1-^?IN6!}w$%L;@EBbH7;kX>&==9JgLcDmMSMInt6Oo#P~4|6_WZ(y vD`eZ`Jyp=P>iQ?jr7}4l-;rZL$kC4Ms4L{QL;3;7{$O!3}A+K delta 705 zcmc&yL2DC16z*=biD^}0sa`a3T5F78YYBoxR0wTI)6hU6LM~Bevy;BH+1;=^Q&J_= zlT_J*_(l&N0?iK)N-kc-s~7Pqh&S=pgLh|BMgM`9;bXq<&G)@G@9k^tkQh&lSJ~8| zG0?6~-wT)@kg~8XCLz(3kPKsW*5eXo_%De+G;{Au9T?g2Xoq-h!od#6R#Zq7;2yDE z?t7MKF|zB4=z=S?Ndvn@0`7|z7d{IJbuH2sZj0NVtIB|K;?QkIM3-y|>T=<%){0A0 zYjlSZN;;mmO_U^h>K5L}Uyf7acs|3vk>6VyC(glg*#95FVo@@5V;KzM4XuJ7;|tmb z9>rITDiA2+`@)5nXOnn8ab9cSqr^(41oLnSE>;tYz9USP`z~pFzH0MNOE_;-F?PCM zvBCsX8Ld`g-3@I@+Lf*l33Fb9*zR85!+Qhk|&nWoHz(;`}p#j&S^G=o{S9q0Zs z$A6D*v82Or^se|^*WvT1yo%c7M(WDwYiU!z217{00SrW#bg9GmZdZkj9ESUF@Jzr= sgwra-0J8Xf?FheB-Wa#FiHQI|otlf0hXoCb3mN>dzO3KW@aKBr7ok=8#{d8T diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree index 595f7d894c587389fdb04e5f41b3d5810ae29664..d55afaec1bce2d8647b71c9108874dc9f28861cd 100644 GIT binary patch delta 24 gcmcZ_dOeh-fpzMcjVx2tSiKk?er4S}Tg{3E0D++ii~s-t delta 22 ecmcZ}dNq`#fpzMsjVx2tn0*D*H_uhGVgUeY8VBhB diff --git a/docs/_build/doctrees/installation.doctree b/docs/_build/doctrees/installation.doctree index ab3f3e76951ef0718b2375f73369be7664407f06..cd79a1b78595d3edacfa83c4d88e57bfae93791f 100644 GIT binary patch literal 28684 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 Uqz~Iov}m49rX&g`aZT!f0lo=vxc~qF literal 11496 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 diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo index 2f585ae..f14ab2e 100644 --- a/docs/_build/html/.buildinfo +++ b/docs/_build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 0ddaa2a6a2c02a5cffaf66f59ffdd527 +config: 9e56602128238809abc61f630ee6f09e tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/html/.buildinfo.bak b/docs/_build/html/.buildinfo.bak deleted file mode 100644 index 2c7729e..0000000 --- a/docs/_build/html/.buildinfo.bak +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 75f74a8ba4eca8b78817fec4238c3b28 -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/html/_sources/guide/guide-tb_model.rst.txt b/docs/_build/html/_sources/guide/guide-tb_model.rst.txt deleted file mode 100644 index 160e6de..0000000 --- a/docs/_build/html/_sources/guide/guide-tb_model.rst.txt +++ /dev/null @@ -1,4 +0,0 @@ -Tutorial -======== - -ToDo: write Tutorials for the user guide. diff --git a/docs/_build/html/_sources/guide/guide.rst.txt b/docs/_build/html/_sources/guide/guide.rst.txt index d561e5a..8851ba5 100644 --- a/docs/_build/html/_sources/guide/guide.rst.txt +++ b/docs/_build/html/_sources/guide/guide.rst.txt @@ -1,13 +1,80 @@ .. _guide: -*********** -Users Guide -*********** +************************** +Jupyter Notebook Tutorials +************************** -The goal of this guide is to introduce you to the basic structures and functions that make up QuantumDNA. -Have a look at the :ref:`API documentation ` for a more detailed description of the classes and functions. +Welcome to the **QuantumDNA Jupyter Notebook Tutorials**! These tutorials and demonstrations are designed to help users explore and +understand the functionalities of the `qDNA` package through practical examples. + +For a detailed description of the classes and functions used in these tutorials, visit the :ref:`API documentation `. + +Overview +======== + +The Jupyter notebooks in the `tutorials` folder provide step-by-step demonstrations of various features and functionalities of the `qDNA` package. +Each tutorial focuses on a specific aspect, helping you get started with quantum physical description of DNA and applications of quantum biology. + +Tutorials +========= + +Below is a list of available tutorials. Click on each to access the detailed notebook: .. toctree:: - :maxdepth: 2 + :maxdepth: 1 + + PRE_2024 + Tight Binding Parameters + Tight Binding Method + Environment Simulation + Visualization + Evaluation + +Descriptions +------------ + +**PRE2024** + Reproduces all the figures presented in the reference paper :cite:`Herb2024`. + This serves as a comprehensive example of `qDNA`'s visualization and analysis features. + +**Tight_Binding_Parameters** + Learn the Linear Combination of Atomic Orbitals (LCAO) approach using Slater–Koster two-center + integrals and Harrison-type expressions. Ideal for tight-binding model parameterization. + +**Tight_Binding_Method** + Explore predefined and custom tight-binding models. Includes calculating time-averaged exciton + populations in the Fishbone Ladder Model (FLM) and simulating charge transfer in the + Fenna-Matthews-Olson (FMO) complex. + +**Environment_Simulation** + Model DNA excited-state relaxation and environmental interactions. This tutorial covers dephasing + and thermalization models inspired by Quantum Biology. + +**Visualization** + Use `qDNA`'s built-in plotting routines for effective result visualization. Learn to create custom + visualizations tailored to your data. + +**Evaluation** + Perform calculations for observables like exciton lifetimes, average charge separation, and dipole + moments. Includes parallelization features for efficient computation. + + +Getting Started +=============== + +These tutorials provide hands-on examples designed to guide you through using the `qDNA` package effectively. To get started: + +1. Navigate to the `tutorials` folder and open the desired `.ipynb` file in Jupyter Notebook or JupyterLab. +2. Follow the instructions provided in the notebook to run the cells and explore the package's features interactively. +3. Refer to the :ref:`API documentation ` for deeper insights into the functions and classes used in the tutorials. + + +Tips for Using the Tutorials +---------------------------- + +- **Run in a Jupyter Environment**: Ensure you have Jupyter Notebook or JupyterLab installed to execute the tutorials interactively. +- **Dependencies**: Before starting, confirm that all dependencies for `qDNA` are installed. Check the `requirements.txt` file in the repository for details. +- **Explore Further**: Modify and experiment with the code to deepen your understanding of the concepts. + - guide-tb_model.rst +We hope these tutorials help you leverage the full potential of the `qDNA` package for your quantum biology research! diff --git a/docs/_build/html/_sources/installation.rst.txt b/docs/_build/html/_sources/installation.rst.txt index ec1692e..7e1d87b 100644 --- a/docs/_build/html/_sources/installation.rst.txt +++ b/docs/_build/html/_sources/installation.rst.txt @@ -1,79 +1,204 @@ -Installation -============ -**NOTE**: These set-up instructions have only been tested on Windows. +****************** +Installation Guide +****************** + +Welcome to the installation guide for `QuantumDNA`. Follow the steps below to install the package, set up a virtual environment, and start using `qDNA` either through a Graphical User Interface or a Jupyter Notebook. + Installation via PyPI ---------------------- +===================== + +The easiest way to install `qDNA` is through PyPI. For best results, we recommend creating a new virtual environment to avoid package conflicts. + +Steps +----- -We recommend creating a new virtual environment and Jupyter notebook kernel to avoid conflicts with existing packages. +1. **Create a New Virtual Environment**: -1. Open the Windows Powershell and navigate to your project folder. Create a new virtual environment: + Open your terminal and navigate to your project folder. Run: .. code-block:: bash - python -m venv .venv + python -m venv .venv -2. Activate the virtual environment: +2. **Activate the Virtual Environment**: - .. code-block:: bash + - **Windows**: + + .. code-block:: bash + + .venv\Scripts\activate + + - **macOS/Linux**: - .venv/Scripts/activate.ps1 + .. code-block:: bash -3. Install the qDNA package: + source .venv/bin/activate + +3. **Install the `qDNA` Package**: .. code-block:: bash - pip install qDNA + pip install qDNA + +4. **Optional: Use `qDNA` Inside a Jupyter Notebook**: -*Optional*: Use `qDNA` inside a Jupyter notebook: + Install Jupyter and launch the notebook: .. code-block:: bash - pip install ipykernel - jupyter notebook + pip install ipykernel notebook + jupyter notebook + Installation via Cloning the GitHub Repository ----------------------------------------------- +============================================== + +If you plan to contribute to the development or make changes to the source code, install `qDNA` in editable mode by cloning its GitHub repository. + +Prerequisites +------------- + +Before proceeding, make sure the following prerequisites are met: + +1. **Python Installation**: + + - Verify that Python is installed by running: + + .. code-block:: bash -If you want to make changes to the source code, you can clone the project's GitHub repository and install it in editable mode. On Windows, you first need to install Git (`Download `_). + python --version -1. Clone the GitHub repository: + - If Python is not installed, download and install it from `python.org `_. + +2. **Linux/macOS Users**: + + - Ensure `pip` and `tkinter` are installed: + + .. code-block:: bash + + python3 -m pip --version + python3 -m tkinter + + - If they are not installed, install them using your package manager: + + - **Debian/Ubuntu**: + + .. code-block:: bash + + sudo apt install python3-pip python3-tk + + - **Fedora**: + + .. code-block:: bash + + sudo dnf install python3-pip python3-tkinter + +3. **Windows Users**: + + - Ensure Git is installed by running: + + .. code-block:: bash + + git --version + + - If Git is not installed, download and install it from `Git for Windows `_. + +Steps +----- + +1. **Clone the GitHub Repository**: .. code-block:: bash - git clone https://github.com/dehe1011/QuantumDNA.git + git clone https://github.com/dehe1011/QuantumDNA.git -2. Navigate to the directory of the cloned repository: +2. **Navigate to the Cloned Repository**: .. code-block:: bash - cd QuantumDNA + cd QuantumDNA + +3. **Run the Activation Script**: + + Use the provided activation script to complete the installation. Instructions vary by platform (see below). + + +Platform-Specific Instructions for Activation +============================================= + +**Windows** +----------- + +1. Navigate to the project directory: + + .. code-block:: powershell -3. Use the provided activation script to finish the installation. Optionally, you can open the Graphical User Interface or a Jupyter Notebook: + Set-Location -Path "C:\Users\\QuantumDNA" + +2. Run the activation script: + + .. code-block:: powershell + + powershell -ExecutionPolicy Bypass -File scripts\Activate.ps1 + + +**macOS** +--------- + +1. Navigate to the project directory: .. code-block:: bash - powershell -ExecutionPolicy Bypass -File scripts/activate.ps1 + cd /Users//QuantumDNA -If all tests passed, the package has been successfully installed, and you can access all the implemented functionalities. Enjoy! +2. Run the activation script: -Usage ------ + .. code-block:: bash -After installing the package, you can access the code via the Graphical User Interface or in a Jupyter Notebook simply by running the activation script again: + source scripts/activate -.. code-block:: bash +--- + +**Linux** +--------- + +1. Navigate to the project directory: + + .. code-block:: bash + + cd /home//QuantumDNA + +2. Run the activation script: + + .. code-block:: bash + + source scripts/activate + +--- + +Post-Installation and Usage +=========================== + +If all tests pass, the package has been successfully installed! You can now: + +- Launch the **Graphical User Interface** or +- Start using `qDNA` inside a **Jupyter Notebook**. + +Run the activation script as mentioned in the platform-specific instructions to start the **Graphical User Interface** or a **Jupyter Notebook**. It is recommended to always run the activation script. - powershell -ExecutionPolicy Bypass -File scripts/activate.ps1 Uninstallation --------------- +============== -Uninstall the package by running: +To remove the package: .. code-block:: bash - pip uninstall qDNA + pip uninstall qDNA + +If you cloned the GitHub repository, manually delete the `QuantumDNA` folder from your computer. + -If you cloned the GitHub repository, remember to manually delete the `QuantumDNA` folder from your computer. +🎉 **Congratulations!** You’ve successfully installed and set up `QuantumDNA`. Enjoy exploring the physics of DNA with this powerful tool. diff --git a/docs/_build/html/apidoc/apidoc.html b/docs/_build/html/apidoc/apidoc.html index 13a3450..3fec36b 100644 --- a/docs/_build/html/apidoc/apidoc.html +++ b/docs/_build/html/apidoc/apidoc.html @@ -16,13 +16,15 @@ - + + + - + @@ -46,7 +48,7 @@