Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add update_environment function to manage.sh #170

Closed
wants to merge 923 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
923 commits
Select commit Hold shift + click to select a range
86d881c
Propagate change (params.py --> ic_containers).
jjgomezcadenas Jul 17, 2017
66e7c80
Add DataVectors and PmapVectors to ic_containers
jjgomezcadenas Jul 18, 2017
49805dc
Use of DataVectors and PmapVectors in cities.
jjgomezcadenas Jul 18, 2017
22aa1a0
Split HitCity into KrCity and HitCity
jjgomezcadenas Jul 18, 2017
9c3aba1
rebin_s2si uses new Peak class
Jul 18, 2017
75f165f
Add traceback after printout if except
jjgomezcadenas Jul 18, 2017
752d882
Cosmetics
jjgomezcadenas Jul 18, 2017
9b31ccf
Fixed wrong module names in cecilia and penthesilea
jjgomezcadenas Jul 18, 2017
3f9eba7
Run 10 events by dafault in Penthesilea
jjgomezcadenas Jul 18, 2017
349221c
work in progress
jjgomezcadenas Jul 18, 2017
e6a9bb9
write sipm_ids_and_charges_in_slice with test
Jul 18, 2017
a0d3b51
cythonize sipm_ids_and_charges_in_slice
Jul 18, 2017
a8a2bb1
fix tests for rebin_s2si
Jul 18, 2017
2eb9dd7
Add pmaps_functions_c to base.
jjgomezcadenas Jul 18, 2017
1a9d5ca
Return only non-empty slices in sipm_ids_and_charges...
jjgomezcadenas Jul 18, 2017
dae8bc0
Add writer to penthesilea.
jjgomezcadenas Jul 18, 2017
d6bceab
work in progress on cecilia.
jjgomezcadenas Jul 18, 2017
874cf49
Modify functions sipm_ids_and_charges_in_slice.
jjgomezcadenas Jul 18, 2017
f5e2b05
Fix function compute_xy_position
jjgomezcadenas Jul 18, 2017
4e5a0fc
Take into account that clusters for a given slice_no can be empty.
jjgomezcadenas Jul 18, 2017
f113f36
Remove Cecilia from cities.
jjgomezcadenas Jul 18, 2017
1fb9928
Add NN (NoNumber) with value -999999
jjgomezcadenas Jul 19, 2017
097cdaf
Cluster takes std (not rms) as argument.
jjgomezcadenas Jul 19, 2017
6900bc6
Various tests involving cluster fixed.
jjgomezcadenas Jul 19, 2017
d157523
Redefined conf. files for kr_city and hit_city.
jjgomezcadenas Jul 19, 2017
2e8a2f4
Add functionality to KrCity.
jjgomezcadenas Jul 19, 2017
eb1171a
Penthesilea.conf modified to include hit_city.
jjgomezcadenas Jul 19, 2017
28de639
Dorothea simplified.
jjgomezcadenas Jul 19, 2017
d11efb7
Move critical functionality of Penthesilea to the base.
jjgomezcadenas Jul 19, 2017
f8411bf
Eliminate "Persistent" classes.
jjgomezcadenas Jul 19, 2017
26698a5
Propagate elimination of "Persistent".
jjgomezcadenas Jul 19, 2017
a47410c
Cosmetics and cleaning old wood.
jjgomezcadenas Jul 19, 2017
56413fd
Fix a bug on dorothea.conf
jjgomezcadenas Jul 19, 2017
aef8abc
Corona algorithm raises exceptions when needed.
jjgomezcadenas Jul 19, 2017
c931c51
Change name: test_xy_algo to xy_algo_test
jjgomezcadenas Jul 19, 2017
c6f1377
Cities dev
jjgomezcadenas Jul 19, 2017
024b39e
write and test func to ensure s2d, s2sid have same peaks
Jul 19, 2017
314b532
fixes bug in find_s12 that could poorly initialize candidate peak
Jul 20, 2017
84459d1
index into KrEvent lists with enumeration of peak_no not peak_no
Jul 21, 2017
3581313
make sure cython rebin_array returns nparray not memview
Jul 21, 2017
7893243
address unshared peaks in rebin_s2si_peak
Jul 21, 2017
523290e
stop penthesilea from printing garbage
Jul 21, 2017
1380c2c
move load_dst to io.dst_io from reco.dst_functions
Jul 21, 2017
25f8d79
Cities debug
Jul 21, 2017
b8e3dc9
Add daemons to IC
jjgomezcadenas Jul 21, 2017
a137a26
Add daemon capability to base_cities
jjgomezcadenas Jul 21, 2017
80058ff
Add a test to show that irene with daemons runs.
jjgomezcadenas Jul 21, 2017
13c07a4
Several tests modified to accept new format.
jjgomezcadenas Jul 21, 2017
e790e10
Daemons
jjgomezcadenas Jul 21, 2017
b8b9ae4
Refactor base_cities:
jjgomezcadenas Jul 22, 2017
abfc6e8
Refactor configuration files.
jjgomezcadenas Jul 22, 2017
8367cb9
Move merge_two_dicts from base_cities to core_functions.
jjgomezcadenas Jul 22, 2017
0623530
Add a new exception.
jjgomezcadenas Jul 22, 2017
1e0aa6c
Propagate refactoring of cities to Diomira and Zaira.
jjgomezcadenas Jul 22, 2017
ac74c44
Further refactoring of base_cities
jjgomezcadenas Jul 24, 2017
70a748c
Complete TriggerFilter module.
jjgomezcadenas Jul 24, 2017
3c4e710
Add new exceptions.
jjgomezcadenas Jul 24, 2017
0a84535
find_s12 function has no optional parameters.
jjgomezcadenas Jul 24, 2017
59cf1be
Refactor Diomira
jjgomezcadenas Jul 24, 2017
ad01428
Configuration files adapted.
jjgomezcadenas Jul 24, 2017
61e51df
New configuration file added.
jjgomezcadenas Jul 24, 2017
a98aded
Fixed bug in diomira_test.
jjgomezcadenas Jul 24, 2017
e6c0dca
Diomira cecilia
jjgomezcadenas Jul 24, 2017
d3a7f8b
Take negative run numbers for MC
jmbenlloch Jul 24, 2017
4af511e
Use dev version of the DB in travis
jmbenlloch Jul 24, 2017
6c2c593
Take negative run numbers for MC
jmbenlloch Jul 24, 2017
e04f994
Do not take rebin defaults for S1 and S2.
jjgomezcadenas Jul 25, 2017
738a91d
Cosmetics
jjgomezcadenas Jul 25, 2017
dba9d4e
Adapt configuration files for diomira and friends.
jjgomezcadenas Jul 25, 2017
4e10f61
Fix a nasty bug in diomira
jjgomezcadenas Jul 25, 2017
7ace9e4
Pass run_number to FEE and friends.
jjgomezcadenas Jul 25, 2017
51f0f0b
Print the counter dict in end() function.
jjgomezcadenas Jul 25, 2017
b4d2a40
fix bug in function pmaps_mpl.py.
jjgomezcadenas Jul 25, 2017
d5524c9
Diomira fix
jjgomezcadenas Jul 25, 2017
644ab06
Move class Voxel to event_model.
jjgomezcadenas Jul 24, 2017
86b8f8e
Re-factor Voxel-Hit-Cluster
jjgomezcadenas Jul 24, 2017
6fdad42
Change pos to posxy in Cluster.
jjgomezcadenas Jul 24, 2017
f4a1e72
New test of voxel class and adapt old tests.
jjgomezcadenas Jul 24, 2017
cafc475
Set constant ZANODE to its nominal (MC) value.
jjgomezcadenas Jul 25, 2017
5ef0daf
Add info header to module.
jjgomezcadenas Jul 25, 2017
822d625
Add function draw_pmt_map to mpl_functions.
jjgomezcadenas Jul 25, 2017
e937e0c
Add function compute_pmaps_from_rwf to peak_functions.
jjgomezcadenas Jul 25, 2017
291f9f9
make function compute_csum_and_pmaps private.
jjgomezcadenas Jul 25, 2017
2f14396
Pass correct named tuple to compute_pmaps_from_rwf
jjgomezcadenas Jul 25, 2017
fdb9937
Conditional emulation of trigger.
jjgomezcadenas Jul 25, 2017
7fcc56d
Cosmetics (credits and such).
jjgomezcadenas Jul 26, 2017
327c737
Config files can be viewed as python files.
jjgomezcadenas Jul 26, 2017
1b37d8e
Delete cecilia.conf
jjgomezcadenas Jul 26, 2017
c258815
Cosmetics
jjgomezcadenas Jul 26, 2017
79732cd
Protection agains empty events.
jjgomezcadenas Jul 26, 2017
f5aef7b
Penthesilea extend
jjgomezcadenas Jul 26, 2017
81f0e1f
add class S2Pmt
Jul 25, 2017
2d958fe
write _find_peaks for more modular _find_s12
Jul 26, 2017
e27b476
add function extract_peaks_from_waveform (last part of find_s12)
Jul 26, 2017
7200d24
test select_peaks_of_allowed_length
Jul 26, 2017
27ee5d9
test to make sure find_peaks finds the correct peak indx bounds
Jul 26, 2017
f9ab034
test find_peaks does not find_peaks when index spaced by 1 + stride
Jul 26, 2017
6b8c1ff
test extract_peaks_from_waveforms
Jul 26, 2017
22f1fea
find_peaks does not have kwarg length
Jul 26, 2017
c7c3edd
cythonize find_peaks
Jul 26, 2017
29f646d
find_peaks DOES have kwarg length
Jul 26, 2017
579a35e
cythonize the rest of the modular find_s12 functions
Jul 26, 2017
97bd553
test cython functions
Jul 26, 2017
fdbefed
write and test get_s2pmtd
Jul 26, 2017
6b2f161
imporove s2pmt methods
Jul 27, 2017
c80aa92
make sure modular functions perform identically to find_s12
Jul 27, 2017
c9cb9bf
add more tests for S2Pmt methods
Jul 27, 2017
d8623b6
improved check that s2d and s2pmtd are consistent in S2Pmt
Jul 27, 2017
167a3dd
add ic exception inconsistent s2d and s2pmtd
Jul 27, 2017
d7b44b2
make find_peaks, select_peaks_..., and extract_peaks... cpdef
Jul 28, 2017
0e5074d
have python find_s12 use modular functions
Jul 28, 2017
9125c07
accomodate rebin flag, for now
Jul 28, 2017
9e5ee94
make select_peaks_of_allowed_length private
Jul 28, 2017
2da7d24
Functions for finding and using s2s from individual pmts
Jul 28, 2017
9a3ef29
get rid of redundant rebin flag, we already have rebin_stride
Jul 28, 2017
493e856
Modify diomira test to check event numbers in MCTracks
jmbenlloch Aug 9, 2017
d6f37df
Check event number in mc_track_writer
jmbenlloch Aug 9, 2017
2f94a6e
Fix event number in MCTrack table
jmbenlloch Aug 10, 2017
7f17cf0
make pf.get_s2pmtd --> pf.get_s12pmtd
Aug 18, 2017
9ec76d6
change S2Pmt(S2) --> S12Pmt(S12)
Aug 18, 2017
5badd04
change name of exception to InconsistentS12dPmtsd
Aug 18, 2017
c417b0f
add classes S1Pmt and S2Pmt
Aug 18, 2017
9866740
Allow icusers to study s1s of individual pmts
Aug 21, 2017
695bdf5
Add methods contains and repr to minmax.
jjgomezcadenas Jul 28, 2017
394f0c2
Add new functions to Peak.
jjgomezcadenas Jul 28, 2017
0cfa55e
Refactor s1s2_filter.
jjgomezcadenas Jul 28, 2017
73e4c05
Adapt config files to refactored s1s2_selector.
jjgomezcadenas Jul 28, 2017
b40fef3
Adapt Dorothea test to new s12_selector.
jjgomezcadenas Jul 28, 2017
c0ba02c
minor improvements to code.
jjgomezcadenas Jul 29, 2017
438f5f0
Import PMAPS classes to event_model.
jjgomezcadenas Jul 31, 2017
58faec3
Add type hints (and comments) to paolina_functions.
jjgomezcadenas Jul 31, 2017
9ba849a
Add voxels_from_track_graph function to paolina_functions.
jjgomezcadenas Aug 1, 2017
7f96996
Add new classes representing Tracks and Blobs.
jjgomezcadenas Aug 1, 2017
4fa461b
Add a text to function voxels_from_track_graph.
jjgomezcadenas Aug 1, 2017
c227982
Improvements and additions to paolina_functions.
jjgomezcadenas Aug 2, 2017
d6e0ac7
Remove dad code in s12_filter.py.
jjgomezcadenas Aug 2, 2017
b299de7
Improve definition of Blob class.
jjgomezcadenas Aug 2, 2017
e0ca8bb
Improve function make_tracks.
jjgomezcadenas Aug 2, 2017
946e71d
Expand paolina_functions.
jjgomezcadenas Aug 8, 2017
6f2d8ae
Adapt paolina_functions.
jjgomezcadenas Aug 8, 2017
e537be2
Improve voxel/track/blob classes.
jjgomezcadenas Aug 8, 2017
6890a87
Refactor helper functions in ICARO.
jjgomezcadenas Aug 8, 2017
8805cef
Fix helper funtion print_distance_to_track
jjgomezcadenas Aug 21, 2017
711bd2b
Minor fix in test.
jjgomezcadenas Aug 21, 2017
32ec7d8
Disable temporarilty ISIDORA execution line test.
jjgomezcadenas Aug 21, 2017
f712cf4
Paolina dev
jjgomezcadenas Aug 21, 2017
ab917b0
Add function that returns length of track
paolafer Aug 10, 2017
703b0cf
Add exception for slices without clusters
paolafer Jul 27, 2017
030e3d3
Raise new exception where needed
paolafer Jul 28, 2017
62940b5
Use exceptions in the code that calls the function
paolafer Jul 29, 2017
c9614be
Eliminate empty line
paolafer Aug 11, 2017
03d7bb1
Corona improvements part 1: exceptions
paolafer Aug 21, 2017
a0542b5
Add more documentation to Corona
Aug 22, 2017
a515161
Imports SipmZeroCharge exception
Aug 22, 2017
cb5cedc
Extend functionality of corona algorithm.
jjgomezcadenas Aug 22, 2017
17af3dc
Add base class XYRecoFail.
jjgomezcadenas Aug 22, 2017
e3ba289
Adapt configuration files for Penthesilea.
jjgomezcadenas Aug 22, 2017
6cc8959
Refactor reconstruction algorithms.
jjgomezcadenas Aug 22, 2017
dc95417
Fix a typo in __srt__ function in xy class.
jjgomezcadenas Aug 23, 2017
4d08d66
Fixed assorted issues in xy_algorithms.
jjgomezcadenas Aug 23, 2017
0ad518d
Refactoring of the XY reconstruction algorithms
jjgomezcadenas Aug 24, 2017
671fce8
Cosmetics
jjgomezcadenas Aug 24, 2017
ea39de4
Small fixes in Dorothea.
jjgomezcadenas Aug 24, 2017
7de77e2
Examples of Dorothear-kr config files
jjgomezcadenas Aug 24, 2017
20802d3
Small fixes for Dorothea
jjgomezcadenas Aug 24, 2017
e203220
Add a new test file (with hits).
jjgomezcadenas Aug 24, 2017
2a01e94
Refactor dst_io splitting hits_io. Add tests.
jjgomezcadenas Aug 24, 2017
de6f999
Add function to read hits skiping NN and test.
jjgomezcadenas Aug 24, 2017
9b94cbf
Add functions for reading back hits from dst
jjgomezcadenas Aug 24, 2017
c31d566
add several functions
gonzaponte Jun 24, 2017
f5ed894
cosmetics and docs
gonzaponte Aug 24, 2017
1b95784
errorbar function
gonzaponte Aug 24, 2017
45284fd
remove obsolete function
gonzaponte Aug 24, 2017
ebb168b
Add new functions and organization to ICARO
gonzaponte Aug 24, 2017
6980e2e
Add option to return std deviation instead of mean error
gonzaponte Aug 25, 2017
bb4a387
Add extra option to profile functions
gonzaponte Aug 25, 2017
d930e9f
Add functions to load MC traks and hits.
jjgomezcadenas Aug 27, 2017
6910642
Minor fixes in pmpas_functions_c.pyx
jjgomezcadenas Aug 27, 2017
9cce4c0
New classes defining MCParticle and MCHit.
jjgomezcadenas Aug 27, 2017
aae7313
Add a fixture to test MC particle and hits.
jjgomezcadenas Aug 27, 2017
a0e2637
Refactor mchits_io and add a second test.
jjgomezcadenas Aug 27, 2017
8b765e5
MC hits and particles functions and classes
jjgomezcadenas Aug 28, 2017
bdcbe9f
delete correct_s1_ene from base_cities
Aug 25, 2017
19d4e57
add functions for increasing s2si thresholds + tests
Aug 23, 2017
cd4fcce
make raise_s2si_thresholds non-destructive
Aug 30, 2017
351ea82
cythonize raise s2si thresholds functions
Aug 30, 2017
bab781f
add type hints for raise sipm threshold functions
Aug 30, 2017
876a0c0
have raise_s2si_thresholds call cython functions
Aug 30, 2017
a559671
replace py impose_thr_sipm and thr_sipm_s2 functions with cython
Aug 30, 2017
c6f64eb
replace py delete_empty_s2si_peaks and _events with cython functions
Aug 30, 2017
febecbe
Add funtions or increasing s2si thresholds
Aug 30, 2017
87ebaa6
Add new functions to handle operations on empty arrays
gonzaponte Aug 30, 2017
2debd48
fix overflow issues
gonzaponte Aug 30, 2017
3e10e1a
fix division by 0 when computing chi2
gonzaponte Aug 30, 2017
79d1aed
fix import in zaira
gonzaponte Aug 30, 2017
96007b4
fix division by 0 warnings
gonzaponte Aug 30, 2017
3f83125
restore unintended deletion
gonzaponte Aug 30, 2017
358800d
Revert to official style in multiple-line expressions
gonzaponte Aug 30, 2017
7d51a93
Ensure normalization value makes sense
gonzaponte Aug 30, 2017
0a3a050
fix Zaira tests
gonzaponte Aug 30, 2017
14a8b41
delete unused file
gonzaponte Aug 30, 2017
2217c62
Fix numpy warnings
gonzaponte Aug 30, 2017
121f176
Fix degrees of freedom in reduced chi2
gonzaponte Aug 30, 2017
d5ddfc8
Cosmetics
Aug 31, 2017
5e353d2
Rename test_utils to testing_utils
gonzaponte Aug 31, 2017
25388dc
fix find_peaks to avoid error when no pmt signal after tmin
Sep 1, 2017
a6b8cd0
fix typo trheshold --> threshold
Sep 1, 2017
3411410
Typo in return np.array(qs_slice)
Aug 23, 2017
c481c97
Removed func _sipms_ids_and_charges_in_slice from pmaps_functions.py
Aug 23, 2017
fc8ab51
delete _sipm_ids_and_charges_in_slice'
Sep 2, 2017
544badd
Rename std to var
gonzaponte Aug 31, 2017
433ccef
index kr table
gonzaponte Aug 31, 2017
86383ca
Add test to ensure tables indexation
gonzaponte Aug 31, 2017
7d7be45
index hdf5 tables
gonzaponte Sep 2, 2017
8d86286
ipmt pmap writers
Aug 25, 2017
0576b08
Add ipmt read functions
Aug 27, 2017
dffa163
load ipmt pmap tests
Aug 28, 2017
057834f
add test data file
Aug 28, 2017
d5698d4
write and load ipmts together or separately
Aug 31, 2017
4033146
update and debug S12Pmt class
Aug 31, 2017
503219f
pmap writers need not store empty si peaks
Aug 31, 2017
d89fe62
flush h5out before closing in city.run()
Sep 1, 2017
e4b9f0a
Add __str__ ___repr__ fto S12Pmt.
jjgomezcadenas Sep 2, 2017
1129471
Add set_plot_labels to signal_functions.
jjgomezcadenas Sep 2, 2017
894e08c
pmap writers and loaders for the individual pmts
Sep 2, 2017
c3d6c78
put InitializedEmptyPmapObject in pmap classes
Sep 1, 2017
a59f2e8
catch InitializedEmptyPmap... exeption in necessary places
abotas Sep 4, 2017
266a915
add tests checking InitializedEmptyPmapObject is raised
abotas Sep 4, 2017
53faf4b
Raise exception when constructing empty pmaps
Sep 5, 2017
6dac1ad
allow irene to compute ipmt pmaps
abotas Sep 4, 2017
7e6a565
find_s1_ipmt and find_s2_ipmt to peak_functions_c
abotas Sep 4, 2017
85c726d
compute cCWF and cCWF_mau in PmapCity.pmt_transformation
abotas Sep 6, 2017
15816a8
first functional ipmt irene
abotas Sep 6, 2017
8bb93ef
create and use sum_waveforms in pmt_transformation
abotas Sep 6, 2017
84e9fdb
cythonize get_ipmtd
abotas Sep 6, 2017
de96b52
add tests for find_s12_ipmt functions
abotas Sep 6, 2017
bc9f5fc
Allow irene to find ipmt pmaps
Sep 6, 2017
25248a4
Use event numbers from input files for MC
jmbenlloch Sep 6, 2017
ff58314
prevent crash in search for s2si when s2 is None
abotas Sep 7, 2017
2d9235a
Test implemented to deal with 1 hit case
paolafer Sep 6, 2017
5b49eae
Test return an assertion
paolafer Sep 6, 2017
96543f9
Fix broken test (voxelize_single_hit)
Sep 7, 2017
fa27747
Add missing whitespace in return type annotations
Sep 7, 2017
5f33f69
Sanitize docstrings
Sep 7, 2017
aacd947
Clean up implementation of shortest_paths
Sep 7, 2017
7d09020
Shorten voxelize_hits
Sep 7, 2017
aa3ca94
Ensure that at least one bin is required
Sep 7, 2017
7817404
Deal with 1 hit in voxelize_hits
Sep 8, 2017
4a68042
Add update_environment function to manage.sh
jmbenlloch Mar 13, 2017
e0680b7
Add update all
jmbenlloch Mar 13, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 0 additions & 4 deletions .coveragerc

This file was deleted.

1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.ipynb filter=clean_ipynb
2 changes: 2 additions & 0 deletions .gitconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[filter "clean_ipynb"]
clean = `git rev-parse --show-toplevel`/ipynb_drop_output
15 changes: 15 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

*.pyc
*.o
*.so
*.c
.cache
*.egg-info
*.sqlite3
*.*~
invisible_cities/tests/electrons_40keV_z250_RWF.h5
environment?.?.yml
.DS_Store
doc/.DS_Store
doc/build
invisible_cities/cities/.ipynb_checkpoints
40 changes: 19 additions & 21 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,27 +1,25 @@
sudo: false
language: python
language: generic
sudo: false

python:
- 2.7
matrix:
fast_finish: true
allow_failures:
- os: osx

install:
# Install conda
- wget http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh
- bash miniconda.sh -b -p $HOME/miniconda
- export PATH="$HOME/miniconda/bin:$PATH"
- export ICDIR=`pwd`
- export PYTHONPATH=$ICDIR:$PYTHONPATH
- conda config --set always_yes yes --set changeps1 no
- conda update conda
env:
- IC_PYTHON_VERSION=3.6

# Install dependencies
- conda create -n icenv python=2.7 numpy scipy pandas cython pytest pytest-cov pytables mysql-python
- source activate icenv
- pip install coveralls hypothesis-numpy
os:
- linux
- osx

script:
- pytest --cov
branches:
except:
- /^docs\..*$/

after_success:
- coveralls
install:
- source manage.sh install ${IC_PYTHON_VERSION}
- bash manage.sh download_test_db_dev

script:
- HYPOTHESIS_PROFILE=hard bash manage.sh run_tests_par 4