lib.rs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. pub mod cytoband;
  2. pub mod theme;
  3. pub mod report;
  4. #[cfg(test)]
  5. mod tests {
  6. use std::{fs::File, io::Write};
  7. use cytoband::{
  8. generate_chromosome_svg, read_ranges, svg_chromosome, AdditionalRect, Lollipop,
  9. RectPosition,
  10. };
  11. use report::write_report;
  12. use super::*;
  13. #[test]
  14. fn it_works() {
  15. let additional_rects = vec![
  16. AdditionalRect {
  17. start: 0,
  18. end: 250000,
  19. color: String::from("red"),
  20. position: RectPosition::Above(0),
  21. },
  22. AdditionalRect {
  23. start: 500000,
  24. end: 1500000,
  25. color: String::from("orange"),
  26. position: RectPosition::Above(1),
  27. },
  28. AdditionalRect {
  29. start: 2000000,
  30. end: 30000000,
  31. color: String::from("blue"),
  32. position: RectPosition::Below(0),
  33. },
  34. AdditionalRect {
  35. start: 1500000,
  36. end: 2500000,
  37. color: String::from("green"),
  38. position: RectPosition::Below(1),
  39. },
  40. // Add more rectangles as needed
  41. ];
  42. let lollipops = vec![
  43. Lollipop {
  44. position: 5000000,
  45. above: true,
  46. letter: 'A',
  47. color: String::from("red"),
  48. },
  49. Lollipop {
  50. position: 20000000,
  51. above: false,
  52. letter: 'B',
  53. color: String::from("blue"),
  54. },
  55. // Add more lollipops as needed
  56. ];
  57. svg_chromosome(
  58. "chr1",
  59. 1000,
  60. 50,
  61. "/data/ref/hs1/cytoBandMapped.bed",
  62. "/data/chr1.svg",
  63. &additional_rects,
  64. &lollipops,
  65. )
  66. .unwrap()
  67. }
  68. #[test]
  69. fn bend() -> anyhow::Result<()> {
  70. let svg_path = "/data/bent.svg";
  71. let ranges = read_ranges("/data/ref/hs1/cytoBandMapped.bed", "chr1")?;
  72. let svg_content =
  73. generate_chromosome_svg(ranges, 200.0, 200.0, 150.0, 0.0, 2.0 * std::f64::consts::PI);
  74. let mut output_file = File::create(svg_path)?;
  75. output_file.write_all(svg_content.as_bytes())?;
  76. println!("SVG file created: {svg_path}");
  77. Ok(())
  78. }
  79. #[test]
  80. fn pdf() {
  81. write_report("/data/test.pdf");
  82. }
  83. }