แพ็คเกจ QUIP
คือชุดเครื่องมือซอฟต์แวร์สำหรับดำเนินการจำลองพลวัตของโมเลกุล ใช้ศักยภาพระหว่างอะตอมที่หลากหลายและกลไกควอนตัมที่มีผลผูกพันแน่นหนา และยังสามารถเรียกใช้แพ็คเกจภายนอก และทำหน้าที่เป็นปลั๊กอินให้กับซอฟต์แวร์อื่นๆ เช่น LAMMPS, CP2K และเฟรมเวิร์ก Python ASE ได้ด้วย การผสมผสานแบบไฮบริดต่างๆ ยังได้รับการสนับสนุนในรูปแบบของ QM/MM โดยเน้นไปที่ระบบวัสดุ เช่น โลหะและเซมิคอนดักเตอร์โดยเฉพาะ
สำหรับรายละเอียดเพิ่มเติม โปรดดูเอกสารออนไลน์ มีเอกสารแยกต่างหากสำหรับ SOAP และ GAP
รับประกันการสนับสนุนแพ็คเกจระยะยาวโดย:
บางส่วนของโค้ดนี้เขียนโดย: Albert Bartok-Partay, Livia Bartok-Partay, Federico Bianchini, Anke Butenuth, Marco Caccin, Silvia Cereda, Gabor Csanyi, Alessio Comisso, Tom Daff, ST John, Chiara Gattinoni, Gianpietro Moras, James Kermode เลติฟ โมเนส, อลัน นิโคล, เดวิด แพ็ควูด, ลาร์ส ปาสเตวก้า, จิโอวานนี่ เปราลตา, อิวาน โซลต์, โอลิเวอร์ สตริคสัน, วอจเชียค สซลาชต้า, ซิลล่า วาร์ไน, สตีเว่น วินฟิลด์, ทามาส เค สเตนเซล, อดัม เฟเกเต้
ลิขสิทธิ์ 2006-2021.
เวอร์ชันที่เปิดเผยต่อสาธารณะส่วนใหญ่จะเผยแพร่ภายใต้ใบอนุญาต GNU General Public เวอร์ชัน 2 โดยบางส่วนเป็นสาธารณสมบัติ รหัส GAP ซึ่งรวมอยู่ในโมดูลย่อย ได้รับการเผยแพร่ภายใต้ใบอนุญาตแหล่งที่มาทางวิชาการที่ไม่ใช่เชิงพาณิชย์
โปรดอ้างอิงสิ่งพิมพ์ต่อไปนี้หากคุณใช้ QUIP:
@ARTICLE { Csanyi2007-py ,
title = " Expressive Programming for Computational Physics in Fortran 95+ " ,
author = " Cs{'a}nyi, G{'a}bor and Winfield, Steven and Kermode, J R and De
Vita, A and Comisso, Alessio and Bernstein, Noam and Payne,
Michael C " ,
journal = " IoP Comput. Phys. Newsletter " ,
pages = " Spring 2007 " ,
year = 2007
}
หากคุณใช้อินเทอร์เฟซ Python quippy
โปรดอ้างอิง:
@ARTICLE { Kermode2020-wu ,
title = " f90wrap: an automated tool for constructing deep Python
interfaces to modern Fortran codes " ,
author = " Kermode, James R " ,
journal = " J. Phys. Condens. Matter " ,
month = mar,
year = 2020 ,
keywords = " Fortran; Interfacing; Interoperability; Python; Wrapping codes;
f2py " ,
language = " en " ,
issn = " 0953-8984, 1361-648X " ,
pmid = " 32209737 " ,
doi = " 10.1088/1361-648X/ab82d2 "
}
หากคุณใช้รหัส GAP โปรดอ้างอิง
@ARTICLE { Bartok2010-pw ,
title = " Gaussian approximation potentials: the accuracy of quantum
mechanics, without the electrons " ,
author = " Bart{'o}k, Albert P and Payne, Mike C and Kondor, Risi and
Cs{'a}nyi, G{'a}bor " ,
journal = " Phys. Rev. Lett. " ,
volume = 104 ,
number = 13 ,
pages = " 136403 " ,
month = apr,
year = 2010 ,
issn = " 0031-9007, 1079-7114 " ,
pmid = " 20481899 " ,
doi = " 10.1103/PhysRevLett.104.136403 "
}
ศักยภาพระหว่างอะตอมต่อไปนี้มีการเข้ารหัสหรือเชื่อมโยงใน QUIP:
มีการใช้รูปแบบการทำงานและพารามิเตอร์ที่มีผลผูกพันแน่นดังต่อไปนี้:
สามารถเรียกแพ็คเกจภายนอกต่อไปนี้:
quippy
แนะนำให้ใช้เวอร์ชันล่าสุด) QUIP ถือกำเนิดขึ้นเนื่องจากความจำเป็นในการเชื่อมโยงโมเดลต่างๆ ที่หลากหลาย ทั้งเชิงประจักษ์และเชิงควอนตัมเข้าด้วยกันอย่างมีประสิทธิภาพ จะไม่สามารถแข่งขันได้ในแง่ของประสิทธิภาพด้วยโค้ดเช่น LAMMPS และ Gromacs Atomic Simulation Environment ก็ทำเช่นนี้เช่นกัน และมีการใช้งานกันอย่างแพร่หลายมากขึ้น แต่ QUIP มีคุณสมบัติพิเศษหลายประการ:
quippy
ไบนารีสำหรับ QUIP และการผูก Python quippy ที่เกี่ยวข้องที่ให้การทำงานร่วมกันกับ Atomic Simulation Environment (ASE) มีให้จากดัชนีแพ็คเกจ Python (PyPI) ภายใต้ชื่อแพ็คเกจ quippy-ase
ซึ่งหมายความว่าคุณสามารถติดตั้งรุ่นล่าสุดด้วย:
pip install quippy-ase
การติดตั้งผ่าน pip
ยังทำให้โปรแกรมบรรทัดคำสั่ง quip
และ gap_fit
พร้อมใช้งาน (โดยระบุไดเร็กทอรีที่ pip ติดตั้งสคริปต์ให้อยู่บน PATH
ของคุณ)
ปัจจุบัน Wheel พร้อมใช้งานสำหรับสถาปัตยกรรม x86_64
ที่มี Python 3.6+ บน macOS และ Linux ที่ใช้ glibc (เช่น Ubuntu, CentOS) และสำหรับ macOS arm64 ล้อได้รับการอัปเดตเป็นระยะโดยใช้ GitHub Actions CI โปรดเปิดปัญหาที่นี่ หากคุณมีปัญหาในการติดตั้งด้วย pip
หากคุณมีสิทธิ์เข้าถึง Docker หรือ Singularity คุณสามารถลองใช้อิมเมจที่คอมไพล์แล้วเพื่อเริ่มต้นและทำงานได้อย่างรวดเร็ว
ในการรวบรวม QUIP ข้อกำหนดขั้นต่ำคือ:
คอมไพเลอร์ Fortran ที่ใช้งานได้ QUIP ได้รับการทดสอบด้วย gfortran
4.4 ขึ้นไป และ ifort
11.1
ไลบรารีพีชคณิตเชิงเส้น BLAS และ LAPACK QUIP ได้รับการทดสอบกับเวอร์ชันอ้างอิง libblas-dev
และ liblapack-dev
บน Ubuntu 12.04 และ mkl
11.1 พร้อมด้วย ifort
MPI: หากต้องการใช้ MPI Parallisatin ของ gap_fit
คุณต้องมีไลบรารี ScaLAPACK เช่น libscalapack-openmpi
บน Ubuntu หรือเป็นส่วนหนึ่งของ MKL
โคลนพื้นที่เก็บข้อมูล QUIP จาก GitHub ตัวเลือก --recursive
จะนำโมดูลย่อยเข้ามาโดยอัตโนมัติ (หากคุณไม่ทำเช่นนี้ คุณจะต้องเรียกใช้ git submodule update --init --recursive
จากไดเร็กทอรี QUIP ระดับบนสุดหลังจากการโคลนนิ่ง) ::
git clone --recursive https://github.com/libAtoms/QUIP.git
โมดูลย่อยหนึ่งโมดูลคือรหัส GAP ซึ่งสามารถพบได้ใน src/GAP
โปรดทราบว่า GAP ได้รับการเผยแพร่ภายใต้ใบอนุญาตอื่น
GAP เป็นวิธีการเรียนรู้ของเครื่องที่ใช้การถดถอยกระบวนการแบบเกาส์เซียน และต้องใช้ไฟล์ข้อมูลขนาดใหญ่ในการทำงาน คุณสามารถค้นหาศักยภาพที่ได้รับการเผยแพร่ตลอดจนข้อมูลการฝึกอบรมในพื้นที่เก็บข้อมูลของเรา โปรดดูเอกสารออนไลน์ด้วย
ตัดสินใจเลือกสถาปัตยกรรมของคุณโดยดูในไดเร็กทอรี arch/
และกำหนดตัวแปรสภาพแวดล้อม QUIP_ARCH
เช่น::
export QUIP_ARCH=linux_x86_64_gfortran
สำหรับ gfortran มาตรฐานบน Linux ที่นี่คือที่ที่คุณสามารถปรับเปลี่ยนคอมไพเลอร์ที่จะใช้ได้ หากคุณไม่ชอบค่าเริ่มต้น คุณอาจต้องสร้างไฟล์ arch/Makefile.${QUIP_ARCH}
ของคุณเองโดยอิงจากไฟล์ที่มีอยู่สำหรับระบบที่แปลกใหม่กว่านี้
MPI: ไฟล์อาร์คบางไฟล์มีการปรับแต่งสำหรับการใช้ MPI อยู่แล้ว ซึ่งมักจะมี mpi
ในชื่อ เช่น linux_x86_64_gfortran_openmpi+openmp
ปรับแต่ง QUIP ตั้งค่าไลบรารีคณิตศาสตร์ และมีตัวเลือกการเชื่อมโยง::
make config
Makefile.config จะสร้างไดเร็กทอรี build, build/${QUIP_ARCH}
และสิ่งปลูกสร้างทั้งหมดจะเกิดขึ้นที่นั่น ขั้นแรกมันจะถามคำถามคุณเกี่ยวกับสถานที่ที่คุณเก็บห้องสมุดและสิ่งของอื่นๆ หากคุณไม่ได้ใช้สิ่งที่ห้องสมุดขอ ให้เว้นว่างไว้ คำตอบจะถูกจัดเก็บไว้ใน Makefile.inc
ในไดเร็กทอรี build/${QUIP_ARCH}
และคุณสามารถแก้ไขได้ในภายหลัง (เช่น เปลี่ยนตัวเลือกคอมไพเลอร์ การเพิ่มประสิทธิภาพ หรือดีบัก)
หากคุณทำการเปลี่ยนแปลงที่สำคัญกับการกำหนดค่าในภายหลัง เช่น การเปิดใช้งานหรือปิดใช้งานการสนับสนุนแบบแน่นหนา คุณควรบังคับให้สร้างใหม่ทั้งหมดโดยทำการ make deepclean; make
.
MPI: หากต้องการใช้ MPI แบบขนานของ gap_fit
คุณต้องเพิ่มไลบรารีระบบของคุณไปยังตัวเลือกการเชื่อมโยง เช่น -lscalapack
หรือ -lscalapack-openmpi
เปิดใช้งานการสนับสนุน GAP เปิดใช้งานการแบ่งแยก QR และเปิดใช้งาน ScaLAPACK
รวบรวมโปรแกรม โมดูล และไลบรารีทั้งหมด::
make
จากไดเรกทอรี QUIP
ระดับบนสุด โปรแกรมทั้งหมดถูกสร้างขึ้นใน build/${QUIP_ARCH}/
คุณยังสามารถค้นหาไฟล์อ็อบเจ็กต์และไลบรารีที่คอมไพล์แล้ว ( libquip.a
) ในไดเร็กทอรีนั้นได้ สามารถเรียกโปรแกรมได้โดยตรงจากไดเร็กทอรีนั้น
เป้าหมาย make ที่มีประโยชน์อื่นๆ ได้แก่:
make install
: คัดลอกโปรแกรมที่คอมไพล์แล้วทั้งหมดที่สามารถค้นหาไปยัง QUIP_INSTALLDIR
หากถูกกำหนดไว้และเป็นไดเร็กทอรี (ต้องมีพาธแบบเต็ม) และคัดลอกโครงสร้างที่รวมกลุ่มไปยัง QUIP_STRUCTS_DIR
หากถูกกำหนดไว้
make libquip
: คอมไพล์ QUIP เป็นไลบรารีและลิงก์ไปยังมัน นี่จะทำให้ไลบรารีต่างๆ ทั้งหมดและรวมเข้าเป็นหนึ่งเดียว: build/${QUIP_ARCH}/libquip.a
ซึ่งเป็นสิ่งที่คุณต้องการเชื่อมโยงด้วย (เช่นเดียวกับ LAPACK)
จุดเริ่มต้นที่ดีคือการใช้โปรแกรม quip
ซึ่งสามารถคำนวณคุณสมบัติของการกำหนดค่าอะตอมมิกโดยใช้แบบจำลองต่างๆ ได้ ตัวอย่างเช่น::
quip atoms_filename=test.xyz init_args= ' IP LJ '
param_filename=share/Parameters/ip.parms.LJ.xml E
สมมติว่าคุณมีไฟล์ชื่อ test.xyz
โดยมีข้อมูลต่อไปนี้ซึ่งแสดงถึงอะตอม Cu ในลูกบาศก์ fcc lattice::
4
Lattice="3.61 0 0 0 3.61 0 0 0 3.61" Properties=species:S:1:pos:R:3
Cu 0.000 0.000 0.000
Cu 0.000 1.805 1.805
Cu 1.805 0.000 1.805
Cu 1.805 1.805 0.000
พารามิเตอร์ Lennard-Jones ในตัวอย่างข้างต้นถูกกำหนดไว้ในไฟล์ ip.parms.LJ.xml
ภายใต้ share/Parameters
(ตรวจสอบให้แน่ใจว่าพาธไปยังไฟล์นี้ถูกต้อง) รูปแบบของการกำหนดค่าอะตอมมิกจะได้รับในรูปแบบ Extended XYZ ซึ่งบรรทัดแรกคือจำนวนอะตอม บรรทัดที่สองคือชุดของคู่คีย์=ค่า ซึ่งอย่างน้อยจะต้องมีคีย์ Lattice ที่ให้กล่องขอบเขตตามระยะเวลาและ ปุ่มคุณสมบัติที่อธิบายบรรทัดที่เหลือ ค่าของคุณสมบัติคือลำดับของแฝดที่คั่นด้วยเครื่องหมายโคลอน (:) ซึ่งให้ชื่อ ประเภท และจำนวนคอลัมน์ โดยประเภทที่กำหนดโดย I สำหรับจำนวนเต็ม R สำหรับจำนวนจริง และ S สำหรับสตริง
อาร์กิวเมนต์สตริงส่วนใหญ่สามารถถูกแทนที่ด้วย --help
และโปรแกรม QUIP จะพิมพ์รายการคำหลักที่อนุญาตพร้อมข้อความช่วยเหลือสั้น ๆ เกี่ยวกับการใช้งาน ดังนั้น เช่น init_args=--help
จะให้รายการประเภทโมเดลที่เป็นไปได้ (และชุดค่าผสมบางส่วน) . การแยกวิเคราะห์เป็นแบบเรียกซ้ำ ดังนั้น init_args="IP --help"
จะดำเนินการแสดงรายการประเภทของศักยภาพระหว่างอะตอม (IP) ที่มีอยู่
ในการคอมไพล์ Python wrappers ( quippy
) ข้อกำหนดขั้นต่ำมีดังนี้ f90wrap
จะถูกติดตั้งโดยอัตโนมัติโดยกระบวนการสร้าง แต่คุณอาจต้องตรวจสอบว่าไดเร็กทอรีที่ pip
ติดตั้งสคริปต์ปฏิบัติการนั้นอยู่บนพาธของคุณ (เช่น โดยการตั้งค่า PATH=~/.local/bin:$PATH
)
numpy>=1.5.0
)ase>=3.17.0
) หมายเหตุ: หากคุณใช้สภาพแวดล้อมเสมือน Python (virtualenv) และต้องการติดตั้ง quippy
ลงไป ตรวจสอบให้แน่ใจว่าสภาพแวดล้อมนั้นเปิดใช้งานแล้ว ( source <env_dir>/bin/activate
โดยที่ <env_dir>
เป็นรากของสภาพแวดล้อมเสมือนของคุณ) ก่อน การสร้าง quippy
(มิฉะนั้นเวอร์ชันไลบรารีอาจทำให้เกิดข้อขัดแย้งที่ไม่คาดคิด)
หากต้องการคอมไพล์ Python wrappers ( quippy
) ให้รัน::
make quippy
Quippy สามารถใช้ได้โดยการเพิ่มไดเร็กทอรี lib
ใน quippy/build/${QUIP_ARCH}
ให้กับ $PYTHONPATH
ของคุณ อย่างไรก็ตาม จะสะดวกกว่าถ้าติดตั้งลงในการกระจาย Python เฉพาะ::
make install-quippy
จะติดตั้งลงใน virtualenv ปัจจุบันหรือพยายามติดตั้งทั้งระบบ (มักจะล้มเหลวหากไม่มี sudo
) หากต้องการติดตั้งสำหรับผู้ใช้ปัจจุบันเท่านั้น (ใน ~/.local
) ให้ดำเนินการคำสั่ง QUIPPY_INSTALL_OPTS=--user make install-quippy
หรือใช้ QUIPPY_INSTALL_OPTS=--prefix=<directory>
เพื่อติดตั้งลงในไดเร็กทอรีเฉพาะ QUIPPY_INSTALL_OPTS
ยังสามารถตั้งค่าในไฟล์ build/${QUIP_ARCH}/Makefile.inc
รายละเอียดเพิ่มเติมเกี่ยวกับกระบวนการติดตั้งที่ยุ่งยากและการแก้ปัญหาสำหรับปัญหาบิลด์ทั่วไปมีอยู่ในเอกสารออนไลน์
เพื่อรันการทดสอบหน่วยและการถดถอยซึ่งขึ้นอยู่กับ quippy
:: bash make test
หากต้องการกลับสู่สถานะใกล้กับโคลนใหม่ ให้ใช้ bash make distclean
ฟังก์ชันบางอย่างใช้ได้เฉพาะเมื่อคุณตรวจสอบโมดูลอื่นๆ ภายในไดเร็กทอรี QUIP/src/
เช่น ThirdParty
(พารามิเตอร์ DFTB, โมเดลน้ำ TTM3f)
หากต้องการเรียกใช้ศักยภาพ QUIP ผ่าน LAMMPS make libquip
เพื่อนำ QUIP เข้าสู่แบบฟอร์มไลบรารี จากนั้นทำตามคำแนะนำในเอกสารประกอบของ LAMMPS คุณต้องมีเวอร์ชันอย่างน้อย 11 สิงหาคม 2017 หรือใหม่กว่า
cd src/GAP
git checkout < commit >
หรือ
git checkout main
การอัพเดตเวอร์ชันในที่เก็บ QUIP
:
cd ../..
git add src/GAP
git commit -m "updating the version of GAP"
เราไม่แนะนำคอมไพเลอร์และ Python ที่จัดส่งโดย Apple และเราไม่ทดสอบความเข้ากันได้กับสิ่งเหล่านั้น ใช้ MacPorts หรือ Homebrew เพื่อรับคอมไพเลอร์ GNU และใช้ python จากที่นั่นหรือ Anaconda จากการแก้ไขนี้ gcc-8.1 ก่อให้เกิดข้อผิดพลาดของคอมไพเลอร์ภายใน แต่ gcc-4.6 ถึง gcc-7 ก็ใช้ได้
ล้อถูกสร้างขึ้นจากคำขอแบบพุชและดึงสู่ public
โดยใช้ cibuildwheel กับเวิร์กโฟลว์นี้
หากต้องการให้ผู้สมัครปล่อยสร้างแท็กที่มีส่วนต่อท้ายเช่น -rc1
สำหรับความพยายามครั้งแรก ให้กดเพื่อทริกเกอร์บิลด์:
git commit -m ' release v0.x.z-rc1 '
git tag v0.x.y-rc1
git push --tags
หากทุกอย่างเป็นไปด้วยดี ไฟล์ .whl
จะแสดงเป็นเนื้อหาภายใน GitHub รุ่นใหม่ ขณะนี้กระบวนการติดตั้งสามารถทดสอบได้ในเครื่องแล้ว
เมื่อทุกอย่างถูกต้องแล้ว ให้ออกเวอร์ชันเต็ม (เช่น สร้างแท็กชื่อเพียง v0.xy
โดยไม่มีส่วนต่อท้าย -rc1
) สิ่งนี้จะทริกเกอร์การอัปโหลดวงล้อและการกระจายแหล่งที่มาไปยัง PyPI