-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.json
17 lines (1 loc) · 36.7 KB
/
index.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[{"authors":null,"categories":null,"content":" My main interests revolve around physics, simulation and computer science. I like to find innovative solutions to complex problems by combining my scientific knowledge with my technical skills in programming and machine learning.\nContact Please do not hesitate to reach out with any questions or feedback you may have about my research or my personal projects.\n","date":-62135596800,"expirydate":-62135596800,"kind":"term","lang":"en","lastmod":1738148215,"objectID":"2525497d367e79493fd32b198b28f040","permalink":"","publishdate":"0001-01-01T00:00:00Z","relpermalink":"","section":"authors","summary":"My main interests revolve around physics, simulation and computer science. I like to find innovative solutions to complex problems by combining my scientific knowledge with my technical skills in programming and machine learning.","tags":null,"title":"Joris Paret","type":"authors"},{"authors":[],"categories":null,"content":" Click on the Slides button above to view the built-in slides feature. Slides can be added in a few ways:\nCreate slides using Wowchemy’s Slides feature and link using slides parameter in the front matter of the talk file Upload an existing slide deck to static/ and link using url_slides parameter in the front matter of the talk file Embed your slides (e.g. Google Slides) or presentation video on this page using shortcodes. Further event details, including page elements such as image galleries, can be added to the body of this page.\n","date":1906549200,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1650770445,"objectID":"a8edef490afe42206247b6ac05657af0","permalink":"https://jorisparet.github.io/talk/example-talk/","publishdate":"2017-01-01T00:00:00Z","relpermalink":"/talk/example-talk/","section":"event","summary":"An example talk using Wowchemy's Markdown slides feature.","tags":[],"title":"Example Talk","type":"event"},{"authors":null,"categories":null,"content":"SOFT 2024 - Preliminary machine learning-based calibration strategy for the ITER Tokamak Systems Monitor From September 22 to 27, 2024, I had the opportunity to attend the 33rd Symposium on Fusion Technology (SOFT 2024) at Dublin City University, Ireland. This premier event brought together researchers, engineers, and industry experts from around the world to discuss the latest advancements in fusion energy. The conference covered a wide range of topics, from reactor technology and materials science to plasma diagnostics and control systems, fostering valuable exchanges within the international fusion community.\nAs part of my research at ITER, I presented a scientific poster on a machine learning-based calibration strategy for the ITER Tokamak Systems Monitor (TSM), a software framework that aggregates data from multiple sensors installed across ITER to assess the machine’s health. This work focuses on improving the accuracy and reliability of numerical models that monitor the ITER tokamak’s structural dynamics. This work explores the use of sequential model-based optimization (SMBO) for the calibration of finite-element models. The goal is to refine structural models of the tokamak using a limited dataset, addressing the challenge of calibrating complex engineering systems under restrictive conditions—a common limitation in fusion experiments due to the harsh operational environment and limited sensor accessibility.\nSee the poster below or download it as a PDF here.\n","date":1726963200,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1738142322,"objectID":"6d27ad94787aac029f3d45f4262c8e2a","permalink":"https://jorisparet.github.io/post/2024-09-22_soft/","publishdate":"2024-09-22T00:00:00Z","relpermalink":"/post/2024-09-22_soft/","section":"post","summary":"Participation to the 33rd Symposium on Fusion Technology (SOFT 2024) in Dublin, presenting a scientific poster on a machine learning-based calibration strategy for the ITER Tokamak Systems Monitor (TSM) software suite.","tags":["ITER","Python","Machine Learning"],"title":"Contribution to the 33rd Symposium on Fusion Technology","type":"post"},{"authors":null,"categories":null,"content":"submv submv allows you to shift a subtitle file by a given amount to synchronize it to a video stream using a simple command line tool.\nQuickstart In a console, simply type\nsubmv path/to/subtitles.srt -1.5 to shift the file subtitles.srt by -1.5s. By default, it will overwrite the original file.\nMore options:\nThe shifted subtitles can be written to a new file by using the --output flag (or -o for short). Example: submv file.srt 2.1 --output new_file.srt. The default format is SubRip (*.srt files). Other formats can be read using the --format flag (or -f for short). Example: submv file.sub --format sub. For certain formats such as MicroDVD (*.sub files), the timecodes depend on the video framerate. To account for this, the correct framerate must be specified with the --framerate flag (or -r for short). Example: submv file.sub --framerate 30. Installation 1. From PyPI:\npip install submv 2. From the code repository:\ngit clone https://github.com/jorisparet/submv cd submv pip install . Linux The default folder should be under /home/\u0026lt;user\u0026gt;/.local/bin/. Make sure this location (or the correct one, if different) is included in your $PATH environment variable to be able to run the scripts from the console. If not, type the following command export PATH=$PATH:/path/to/submv/script/ in the console or add it your .bashrc file.\nWindows The default folder should be under C:\\Users\\\u0026lt;user\u0026gt;\\AppData\\Local\\Programs\\Python\\\u0026lt;python_version\u0026gt;\\Scripts\\. Make sure this location (or the correct one, if different) is included in your $PATH environment variable to be able to run the scripts from the console. If not, type the following command set PATH=%PATH%;C:\\path\\to\\submv\\script\\ in the console, or select Edit the system environment variables in the search bar, click Environment Variables…, click PATH, click Edit... and add the correct path to the scripts.\nAuthor Joris Paret\n","date":1673049600,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1674681714,"objectID":"64f4e2d4abb1f361b9e81de139403701","permalink":"https://jorisparet.github.io/project/submv/","publishdate":"2023-01-07T00:00:00Z","relpermalink":"/project/submv/","section":"project","summary":"Shift the timecodes of a subtitle file by a given amount to synchronize it to a video stream.","tags":["Python"],"title":"submv","type":"project"},{"authors":null,"categories":null,"content":"Authors Daniele Coslovich Robert L. Jack Joris Paret Abstract We consider unsupervised learning methods for characterizing the disordered microscopic structure of supercooled liquids and glasses. Specifically, we perform dimensionality reduction of smooth structural descriptors that describe radial and bond-orientational correlations and assess the ability of the method to grasp the essential structural features of glassy binary mixtures. In several cases, a few collective variables account for the bulk of the structural fluctuations within the first coordination shell and also display a clear connection with the fluctuations of particle mobility. Fine-grained descriptors that characterize the radial dependence of bond-orientational order better capture the structural fluctuations relevant for particle mobility but are also more difficult to parameterize and to interpret. We also find that principal component analysis of bond-orientational order parameters provides identical results to neural network autoencoders while having the advantage of being easily interpretable. Overall, our results indicate that glassy binary mixtures have a broad spectrum of structural features. In the temperature range we investigate, some mixtures display well-defined locally favored structures, which are reflected in bimodal distributions of the structural variables identified by dimensionality reduction.\nArticle and data availability This paper is published The Journal of Chemical Physics and is also available on arXiv. The computation of descriptors and most of the dimensionality reduction analysis were performed using the partycls package. Data analysis has been carried out using a reproducible workflow, deposited in the Zenodo public repository.\n","date":1666569600,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1669542821,"objectID":"8061d6b26bf002916869e4497383d116","permalink":"https://jorisparet.github.io/post/2022-11-22_jcp/","publishdate":"2022-10-24T00:00:00Z","relpermalink":"/post/2022-11-22_jcp/","section":"post","summary":"This study focuses on the use of dimensionality reduction techniques to assess the structural heterogeneity of glassy binary mixtures. This work is in collaboration with Daniele Coslovich and Robert L. Jack.","tags":["Physics","Machine Learning","Molecular Dynamics"],"title":"“Dimensionality reduction of local structure in glassy binary mixtures” - The Journal of Chemical Physics","type":"post"},{"authors":null,"categories":null,"content":"A new major release of partycls (v2.0.0) is now available on GitHub and PyPI. The new homepage also features new tutorials and a more consistent documentation, with a more detailed API presentation and cross-references between the different pages.\nThe most important changes include:\nA variety of new structural descriptors and features (e.g. Voronoi tessellation). A global optimization for most computations. Several bug fixes. See the changelog for more details on this new version.\n","date":1666569600,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1666631124,"objectID":"44885d9651a2a998e33f20b403a92043","permalink":"https://jorisparet.github.io/post/2022-10-24_partycls-2-0-0/","publishdate":"2022-10-24T00:00:00Z","relpermalink":"/post/2022-10-24_partycls-2-0-0/","section":"post","summary":"partycls is a Python package for the analysis of systems of interacting particles using unsupervised machine learning methods. A new major release (2.0.0) was just published.","tags":["Python","Machine Learning","Clustering","Physics","Molecular Dynamics"],"title":"New major release of partycls (2.0.0)","type":"post"},{"authors":["Daniele Coslovich","Robert L. Jack","Joris Paret"],"categories":null,"content":" ","date":1664496000,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1669460794,"objectID":"cf6aaf1f059fcfe5a49949bad74b4737","permalink":"https://jorisparet.github.io/publication/2022_jcp/","publishdate":"2022-09-30T00:00:00Z","relpermalink":"/publication/2022_jcp/","section":"publication","summary":"We consider unsupervised learning methods for characterizing the disordered microscopic structure of super-cooled liquids and glasses. Specifically, we perform dimensionality reduction of smooth structural descriptors that describe radial and bond-orientational correlations, and assess the ability of the method to grasp the essential structural features of glassy binary mixtures. In several cases, a few collective variables account for the bulk of the structural fluctuations within the first coordination shell and also display a clear connection with the fluctuations of particle mobility. Fine-grained descriptors that characterize the radial dependence of bond-orientational order better capture the structural fluctuations relevant for particle mobility, but are also more difficult to parametrize and to interpret. We also find that principal component analysis of bond-orientational order parameters provides identical results to neural network autoencoders, while having the advantage of being easily interpretable. Overall, our results indicate that glassy binary mixtures have a broad spectrum of structural features. In the temperature range we investigate, some mixtures display well-defined locally favored structures, which are reflected in bimodal distributions of the structural variables identified by dimensionality reduction.","tags":[],"title":"Dimensionality reduction of local structure in glassy binary mixtures","type":"publication"},{"authors":null,"categories":null,"content":"hamoco (handy mouse controller) allows you to take control of your mouse by using hand gestures that are captured in real time by your webcam. It relies on MediaPipe to track hands, and the nature of the different hand poses are predicted by a small neural network built with TensorFlow. Basically, I thought that it might be fun to try and replicate the famous scene from the movie Minority Report (spoiler: it’s cooler when Tom Cruise does it).\nYou can perform all the basic mouse actions: motion, left/right click, vertical scrolling and drag \u0026amp; drop. There are many options to adjust the experience to your liking (e.g. sensitivity, motion smoothing) and even an automated pipeline to record your own data and train a custom neural network tailored to your needs.\nThe code is now available on PyPI in version 1.0.1, and you can also check out the page of the project on GitHub.\n","date":1662508800,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1665166088,"objectID":"43ec6cd6f4bc0abda72c049684fb7cf0","permalink":"https://jorisparet.github.io/post/2022-09-07_hamoco-first-release/","publishdate":"2022-09-07T00:00:00Z","relpermalink":"/post/2022-09-07_hamoco-first-release/","section":"post","summary":"hamoco v1.0.1 is now available on PyPI for Linux and Windows. Take control of your mouse by using hand gestures captured in real time by your webcam.","tags":["Python","Machine Learning","Deep Learning"],"title":"First official release of hamoco","type":"post"},{"authors":null,"categories":null,"content":"Synth Road is an arcade mobile game with synthwave vibes created using the Unity game engine. The goal is to go as far as possible on the road by avoiding the obstacles, and by using powers to help you do so. You can then publish your highscores on the leaderboard to compare your results with other players. The game is free to download on Google Play, and it contains a single optional advertisement whose generated money (if any) will be given to humanitarian NGOs.\nThis game is the logical consequence of two things:\nMy obsession for the indie game Outer Wilds, created by the geniuses at Mobius Digital Games, which was also created with Unity. The amazing YouTube channel of Sebastian Lague, where he creates various Unity projects and explains them in the most pedagogical, poetic and relaxing way. These two things motivated me to experiment with Unity, and after a few weeks I wanted to prove to myself that I could create an entire project on my own from scratch. The most common mistake among amateur game developers is to directly start with unreasonably big projects, so I tried to keep it simple and came up with this mobile game. This was an opportunity to have a first look at various aspects of game design (gameplay, VFX, SFX, UI, etc.) and to learn more about the countless features of Unity. The game mechanics and visuals are simple, but for a first try I am pretty satisfied with the result, and I hope that I will have more time in the future for more elaborate projects.\nThe code and all the game assets are available on the GitHub page of the project.\n","date":1654905600,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1665166088,"objectID":"943cf0416849aacf6c65d946910ab798","permalink":"https://jorisparet.github.io/post/2022-06-11_synth-road-first-release/","publishdate":"2022-06-11T00:00:00Z","relpermalink":"/post/2022-06-11_synth-road-first-release/","section":"post","summary":"Synth Road is an arcade mobile game with synthwave vibes created using the Unity game engine. Any money generated by the **optional** advertisement will be donated to humanitarian NGOs.","tags":["C#","Unity","Game Dev"],"title":"Synth Road is now available on Android","type":"post"},{"authors":null,"categories":null,"content":" Hamoco hamoco (handy mouse controller) is a python application that allows you to control your mouse from your webcam using various hand gestures. You have a laptop equipped with a webcam? Well, good news, that’s all you need to feel like Tom Cruise in Minority Report! Kind of.\nDemonstration In the example below, the hand is used to move the pointer, open a file by double-clicking on it, scroll through it, select a paragraph and cut it. The file is then dragged and dropped into a folder.\nHow does it work? By using the power of PyAutoGUI to control the mouse, OpenCV to process the video feed, and MediaPipe to track hands, hamoco predicts the nature of a hand pose in real-time thanks to a neural network built with Keras and uses it to perform various kinds of mouse pointer actions.\nInstallation 1. From PyPI:\npip install hamoco 2. From the code repository:\ngit clone https://github.com/jorisparet/hamoco cd hamoco pip install -r requirements.txt pip install . The installation copies three scripts in the default script folder of pip:\nhamoco-run hamoco-data hamoco-train Linux The default folder should be under /home/\u0026lt;user\u0026gt;/.local/bin/. Make sure this location (or the correct one, if different) is included in your $PATH environment variable to be able to run the scripts from the console. If not, type the following command export PATH=$PATH:/path/to/hamoco/scripts/ in the console or add it your .bashrc file.\nWindows The default folder should be under C:\\Users\\\u0026lt;user\u0026gt;\\AppData\\Local\\Programs\\Python\\\u0026lt;python_version\u0026gt;\\Scripts\\. Make sure this location (or the correct one, if different) is included in your $PATH environment variable to be able to run the scripts from the console. If not, type the following command set PATH=%PATH%;C:\\path\\to\\hamoco\\scripts\\ in the console, or select Edit the system environment variables in the search bar, click Environment Variables…, click PATH, click Edit... and add the correct path to the scripts.\nRequirements: PyAutoGUI NumPy OpenCV MediaPipe TensorFlow Quick start Running the scripts hamoco is composed of three executable scripts: hamoco-run, hamoco-data, and hamoco-train, that are listed below. Run these scripts directly from the console, e.g. hamoco-run --sensitivity 0.5 --show.\nhamoco-run hamoco-run is the main application. It activates the webcam and allows to use hand gestures to take control of the mouse pointer. Several basic actions can then be performed, such as left click, right click, drag and drop and scrolling. Note that it requires a bit of practice before getting comfortable with the controls. Various settings can be adjusted to customize the hand controller to your liking, such as the global sensivitity, parameters for motion smoothing and much more. Type hamoco-run --help for more information on the available options.\nExamples:\nhamoco-run --sensitivity 0.4 --scrolling_threshold 0.2 : adapts the sensitivity and sets a custom threshold value to trigger scrolling motions. hamoco-run --min_cutoff_filter 0.05 --show : sets a custom value for the cutoff frequency used for motion smoothing and opens a window that shows the processed video feed in real-time. hamoco-run --scrolling_speed 20 : sets a custom value for the scrolling speed. Note that for a given value, results may differ significantly depending on the operating system. hamoco-run --margin 0.2 --stop_sequence THUMB_SIDE CLOSE INDEX_MIDDLE_UP : adapts the size of the detection margin (indicated by the dark frame in the preview windows using --show), and changes the sequence of consecutive poses to stop the application. Configuration files with default values for the control parameters can be found in the installation folder, under hamoco/config/. Simply edit the file that corresponds to your operating system (posix.json for Linux and nt.json for Windows) to save your settings permanently, and hence avoid specifying the parameters by hand in the console.\nHand poses \u0026amp; Mouse actions: OPEN : the pointer is free and follows the center of the palm (indicated by the white square) ; CLOSE : the pointer stops all actions. The hand can be moved anywhere in the frame without moving the pointer. This is used to reset the origin of motion (see the nota bene below) ; INDEX_UP : performs a left-click at the current pointer location. Execute twice rapidly for a double-click ; PINKY_UP : performs a right click at the current pointer location ; INDEX_MIDDLE_UP : holds the left mouse button down and moves the pointer by following the center of the palm. This is used for selection and drag \u0026amp; drop ; THUMB_SIDE : enables vertical scrolling using the first triggering location as origin. Scrolling up or down is done by moving the hand up or down relative to the origin while keeping the same hand pose ; N.B. note that, much like a real mouse, the recorded motion of the pointer is relative to its previous position. When your mouse reaches the edge of your mouse pad, you simply lift it and land it back somewhere on the pad to start moving …","date":1653782400,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1662572129,"objectID":"4a0ed2b62b9aab726957c481e10d2203","permalink":"https://jorisparet.github.io/project/hamoco/","publishdate":"2022-05-29T00:00:00Z","relpermalink":"/project/hamoco/","section":"project","summary":"Real-time mouse control via webcam-recorded hand gestures.","tags":["Python","Machine Learning","Deep Learning"],"title":"hamoco","type":"project"},{"authors":null,"categories":null,"content":" Synth Road is an arcade mobile game of obstacle course for Android with synthwave vibes. Money generated from the optional advertisement is donated to NGOs.\nGame rules Hold your finger down at the bottom of the screen and move it to slide the player left and right to avoid the obstacles. Collect as many blue bonuses as possible to increase the score multiplier. Collect gold bonuses to temporarily become invincible: bash through obstacles and collect as many blue bonuses as possible. Use the power buttons to temporarily slow time, shrink the player or disintegrate obstacles. Publish your highscores on the leaderboard to compare your results with other players. About Synth Road is made with Unity. Illustrations, music and sound effects are original creations.\nAuthor Joris Paret\n","date":1643328000,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1659199830,"objectID":"1b93bb0be6694b7f8759bad087043e54","permalink":"https://jorisparet.github.io/project/synth-road/","publishdate":"2022-01-28T00:00:00Z","relpermalink":"/project/synth-road/","section":"project","summary":"Arcade mobile game of obstacle course for Android with synthwave vibes.","tags":["C#","Unity","Game Dev"],"title":"Synth Road","type":"project"},{"authors":["Joris Paret"],"categories":null,"content":" ","date":1637884800,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1667559862,"objectID":"8ada98ce783cc577925c882b40877841","permalink":"https://jorisparet.github.io/publication/2021_thesis/","publishdate":"2017-01-01T00:00:00Z","relpermalink":"/publication/2021_thesis/","section":"publication","summary":"When cooled down below their melting temperature, liquids undergo a phase transition to a stable crystalline state, where atoms rearrange in a periodic fashion in order to form a long range order. For some liquids however, when the cooling is fast enough, crystallization can be avoided and the system progressively enters a metastable state termed « supercooled ». In this regime, the dynamics of the liquid becomes more and more heterogeneous and the viscosity increases dramatically as the temperature is reduced, to the point where the system stops flowing and solidifies, it turns into glass. Despite this sudden ridigity, it keeps the properties of a liquid at the microscopic scale, with a disordered -or « amorphous »- structure, that contrasts with its stable crystalline phase. The theoretical origin of this glass transition remains enigmatic, in particular the process in which viscosity increases so strikingly by progressively trapping the system in a metastable state instead of crystallizing. This surprising phenomenon is the subject of intensive research, and a number of theories still attempt to explain its origin through thermodynamic, dynamic or simply structural mechanisms. In this thesis, we focus on structural aspects by proposing to study the local structure of numerical model glass formers. In particular, we develop a method for community inference, based on information theory, that allows to reveal the structural heterogeneity in these systems using simple spatial correlations. This method is based on the concept of « clustering », an unsupervised learning framework that consists in grouping the particles of a system into communities depending on the properties of their local structure. Secondly, we put community inference into perspective with other clustering methods, leading notably to the publication of a versatile open source code dedicated to the study of local structure in supercooled liquids and glasses. We then show that, to some extent, these structural communities are correlated to the dynamic heterogeneities that are characteristic of supercooled liquids. Finally, thanks to recent advances in the domains of computer simulations, we study the evolution of the structure and of the dynamics in a ternary model supercooled liquid through a very wide range of temperatures. These simulations allow us to test various theoretical predictions for the glass transition with an unprecedented precision compared to conventional simulations.","tags":[],"title":"Hidden order in disordered materials","type":"publication"},{"authors":null,"categories":null,"content":"Presentation partycls is a Python framework for cluster analysis of systems of interacting particles. By grouping particles that share similar structural or dynamical properties, partycls enables rapid and unsupervised exploration of the system’s relevant features. It provides descriptors suitable for applications in condensed matter physics and integrates the necessary tools of unsupervised learning, such as dimensionality reduction, into a streamlined workflow. Through a simple and expressive interface, partycls allows one to open a trajectory file, perform a clustering based on the selected structural descriptor, and analyze and save the results with only a few lines of code.\nRelated publication A short paper presenting the code, written in collaboration with Daniele Coslovich, was published in The Journal of Open Source Software.\nShort example As a simple example, we consider the detection of the grain boundaries in a polycrystal formed by differently oriented FCC crystallites. This is easily achieved even with a simple radial descriptor, since the average radial distribution of particles at the boundaries is different than the one of the crystal in the bulk. The following short piece of code opens the input trajectory stored in the file grains.xyz, computes the local radial distribution functions of the particles, applies a standard Z-Score normalization on the data, and finally performs a clustering using the Gaussian mixture model (GMM) with $K = 2$ clusters (default):\nfrom partycls import Workflow wf = Workflow(\u0026#39;grains.xyz\u0026#39;, descriptor=\u0026#39;gr\u0026#39;, scaling=\u0026#39;zscore\u0026#39;, clustering=\u0026#39;gmm\u0026#39;) wf.run() Each of these steps is easily tunable, so as to change the workflow with little effort. The labels are available as a simple attribute of the Workflow instance. Optionally, a set of output files can be produced for further analysis, including a trajectory file with the cluster labels. Quick visualization of the clusters, as in the following figure, is possible within partycls through optional visualization backends.\n(a) A polycrystalline material with differently oriented FCC crystallites. (b) Using the individual radial distributions of the particles as structural descriptor, the algorithm identifies the crystalline domains (blue, $k = 0$) and the grain boundaries (red, $k = 1$). (c) The radial distribution functions restricted to these two clusters display a marked difference, with higher peaks for the crystals. The 3D visualization was performed with OVITO. ","date":1636329600,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1666631124,"objectID":"1971ea5c45ca61acaa3bef402829fc74","permalink":"https://jorisparet.github.io/post/2021-11-08_partycls-joss/","publishdate":"2021-11-08T00:00:00Z","relpermalink":"/post/2021-11-08_partycls-joss/","section":"post","summary":"partycls is a Python package for the analysis of systems of interacting particles using unsupervised machine learning methods. A paper on the code, written in collaboration with Daniele Coslovich, was just published in The Journal of Open Source Software.","tags":["Python","Machine Learning","Clustering","Physics","Molecular Dynamics"],"title":"“partycls: A Python package for structural clustering” - The Journal of Open Source Software","type":"post"},{"authors":["Joris Paret","Daniele Coslovich"],"categories":null,"content":" ","date":1635724800,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1659216125,"objectID":"2961351a47f8725bea25e294107c0ddc","permalink":"https://jorisparet.github.io/publication/2021_joss/","publishdate":"2017-01-08T00:00:00Z","relpermalink":"/publication/2021_joss/","section":"publication","summary":"partycls is a Python framework for cluster analysis of systems of interacting particles. By grouping particles that share similar structural or dynamical properties, partycls enables rapid and unsupervised exploration of the system’s relevant features. It provides descriptors suitable for applications in condensed matter physics and integrates the necessary tools of unsupervised learning, such as dimensionality reduction, into a streamlined workflow. Through a simple and expressive interface, partycls allows one to open a trajectory file, perform a clustering based on the selected structural descriptor, and analyze and save the results with only a few lines of code.","tags":[],"title":"partycls: A Python package for structural clustering","type":"publication"},{"authors":null,"categories":null,"content":" Homepage For more details and tutorials, visit the homepage of the project.\nQuick start This quick example shows how to use partycls to identify grain boundaries in a polycrystalline system. The system configuration is stored in a XYZ trajectory file with a single frame. We use the local distribution of bond angles around each particle as a structural descriptor and perform a clustering using the K-Means algorithm.\nfrom partycls import Trajectory, Workflow traj = Trajectory(\u0026#39;grains.xyz\u0026#39;) wf = Workflow(traj, descriptor=\u0026#39;ba\u0026#39;, clustering=\u0026#39;kmeans\u0026#39;) wf.run() traj[0].show(color=\u0026#39;label\u0026#39;, backend=\u0026#39;ovito\u0026#39;) The results are also written to a set of files including a labeled trajectory file and additional information on the clustering results. The whole workflow can be tuned and customized, check out the tutorials to see how and for further examples.\nThanks to a flexible system of filters, partycls makes it easy to restrict the analysis to a given subset of particles based on arbitrary particle properties. Say we have a binary mixture composed of particles with types A and B, and we are only interested in analyzing the bond angles of B particles in a vertical slice:\nfrom partycls import Trajectory from partycls.descriptors import BondAngleDescriptor traj = Trajectory(\u0026#39;trajectory.xyz\u0026#39;) D = BondAngleDescriptor(traj) D.add_filter(\u0026#34;species == \u0026#39;B\u0026#39;\u0026#34;) D.add_filter(\u0026#34;x \u0026gt; 0.0\u0026#34;) D.add_filter(\u0026#34;x \u0026lt; 1.0\u0026#34;) D.compute() # Angular correlations for the selected particles print(D.features) We can then perform a clustering based on these structural features and ask for 3 clusters:\nfrom partycls import KMeans clustering = KMeans(n_clusters=3) clustering.fit(D.features) print(\u0026#39;Cluster membership of the particles\u0026#39;, clustering.labels) Main features Trajectory formats partycls accepts several trajectory formats (including custom ones) either through its built-in trajectory reader or via third-party packages, such as MDTraj and atooms. The code is currently optimized for small and medium system sizes (of order 10⁴ particles). Multiple trajectory frames can be analyzed to extend the structural dataset.\nStructural descriptors partycls implements various structural descriptors:\nRadial descriptor Tetrahedral descriptor Bond-angle descriptor Smoothed bond-angle descriptor Bond-orientational descriptor Smoothed bond-orientational descriptor Locally averaged bond-orientational descriptor Radial bond-orientational descriptor Compactness descriptor Coordination descriptor Machine learning partycls performs feature scaling, dimensionality reduction and cluster analysis using the scikit-learn package and additional built-in algorithms.\nDependencies partycls relies on several external packages, most of which only provide additional features and are not necessarily required.\nRequired Fortran compiler (e.g. gfortran) NumPy scikit-learn Optional MDTraj (additional trajectory formats) atooms (additional trajectory formats) DScribe (additional descriptors) Matplotlib (visualization) OVITO \u0026lt; 3.7.0 (visualization) Py3DMol (interactive 3D visualization) pyvoro or its memory-optimized fork for large systems (Voronoi neighbors and tessellation) tqdm (progress bars) Documentation Check the tutorials to see various examples and detailed instructions on how to run the code, as well as an in-depth presentation of the built-in structural descriptors.\nFor a more detailed documentation, you can check the API.\nInstallation From PyPI The latest stable release is available on PyPI. Install it with pip:\npip install partycls From source To install the latest development version from source, clone the source code from the official GitHub repository and install it with:\ngit clone https://github.com/jorisparet/partycls.git cd partycls make install Run the tests using:\nmake test or manually compile the Fortran sources and run the tests:\ncd partycls/ f2py -c -m neighbors_wrap neighbors.f90 cd descriptor/ f2py -c -m realspace_wrap realspace.f90 cd ../../ pytest tests/ Support and contribution If you wish to contribute or report an issue, feel free to contact us or to use the issue tracker and pull requests from the code repository.\nWe largely follow the GitHub flow to integrate community contributions. In essence:\nFork the repository. Create a feature branch from master. Unleash your creativity. Run the tests. Open a pull request. We also welcome contributions from other platforms, such as GitLab instances. Just let us know where to find your feature branch.\nCiting partycls If you use partycls in a scientific publication, please consider citing the following article:\npartycls: A Python package for structural clustering. Paret et al., (2021). Journal of Open Source Software, 6(67), 3723\nBibtex entry:\n@article{Paret2021, doi = {10.21105/joss.03723}, url = {https://doi.org/10.21105/joss.03723}, year = {2021}, publisher = {The Open Journal}, volume = {6}, number = {67}, pages = {3723}, author = {Joris Paret and Daniele Coslovich}, title = {partycls: A Python package for structural …","date":1615852800,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1666631124,"objectID":"dccc009c364b183431090d2c636b79fa","permalink":"https://jorisparet.github.io/project/partycls/","publishdate":"2021-03-16T00:00:00Z","relpermalink":"/project/partycls/","section":"project","summary":"Unsupervised learning of structure in systems of interacting particles.","tags":["Python","Machine Learning","Clustering","Physics","Molecular Dynamics"],"title":"partycls","type":"project"},{"authors":["Joris Paret","Robert L. Jack","Daniele Coslovich"],"categories":null,"content":" ","date":1586390400,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1659216125,"objectID":"2bbbbda9037691408acdbe296be255fc","permalink":"https://jorisparet.github.io/publication/2020_jcp/","publishdate":"2017-01-01T00:00:00Z","relpermalink":"/publication/2020_jcp/","section":"publication","summary":"We present an information-theoretic approach inspired by distributional clustering to assess the structural heterogeneity of particulate systems. Our method identifies communities of particles that share a similar local structure by harvesting the information hidden in the spatial variation of two- or three-body static correlations. This corresponds to an unsupervised machine learning approach that infers communities solely from the particle positions and their species. We apply this method to three models of supercooled liquids and find that it detects subtle forms of local order, as demonstrated by a comparison with the statistics of Voronoi cells. Finally, we analyze the time-dependent correlation between structural communities and particle mobility and show that our method captures relevant information about glassy dynamics.","tags":[],"title":"Assessing the structural heterogeneity of supercooled liquids through community inference","type":"publication"}]