1. إعداد بيئة حوسبة لتشغيل 3T-VASP
ملاحظة: يوصى باستخدام Linux27 للخطوات التالية.
- قم بإعداد بيئة conda28 المخصصة لتشغيل 3T-VASP.
- قم بتثبيت conda (مثل miniconda) على جهاز Linux باتباع التعليمات الرسمية (راجع جدول المواد للحصول على الرابط).
- قم بإنشاء بيئة 3T conda جديدة وتنشيطها وتثبيت git عن طريق تشغيل الأوامر التالية:
conda create --name 3T python = 3.11
conda تنشيط 3T
conda تثبيت git -c conda-forge
- استنساخ مستودع 3T-VASP github وأدخل الدليل
https://github.com/jpmailoa/External_3T.git استنساخ git
External_3T القرص المضغوط
- قم بتثبيت mamba لإدارة تبعيات conda، وقم بتثبيت المكتبات المطلوبة لبيئة 3T conda:
conda تثبيت مامبا -c conda-forge
Mamba install --file requirements.txt -c pytorch -c conda-forge -c rdkit
- قم بتثبيت البرنامج GROMACS في بيئة 3T.
- قم بتثبيت GROMACS في بيئة 3T conda (يمكن العثور على تعليمات التثبيت في جدول المواد).
ملاحظة: إذا كان المستخدم لا يخطط لمعالجة أي جزيء جديد بتنسيق .pkl (انظر الخطوة 2.3) ويمكنه العمل مع الجزيئات الموجودة التي تمت معالجتها مسبقا (في شكل ملف .pkl)، فقد يتم تخطي تثبيت GROMACS هذا (الخطوة 1.2).
- قم بتثبيت الإصدار المعدل من InterMol في بيئة 3T.
- اتبع هذه الإرشادات لتثبيت إصدار إصلاح الأخطاء من InterMol:
CD utils/Convert_Gromacs_LAMMPS/InterMol
بناء setup.py Python
تثبيت setup.py python
قرص مضغوط .. /.. /..
ملاحظة: إذا كان المستخدم لا يخطط لمعالجة أي جزيء جديد بتنسيق .pkl (انظر الخطوة 2.3) ويمكنه العمل مع الجزيئات الموجودة التي تمت معالجتها مسبقا (في شكل ملف .pkl) ، فقد يتم تخطي تثبيت InterMol هذا (الخطوة 1.3).
- حدد مسار برنامج VASP في التعليمات البرمجية 3T-VASP.
- قم بتثبيت برنامج VASP على بيئة 3T. يمكن العثور على التعليمات والبرامج التعليمية في جدول المواد.
- افتح الملف "utils / calculator_3T_VASP.py" وتحقق من وظيفة "run_VASP". ابحث عن السطر الافتراضي التالي في البرنامج النصي Python:
os.system('Nohup mpirun -n '+n_gpu+' --allow-run-as-root ~/software/vasp.6.2.1/bin/vasp_std')
- يجب تعديل السطر الافتراضي أعلاه إلى استدعاء نظام نظام التشغيل الذي يشير إلى الملف القابل للتنفيذ VASP للمستخدم ويحدد موارد الحوسبة، على سبيل المثال:
نظام التشغيل OS('mpirun -np 2 /path/to/vasp/bin/vasp_std')
- تأكد من توفر مكتبات الجهات الخارجية الضرورية غير التابعة ل Python في بيئة 3T conda عن طريق تشغيل هذه الأوامر في محطة Linux (أو التثبيت إذا لزم الأمر):
جي إم إكس
ويجيت
فك
باكمول
ملاحظة: سيتم استدعاء هذه الأوامر فقط أثناء المعالجة المسبقة لملف تنسيق حقل قوة الجزيء، لذلك إذا كان المستخدم يخطط فقط للعمل مع ملفات .pkl الجزيئية المعالجة مسبقا، فلن يلزم تثبيت مكتبتي "wget" و"unzip".
- قم بإجراء تشغيل تجريبي للتأكد من تكوين 3T-VASP بشكل صحيح.
- استخدم Python لتشغيل أي من البرامج النصية للاختبار التالية ، والتي يتم توفيرها بناء على منشور سابق24:
بايثون randomize_3T_bulk_electrolyte_reduction.py
بايثون randomize_3T_bulk_electrolyte_oxidation.py
- سيؤدي التنفيذ الناجح إلى إنشاء سجلات في ملف الإخراج "default.log" ، والتي يمكن مراقبتها في محطة Linux منفصلة (المثال الموضح في الشكل 2).

الشكل 2: مثال على محتوى ملف سجل 3T أثناء تشغيل تجريبي بعد التثبيت الناجح. يقوم ملف السجل الافتراضي ببساطة بتسجيل رقم الخطوة الحالي لدورة 3T ووقت الحوسبة المنقضي منذ بداية الدورة. الرجاء النقر هنا لعرض نسخة أكبر من هذا الرقم.
2. إعداد ملفات إدخال 3T-VASP
- قم بإعداد هيكل شبكي الصندوق الدوري بتنسيق ملف VASP POSCAR.
- قم بتسمية ملفات الشبكة 3T-VASP باسم ".vasp" واحفظها في مجلد فرعي من مجلد "الإدخال" (مثل مجلد "الإدخال / Electrolyte_Reduction"). اكتب الملفات بتنسيق ملف VASP POSCAR. يظهر أدناه مثال على ملف POSCAR الشبكي PBC الذي يحتوي على ثلاثة كاتيونات ليثيوم بداخله في الشكل 3.
- قم بإعداد ملف تجاوز خاصية هيكل شبكية الصندوق الدوري.
- قم بتسمية خاصية البنية الشبكية 3T-VASP هذه لتجاوز الملفات باسم ".override" ، وضعها في المجلد الفرعي لمجلد "الإدخال" (مثل مجلد "الإدخال / Electrolyte_Reduction" من الخطوة 2.1) ، واكتبها بتنسيق JSON كقاموس مع إدخال المفتاح "movable_group" و "atom_charge_proximity" (انظر المثال في الشكل 4).
- قم بإعداد ملفات بنية الجزيء بتنسيق ملف XYZ.
- قم بتسمية ملفات بنية جزيء 3T-VASP هذه باسم ".xyz" (انظر المثال في الشكل 5) وضعها في مجلد "الإدخال". سيتحقق 3T-VASP مما إذا كان ".xyz" قد تم تحويله مسبقا إلى ملف .pkl أم لا ، وإذا لم يكن الأمر كذلك ، معالجة الجزيء باستخدام خادم ويب لمعلمة حقل قوة SwissParam خارجيمجاني 29. إذا كانت معلمات حقل القوة تستند إلى خادم ويب آخر مثل LigParGen30 أو مطلوب تحديد المعلمات اليدوية ، فيرجى الرجوع إلى الخطوة 2.6.
- قم بإعداد ملفات إدخال VASP للقالب لاستخدامها أثناء كل خطوة من خطوات 3T-VASP.
- استخدم ملفات إدخال VASP القياسية مثل INCAR و KPOINTS و POTCAR (POSCAR غير مطلوب). في ملف INCAR ، تأكد من أن عدد الخطوات في تشغيل الديناميكيات الجزيئية في نيو ساوث ويلز إما لم يتم تعيينه أو تعيينه على القيمة الافتراضية ل NSW = 0 (المثال الموضح في الشكل 6). ضع هذه الملفات في مجلد فرعي من مجلد "templates/VASP" (مثل "templates/vasp/Electrolyte_Reduction").
- قم بإعداد ملف تكوين 3T يقوم بتكوين جميع ملفات الإدخال الأخرى.
ملاحظة: يجب توفير ملف التكوين هذا في شكل تنسيق قائمة JSON (مع كون كل عضو في القائمة عبارة عن كتلة قاموس تشير إلى إعدادات دورة 3T واحدة)24 ووضعها في مجلد "التكوينات" (مثل "التكوينات/Electrolyte_Reduction.json"، المثال الموضح في الشكل 7 أدناه). سترث المعلمات غير المحددة في كل دورة المعلمات من تكوين الدورة السابقة.
- (اختياري) إذا لزم الأمر ، استخدم المعلمات اليدوية أو خادم الويب LigParGen لوضع معلمات لمجال قوة الجزيء.
- استخدم LigParGen أو المعلمات اليدوية للجزيئات التي لا يمكن تحديد معلماتها بواسطة SwissParam ، مثل الجزيئات المشحونة أو هياكل الرنين أو الجذور. راجع الأمثلة الإضافية المقدمة للحصول على إرشادات:
بايثون example_LigParGen_FF_assignment.py
بايثون example_manual_FF_assignment.py

الشكل 3: مثال على ملف POSCAR الشبكي PBC المملوء بعدد قليل من أيونات الليثيوم. (أ) حجم الصندوق هو 14 × 14 × 14 Å3 ، وهناك مساحة فارغة كافية ليتم تعبئتها لاحقا بواسطة جزيئات الإلكتروليت باستخدام PackMol. (ب) ملف شبكة PBC ، وهو في الأساس ملف VASP POSCAR يمكن تصوره مباشرة باستخدام برنامج تابع لجهة خارجية مثل Visual Molecular Dynamics (VMD) 31. الرجاء النقر هنا لعرض نسخة أكبر من هذا الرقم.

الشكل 4: مثال على ملف تجاوز خاصية الشبكة PBC. يصف هذا القاموس تعديلات الخاصية التي يجب تطبيقها على الذرات داخل شبكة PBC. يعني إدخال القائمة المتداخلة للمفتاح "movable_group" أن ذرة الليثيوم 0،1،2 كلها مجموعات فردية من الذرات التي يمكن أن تتحرك بشكل مستقل أثناء محاكاة 3T. بالإضافة إلى ذلك ، يتم تطبيق قيمة شحنة جزئية تبلغ +0.5 على كل ذرة ليثيوم باستخدام المفتاح "atom_charge_proximity". الرجاء النقر هنا لعرض نسخة أكبر من هذا الرقم.

الشكل 5: مثال على ملف جزيء XYZ. (أ) هذا الملف بتنسيق ملف XYZ جزيئي قياسي يحتوي فقط على عناصر الذرة والإحداثيات. (ب) يمكن تصور ملف XYZ الجزيئي هذا مباشرة باستخدام برنامج تابع لجهة خارجية مثل VMD. الرجاء النقر هنا لعرض نسخة أكبر من هذا الرقم.

الشكل 6: مثال على ملف VASP INCAR مقبول لقالب 3T. يجب ضبط معظم الإعدادات في هذا الملف بناء على احتياجات المستخدم. الشرط الوحيد لتخفيف 3T-VASP هو أن قيمة NSW إما غير محددة أو يتم تعيينها على NSW = 0. الرجاء النقر هنا لعرض نسخة أكبر من هذا الرقم.

الشكل 7: مثال على ملف تكوين 3T. يمثل كل عنصر في القائمة (كتلة) إعدادات دورة 3T (يحدد "الوضع" ما إذا كانت الدورة عبارة عن 3T-FF أو 3T-VASP miniping). عندما لا يتم تحديد مفتاح في قاموس الكتلة، فهذا يعني أنه سيتم استخدام زوج قيمة المفتاح من الكتلة السابقة بدلا من ذلك. يحدد "lattice_poscar" موقع ملف POSCAR للهيكل الشبكي على غرار VASP ("ملف" ، الخطوة 2.1) وملف التجاوز الخاص به ("تجاوز" ، الخطوة 2.2 ، إن وجد). يحدد "molecule_xyz" جميع أنواع الجزيئات الإضافية التي نرغب في إضافتها إلى مربع PBC ، مع تحديد "ملف" موقع ملف XYZ للجزيء و "العدد" الذي يحدد عدد أنواع الجزيئات هذه التي سيتم إضافتها إلى مربع PBC. يحدد "الوضع" إما "FF" (وضع 3T-FF) أو "VASP" (وضع 3T-VASP). يحدد "n_epoch" عدد خطوات التصغير التي يجب القيام بها في دورة 3T هذه. يحدد "out_tag" الاسم الذي يجب استخدامه لملفات السجل المرتبطة بتلك الدورة (وبالتالي يجب على المستخدم إعطاء الدورات أسماء فريدة لمنع الكتابة فوق ملفات السجل أو الإخراج المهمة عن طريق الخطأ). يحدد "print_freq" عدد المرات التي يجب كتابة ملف سجل الإخراج فيها (1 = الإخراج لملف السجل في كل خطوة). عند بدء استخدام وضع 3T-VASP ، يجب على المستخدم تحديد موقع المجلد لملفات قالب VASP في المفتاح "VASP_template" في قاموس "lattice_poscar". الرجاء النقر هنا لعرض نسخة أكبر من هذا الرقم.
3. تشغيل تقليل الطاقة 3T-FF و 3T-VASP
- قم بإجراء توليد مسار 3T-FF / 3T-VASP واحد.
- للحصول على مثال لملف التكوين من الخطوة 2.5 ('configs/Electrolyte_Reduction.json')، قم بتشغيل الأوامر:
بايثون
>> من main_run_utils استيراد رئيسي
>> رئيسي ('تكوينات/Electrolyte_Reduction.json')
ملاحظة: وفقا لتكوين جهاز المستخدم، قد يستغرق الأمر عدة ساعات لإنهاء إنشاء المسار هذا (يحتوي على 250 مكالمة ثابتة VASP DFT). يمكن للمستخدم تتبع التقدم من خلال فحص محتوى الملف "default.log" في محطة Linux منفصلة (الخطوة 1.6).
- إذا كنت ترغب في إنشاء مسار واسع النطاق ، فقم بإعداد برنامج نصي Python لأتمتة إنشاء ملف التكوين واستخدامه.
- بالنسبة للبرنامج النصي للأتمتة واسع النطاق (الشكل 8)، اكتب دالة قصيرة (مثل 'config_modify_func') لاستبدال عبارات معينة في ملف قالب التكوين (مثل 'configs/Electrolyte_Reduction_template.json'). سيؤدي هذا تلقائيا إلى إنشاء ملفات تكوين جديدة لإنتاج مسارات 3T-VASP مختلفة. على سبيل المثال، قم بتشغيل البرنامج النصي التالي للأتمتة على نطاق واسع:
بايثون randomize_3T_bulk_electrolyte_reduction.py
ملاحظة: بمجرد إعداد التعليمات البرمجية 3T-VASP بشكل صحيح وبدء المحاكاة، سيتم تشغيل تصغير البنية متعددة المقاييس 3T في الخلفية. اعتمادا على تكوين جهاز المستخدم ، قد يستغرق الأمر عدة أيام لإنهاء إنشاء مسارات متعددة. يحتوي مثال البروتوكول هذا على 2500 مكالمة ثابتة VASP DFT (10 مسارات 3T-VASP)، والتي سيتم الانتهاء منها في غضون 30-40 ساعة على عقدة حساب مع 4 وحدات معالجة رسومات Nvidia V100. كما هو مذكور في الخطوة 3.1.1 ، يمكن تتبع التقدم الكلي عن طريق التحقق من محتوى الملف "default.log" في محطة Linux منفصلة. سيقوم 3T-VASP أيضا بتفريغ مسار الإخراج بشكل دوري ، والذي يمكن مراجعته في الوقت الفعلي. في مثال ملف التكوين (الشكل 7 ، الخطوة 2.5) ، يصف الحقل "out_tag" في كتلة 3T اسم ملفات الإخراج حيث ستتم كتابة النتائج من دورة 3T هذه. على سبيل المثال ، تعني القيمة "out_tag" ل "FF_step3" أنه سيتم كتابة المسار الذري للدورة بأكملها على "FF_step3.xyz" (في شكل تنسيق ملف XYZ متعدد الإطارات) بينما سيتم كتابة الطاقة المحسوبة بواسطة حاسبة مجال قوة 3T المدمجة لوضع "FF" (أو طاقة DFT المحسوبة بواسطة VASP في وضع "VASP") على "FF_step3_outE.txt" (وحدة الطاقة في هذا الملف بالكيلو كالوري لكل مول [كيلو كالوري / مول]).

الشكل 8: مثال على البرنامج النصي لأتمتة إنشاء مسار 3T-VASP. يجب توفير ملف تكوين القالب كمدخل "علامة" لوظيفة "multiple_runs". بالإضافة إلى ذلك ، يجب أيضا توفير عدد المسارات التي سيتم إنشاؤها (10) والوظيفة التي تعدل محتوى ملف تكوين القالب لإنشاء ملفات تكوين عشوائية جديدة (وظيفة "config_modify_func") . الرجاء النقر هنا لعرض نسخة أكبر من هذا الرقم.