Skip to content

dhakarat/isnalyserjs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

isnalyserjs

The Interactive Isnalyser

Automated isnād tree visualisations

For scholars studying Ḥadīth texts, drawing an isnād tree with more than 40 transmitters is a tedious work and finding the right medium to desplay it fully can even prove to be impossible. The isnalyserjs is a simple program for the automation of isnād trees drawing and their interactive exploration.

How to use the isnalyserjs

You need two tables in .csv format, one with the transmitters' names, and one with the transmission paths.

See below how the tables must look like and how to upload them.

The Transmitters File

The transmitters file contains minimum two columns

  1. Transmitter [with the transmitters' full name]
  2. dAH [the transmitters' death date]

If you want more information to be displayed in your graph, you can add one or two columns: 3) Origin [with the transmitters' city/place of origin] 4) Bio [with biographical information about the transmitters either as link or as text].

Transmitters dAH Origin Bio
A 10 I
...
...
...
B E M2

The Transmission File

This table contains the transmission paths and here is how it is structured.

If, like in our example, Yaḥyá ibn Yaḥyá al-Laythī received from Mālik ibn Anas who received from Yaḥyá ibn Saʿīd al-Umawī a ḥadīth that we call 'MM', the table will look like this:

From | To | FileName

Yaḥyá ibn Saʿīd al-Umawī | Mālik ibn Anas | MM

Mālik ibn Anas | Yaḥyá ibn Yaḥyá al-Laythī | MM

Each line contains a transmission path between two transmitters only.

You can also grade the transmission with numbers from 1 to 5. These grades can reflect the transmission terminology, for instance 1 = ḥaddatha; 2 = khabara; 3 = ʿan; etc., or any forms of evaluation and analysis, for instance 1 = contains X; 2 = doesn't contain X; 3 = contains Y; etc. or 1 = ṣaḥīḥ; 2 = ḍaʿīf; etc. Theses grades will determine the form of the transmission line (edge), 1 = solid line; 2 = dotted line; 3 = dashed line; 4 = dashed-dotted line; 5 = thick solid line.

From | To | FileName | TransmissionType

Yaḥyá ibn Saʿīd al-Umawī | Mālik ibn Anas | MM | 5

Mālik ibn Anas | Yaḥyá ibn Yaḥyá al-Laythī | MM | 5

From To FileName TransmissionType
A D M1 0
... ... ... ...
B E M2 1

Feature requests are welcome and encouraged. So if your data has got features that you want to be mapped to an isnalyserjs functionality, let us know!

Step Size

The death date of the transmitters determine their position vertically in the graph. This function allows to contextualise the transmission paths in time and to highlight the flow of transmission over time with its potential gaps.

You can decide which time distance you want between each time step. The default setting is 15. It can be adjusted according to the data provided. When the data contains many transmitters, a low step size may be useful, while for files with few transmitters over a short timespan, a higher value can be more suitable. If you see that the graph is too small or too dense, do try to change the time step and render the graph again!

Render Graph

Now, that the data is loaded and the step size is set, you can press the Render Graph button, and the graph will be displayed in the canvas, ready to be explored!

Export Graph

Once you are happy with your graph, you can export it as a pdf or svg file by pressing the Export Graph button.

The motivation behind the project

The isnalyserjs aims at facilitating the analysis of large quantity of aḥādīth and more specifically their chains of transmissions or asānid by allowing scholars to visualize these chains of transmitters quickly in a complete graph that includes geo-spatial and chronological information. The isnalyserjs is an interactive approach to this problem.

Contributing

Contribution in any form or shape is highly welcome. Ways to contribute range from mailing the authors, over filing Github issues to pull requests. So, if you find any bugs, have ideas for features, or need help, let us know! We are eager to support you. :)

Below, are some tips for people looking to contribute on a code level.

Filing Github Issues

If you find any bugs or find that something is broken, don't hesitate to file a Github issue. This can be done through the Issues tab in the repository page. Make sure to formulate the problem encountered as precisely as possible. Ideally, include steps to replicate the behaviour observed.

Installation for Development

To actively participate in development and testing, you can clone this repository and host it locally. This can be done by simply running

python -m http.server

in the isnalyserjs directory.

Python Version

There is also a Python version of this project. If you are interested in this, you can install it via

pip install isnalyser

Further information on this can be found in the github repository and in the PyPI page.

About

The Interactive Isnalyser

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published