Probe-Particle / ppafm

Classical force field model for simulating atomic force microscopy images.
MIT License
50 stars 19 forks source link

Unify the storage for examples #314

Open ondrejkrejci opened 2 weeks ago

ondrejkrejci commented 2 weeks ago

While working on # 233 and trying not to change the results there, I have found out that our examples are files are scattered all over the place - Zenodo, Dropbox, Mega ... The most of all, I do not like that the pyridineDensOverlap/run.sh needs sudo for mega tools. I am suggesting to move everything to Zenodo and adjust the examples accordingly. Let's discuss this,

NikoOinonen commented 2 weeks ago

Another thought about this: I made a while ago a Python function for easily downloading datasets in the GPU scripts here: https://github.com/Probe-Particle/ppafm/blob/12a90344f703da0278abe39bf067a81fafb95b70/ppafm/data.py#L47-L49 It downloads and unpacks a named dataset to a chosen location while printing a progress percentage, and skips the download if the destination already exists.

Maybe we could make a CLI command for this, something like

ppafm-download [DATASET_NAME] [SAVE_PATH]

This would somewhat simplify the code and avoid repeated downloads in the CLI scripts.

ProkopHapala commented 2 weeks ago

Question @ondrejkrejci @NikoOinonen @yakutovicha - so should I upload to zenodo directly the directory structure of the examples with the downloaded files? Perhaps that would be most easy to navigate ?

ondrejkrejci commented 2 weeks ago

I am not sure if it is possible. If so, then it is the easiest, otherwise I would rename those as 'directory-filename.tgz' so it is the same and easy to understand

NikoOinonen commented 2 weeks ago

I think we want one compressed file per example, so that they can be downloaded individually. Also, we only need to upload the big files (.xsf), not the ones that only use an xyz geometry.

ProkopHapala commented 3 days ago

Hi,

@NikoOinonen @ondrejkrejci @yakutovicha @mondracek

I downloaded all files form example (unless I forgot something), and I'm prepared to upload them.

I think it would be better to put them in a flat directory structure, and make a .zip from each directory. It means I extracted those from paper_figure.

I suggest these directories:

├── C60
│   ├── CHGCAR.xsf
│   ├── LOCPOT.xsf
│   └── mol.xyz
├── CH3Br_KPFM
│   ├── hartree_potential_V0.cube
│   └── hartree_potential_Vz.cube
├── CO_tip
│   ├── CO_delta_density_aims.xsf
│   └── density_CO.xsf
├── FAD
│   ├── CHGCAR.xsf
│   ├── LOCPOT.xsf
│   └── mol.xyz
├── FFPB
│   ├── CHGCAR.xsf
│   ├── LOCPOT.xsf
│   └── mol.xyz
├── FFPB_KPFM
│   ├── LOCPOT_V0.xsf
│   └── LOCPOT_Vz.xsf
├── Pentacene
│   ├── CHGCAR.xsf
│   ├── LOCPOT.xsf
│   └── mol.xyz
├── Phtalocyanine
│   ├── CHGCAR.xsf
│   ├── LOCPOT.xsf
│   └── mol.xyz
├── PTCDA
│   ├── CHGCAR.xsf
│   ├── LOCPOT.xsf
│   └── mol.xyz
├── PTCDA_Ag
│   └── LOCPOT.xsf
├── pyridine
│   ├── sample
│   │   ├── CHGCAR.xsf
│   │   └── LOCPOT.xsf
│   └── tip
│       └── CHGCAR.xsf
└── pyridineBrCl
    ├── density.xsf
    └── hartree.xsf

Please let me know if I forgot something, or if you have different suggestion

Some notes:

Just for comparison there is current directroy strcuture of the examples (after downloading the files by the scripts)

├── benzeneBrCl2
│   ├── dichlor-brom-benzene.xyz
│   ├── params.ini
│   └── run.sh
├── CH3Br_KPFM
│   ├── hartree_potential_V0.cube
│   ├── hartree_potential_Vz.cube
│   ├── params.ini
│   ├── rhoTip.xsf
│   └── run.sh
├── CoPc-IETS
│   ├── answer.xyz
│   ├── atomtypes.ini
│   ├── cel.lvs
│   ├── params.ini
│   └── run.sh
├── CorrectionLoopGraphene
│   ├── clean.sh
│   ├── input.xyz
│   ├── ref.xyz
│   ├── simplePot.sh
│   ├── simplePotTest.xyz
│   └── _test_CorrectionLoop.py
├── FePc_Au-IETS
│   ├── clean.sh
│   ├── geom-cube.in
│   ├── input_plot.xyz
│   ├── params.ini
│   └── run_ppafm-iets.sh
├── FFPB_KPFM
│   ├── input_plot.xyz
│   ├── KPFM_hartree.tar.gz
│   ├── LOCPOT_V0.xsf
│   ├── LOCPOT_Vz.xsf
│   ├── params.ini
│   ├── rhoTip.xsf
│   └── run.sh
├── Generator
│   ├── example_molecules
│   │   ├── bcb.xyz
│   │   ├── formic_acid.xyz
│   │   ├── out2.xyz
│   │   └── out3.xyz
│   ├── generator_trainer.py
│   └── inverse_trainer_xyz.py
├── Graphene
│   ├── Gr6x6N3hole.xyz
│   ├── params.ini
│   ├── run.bat
│   ├── run_dev.sh
│   ├── run_gpu.py
│   └── run.sh
├── Graphene_mod
│   ├── AutoSegmentImage.py
│   ├── fitAtoms2.py
│   ├── fitAtoms.py
│   ├── Gr6x6N3hole-.xyz
│   ├── Gr6x6N3hole.xyz
│   ├── params.ini
│   ├── params.ini-bak
│   └── run.sh
├── Graphene-spline
│   ├── curve_points.ini
│   ├── Gr6x6N3hole.xyz
│   ├── params.ini
│   ├── run.sh
│   └── TipRSpline.ini
├── paper_figure
│   ├── CO-densities
│   │   ├── CO_delta_density_aims.xsf
│   │   └── density_CO.xsf
│   ├── dft-afm
│   │   ├── C60.npz
│   │   ├── FAD.npz
│   │   ├── FFPB.npz
│   │   ├── Pentacene.npz
│   │   ├── Phtalocyanine.npz
│   │   └── PTCDA.npz
│   ├── hartree-density
│   │   ├── C60
│   │   │   ├── CHGCAR.xsf
│   │   │   ├── LOCPOT.xsf
│   │   │   └── mol.xyz
│   │   ├── FAD
│   │   │   ├── CHGCAR.xsf
│   │   │   ├── LOCPOT.xsf
│   │   │   └── mol.xyz
│   │   ├── FFPB
│   │   │   ├── CHGCAR.xsf
│   │   │   ├── LOCPOT.xsf
│   │   │   └── mol.xyz
│   │   ├── Pentacene
│   │   │   ├── CHGCAR.xsf
│   │   │   ├── LOCPOT.xsf
│   │   │   └── mol.xyz
│   │   ├── Phtalocyanine
│   │   │   ├── CHGCAR.xsf
│   │   │   ├── LOCPOT.xsf
│   │   │   └── mol.xyz
│   │   └── PTCDA
│   │       ├── CHGCAR.xsf
│   │       ├── LOCPOT.xsf
│   │       └── mol.xyz
│   └── run_simulation.py
├── PTCDA_Hartree
│   ├── LOCPOT.xsf
│   ├── LOCPOT.xsf.zip
│   ├── params.ini
│   ├── run_gpu_easy.py
│   ├── run_gpu.py
│   └── run.sh
├── PTCDA_Hartree_dz2
│   ├── example_ptcda_hartree.py
│   ├── LOCPOT.xsf
│   ├── LOCPOT.xsf.zip
│   ├── params.ini
│   ├── run.sh
│   └── tip.py
├── PTCDA_single
│   ├── example_ptcda.py
│   ├── params.ini
│   ├── PTCDA.xyz
│   └── run.sh
├── pyridineDensOverlap
│   ├── params.ini
│   ├── run_gpu.py
│   ├── run.sh
│   ├── sample
│   │   ├── CHGCAR.xsf
│   │   └── LOCPOT.xsf
│   └── tip
│       └── CHGCAR.xsf
└── ToZenodo.md
NikoOinonen commented 3 days ago

that in pyridine/tip was used in pyridine and is calculated for grid-shape matching pyridine sample.

If I recall, the density_CO.xsf in the paper figure was the same density as in the pyridine example, so there might be some redundancy in there.

in GPU version done by Niko there is some solution which allows different grid shapes for tip and sample (Am I right?).

Yes, there is an interpolation step that resamples the input file grids to the specified FF grid.