حزمة QUIP
عبارة عن مجموعة من الأدوات البرمجية لتنفيذ عمليات محاكاة الديناميكيات الجزيئية. إنه ينفذ مجموعة متنوعة من الإمكانات بين الذرية وميكانيكا الكم ذات الارتباط المحكم، كما أنه قادر على استدعاء الحزم الخارجية، ويعمل كمكونات إضافية لبرامج أخرى مثل LAMMPS وCP2K وأيضًا إطار عمل python ASE. يتم أيضًا دعم مجموعات هجينة مختلفة بأسلوب QM/MM، مع التركيز بشكل خاص على أنظمة المواد مثل المعادن وأشباه الموصلات.
لمزيد من التفاصيل، راجع الوثائق عبر الإنترنت. توجد وثائق منفصلة لـ SOAP وGAP.
يتم ضمان الدعم طويل المدى للحزمة من خلال:
تمت كتابة أجزاء من هذا الكود بواسطة: ألبرت بارتوك بارتاي، ليفيا بارتوك بارتاي، فيديريكو بيانشيني، أنك بوتينوث، ماركو كاتسين، سيلفيا سيريدا، غابور تشانيي، أليسيو كوميسو، توم داف، إس تي جون، كيارا جاتينوني، جيانبيترو موراس، جيمس كرمود. ،ليتيف مونيس، آلان نيكول، ديفيد باكوود، لارس باستوكا، جيوفاني بيرالتا، إيفان سولت، أوليفر ستريكسون، فويتشيك سلاختا، تشيسيلا فارناي، ستيفن وينفيلد، تاماس ستينشيل، آدم فيكيت.
حقوق الطبع والنشر 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
}
إذا كنت تستخدم واجهة quippy
Python، فيرجى ذكر ما يلي:
@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
Python؛ يوصى باستخدام أحدث إصدار) وُلد برنامج QUIP بسبب الحاجة إلى الربط بكفاءة بين مجموعة واسعة من النماذج المختلفة، سواء التجريبية أو الميكانيكية الكمومية. لن تكون قادرة على المنافسة من حيث الأداء مع رموز مثل LAMMPS وGromacs. تقوم بيئة المحاكاة الذرية بذلك أيضًا، ويتم استخدامها على نطاق أوسع بكثير، ولكن برنامج QUIP لديه عدد من الميزات الفريدة:
quippy
يتوفر الملف الثنائي لـ QUIP وارتباطات quippy Python المرتبطة به والتي توفر إمكانية التشغيل التفاعلي مع بيئة المحاكاة الذرية (ASE) من فهرس حزمة Python (PyPI) تحت اسم الحزمة quippy-ase
. هذا يعني أنه يمكنك تثبيت الإصدار الأحدث باستخدام:
pip install quippy-ase
يؤدي التثبيت عبر pip
أيضًا إلى إتاحة برامج سطر الأوامر quip
و gap_fit
(مما يوفر الدليل الذي تقوم النقطة بتثبيت البرامج النصية إليه على PATH
الخاص بك).
حاليًا، تتوفر العجلات لمعماريات x86_64
مع Python 3.6+ على نظام التشغيل macOS وتوزيعات Linux المستندة إلى glibc (مثل Ubuntu وCentOS) ولنظام التشغيل macOS Arm64. يتم تحديث العجلات بشكل دوري باستخدام GitHub Actions CI. الرجاء فتح المشكلات هنا إذا كانت لديك مشكلات في التثبيت باستخدام pip
.
إذا كان لديك إمكانية الوصول إلى Docker أو Singularity، فيمكنك تجربة إحدى الصور المجمعة مسبقًا للتشغيل بسرعة.
لتجميع QUIP الحد الأدنى من المتطلبات هي:
مترجم فورتران العامل. تم اختبار QUIP باستخدام gfortran
4.4 والإصدارات الأحدث، و ifort
11.1.
مكتبات الجبر الخطي BLAS وLAPACK. تم اختبار QUIP باستخدام الإصدارات المرجعية libblas-dev
و liblapack-dev
على Ubuntu 12.04 و mkl
11.1 مع ifort
.
MPI: لاستخدام موازي MPI لـ 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 هي طريقة للتعلم الآلي تستخدم انحدار عملية Gaussian، وتحتاج إلى ملفات بيانات كبيرة لتشغيلها. يمكنك العثور على الإمكانات التي تم نشرها بالإضافة إلى بيانات التدريب في مستودع البيانات الخاص بنا، راجع أيضًا المستندات عبر الإنترنت.
حدد البنية الخاصة بك من خلال البحث في دليل 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/${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 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
يحتوي على البيانات التالية التي تمثل ذرات النحاس في شبكة FCC مكعبة::
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 ( 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
(وإلا قد تتسبب إصدارات المكتبة في حدوث تعارضات غير متوقعة).
لتجميع أغلفة بايثون ( 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 واستكشاف مشكلات البناء الشائعة وإصلاحها في الوثائق عبر الإنترنت.
لتشغيل اختبارات الوحدة والانحدار والتي تعتمد على 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"
لا نوصي باستخدام المترجمات والبايثون التي تشحنها شركة 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.